[Windows/PowerShell/ExPack] PowerShell でプロファイル中にマイドキュメント等のフォルダーを作るバッチを生成したい.
技術ノート
2016/12/15
[番号]
技術ノート KGTN 2016120602
[現象]
[Windows/PowerShell/ExPack] PowerShell でプロファイル中にマイドキュメント等のフォルダーを作るバッチを生成したい.
[説明]
ローカルアカウントで Windows PowerShell を 「管理者として実行する」 で起動し,その中で下記のコマンドを実行して下さい.
#
# プロファイルに各種フォルダーを作成するバッチを生成するスクリプト
#
# 設定情報
$FilePrefix = "Gen\MakeProfileFolder" # 生成するファイルのプリフィックス
$HomeFolder = "C:\HOME" # プロファイルのホームフォルダー
$FolderList = # 生成するフォルダーのリスト
@(
"Documents",
"Favorites",
"Downloads"
)
# ホスト情報およびユーザー情報の設定など
Try
{
. (".\Conf\confUserList.ps1")
}
Catch
{
Write-Host "インクルードファイルが見つかりません。"
Exit 1001
}
# 引数のチェック
if($Args.Length -ne 0)
{
Write-Host "Usage: genProfileFolderList.ps1"
Exit 1002
}
# 既存ファイルの削除
if ((Test-Path "$FilePrefix.bat") -eq $True)
{
Remove-Item ("$FilePrefix.bat")
}
# プロファイルのフォルダーを作成するバッチの生成
$ii = 0
ForEach($targetU In $userList)
{
++$ii
$jj = 0
ForEach($folder In $FolderList)
{
# mkdir C:\HOME\localUser001\Documents
$OutMessage = "mkdir $HomeFolder\{0}\{1}" -f $targetU[0],$folder
write-output $OutMessage | out-file -filepath ("$FilePrefix.bat") -encoding default -
append
# cacls C:\HOME\localUser001\Documents /E /P localUser001:F
$OutMessage = "cacls $HomeFolder\{0}\{1} /E /P {0}:F" -f $targetU[0],$folder
write-output $OutMessage | out-file -filepath ("$FilePrefix.bat") -encoding default -
append
# ::
$OutMessage = "::"
write-output $OutMessage | out-file -filepath ("$FilePrefix.bat") -encoding default -
append
#---
++$jj
}
}
生成されるバッチファイルの内容のサンプルは,以下の通りです.
mkdir C:\HOME\localUser001\Documents cacls C:\HOME\localUser001\Documents /E /P localUser001:F :: mkdir C:\HOME\localUser001\Favorites cacls C:\HOME\localUser001\Favorites /E /P localUser001:F :: mkdir C:\HOME\localUser001\Downloads cacls C:\HOME\localUser001\Downloads /E /P localUser001:F :: mkdir C:\HOME\localUser002\Documents cacls C:\HOME\localUser002\Documents /E /P localUser002:F :: mkdir C:\HOME\localUser002\Favorites cacls C:\HOME\localUser002\Favorites /E /P localUser002:F :: mkdir C:\HOME\localUser002\Downloads cacls C:\HOME\localUser002\Downloads /E /P localUser002:F ::