フォルダのNTFS権限 高度なアクセス許可を設定するPowerShellコマンドに関する情報です。
PowerShellでNTFS権限を設定するコマンドが別にあるのですが、使いにくいので、こちらが便利です。
まずは公式の情報です。
構文です。
icacls <filename> [/grant[:r] <sid>:<perm>[...]] [/deny <sid>:<perm>[...]] [/remove[:g|:d]] <sid>[...]] [/t] [/c] [/l] [/q] [/setintegritylevel <Level>:<policy>[...]]
icacls <directory> [/substitute <sidold> <sidnew> [...]] [/restore <aclfile> [/c] [/l] [/q]]
高度な設定はこちら
かっこで囲んだ特定の権限のコンマ区切りリスト (高度なアクセス許可):
D - 削除
RC - 制御の読み取り (読み取りアクセス許可)
WDAC - DAC の書き込み (変更アクセス許可)
WO - 所有者の書き込み (所有権の取得)
S - 同期
AS - システム セキュリティへのアクセス
MA - 許可される最大数
GR - 一般読み取り
GW - 一般書き込み
GE - 一般実行
GA - 一般すべて
RD - データの読み取り/ディレクトリの一覧表示
WD - データの書き込み/ファイルの追加
AD - データの追加/サブディレクトリの追加
REA - 拡張属性の読み取り
WEA - 拡張属性の書き込み
X - 実行/走査
DC - 子の削除
RA - 属性の読み取り
WA - 属性の書き込み
「引用元」
https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/icacls
コマンド実行例で知ったのですが、ワンライナーで複数のアカウントやグループを指定できるようです。
Clayton が指摘したように、アクセス制御MはC. さらに、コマンドラインに挿入する余分な文字のほとんどは必要ないことにも注意してください。PowerShell は、コマンド ラインを解析するのに非常に優れており、「ヘルプ」はほとんどありません。これは期待どおりに動作するはずです:
icacls C:\Temp\ACL /T /C /grant Everyone:F System:F Administrators:F DOMAIN\GroupName:M
「引用元」
https://serverfault.com/questions/904743/powershell-icacls-permissions-with-domain-group
また、コマンドラインだとエラーがでないのですが、PowerShellでは、高度な設定をする場合、""ダブルクォーテーションで囲む必要があります。
そして、もうひとつ、""ダブルクォーテーションで囲むと文字列扱いされるので、変数を()で囲んで$を使用します。
icacls $Data.path /grant "$($Data.user_group):(OI)(CI)(rx)"
参考までに。