PowerShellでフォルダのACLを一括設定する

フォルダをアクセス権を設定したいセキュリティグループ名のリストをCSVで用意し、
このps1スクリプトに実行させます。

付与される権限は固定
下記の例

$aclparam = @($ADGroup, "Modify, Synchronize" ,"ContainerInherit, ObjectInherit","None","Allow")

は、
「変更」「読み取りと実行」「フォルダーの内容の一覧表示」「読み取り」「書き込み」
を対象のセキュリティグループに追加します。

CSVのフォーマット
Tfolder,Agroup
対象フォルダ1,対象セキュリティグループ1
対象フォルダ2,対象セキュリティグループ2

# ダイアログを表示
if($dialog.ShowDialog() -eq "OK"){
  # [OK]ボタンがクリックされたら、選択されたファイル名(パス)を表示
  $dialog.FileName + " が選択されました。"
}

$CsvFileName = $dialog.FileName
Write-Host $CsvFileName

#get-content samplelist.csv > unicode.csv
$arrayData = @(import-csv $CsvFileName)


$j = $arrayData.Length
Write-Host $j

for ($i=0; $i -lt $j; $i++){
 
$FolderPath = "対象フォルダの一つ上位のフォルダパス" + $arrayData[$i].TFolder
$ADGroup = $arrayData[$i].AGroup

Write-Host $FolderPath
Write-Host $ADGroup

$aclparam = @($ADGroup, "Modify, Synchronize" ,"ContainerInherit, ObjectInherit","None","Allow")

$rule = New-Object  System.Security.AccessControl.FileSystemAccessRule  $aclparam
$acl = Get-Acl  $FolderPath
$acl.AddAccessRule($rule)
Set-Acl  $FolderPath -AclObject  $acl

Write-Host $i
}