やりたいこと
mkdirコマンドでフォルダを作ったりした時にアクセス権限を設定したい。
GUIでポチポチするのが面倒だからスクリプトにしてしまいたい。
やりかた
- アクセス権限を設定するための配列をつくる
- 1.で作った配列を基にFileSystemAccessRuleのオブジェクトをつくる
- 対象フォルダのACLを取得し、2.で作ったFileSystemAccessRuleをセットする
- 対象フォルダに3.のACLをセットする
hoge.ps1
mkdir fugafuga
# アクセス権限設定のための配列
# 1つ目の要素がアクセス権限を設定するユーザー/グループ名
$permission = ("IUSR", [System.Security.AccessControl.FileSystemRights]::ReadAndExecute, [System.Security.AccessControl.InheritanceFlags]::ContanerInherit, [System.Security.AccessControl.InheritanceFlags]::ObjectInherit), [System.Security.AccessControl.PropagationFlags]::None, [System.Security.AccessControl.AccessControlType]::Allow)
# FileSystemAccessRuleオブジェクトの作成
$accessRule = New-Object -TypeNames System.Security.AccessControl.FileSystemAccessRule $permission
# フォルダにアクセス権限をセットする
$targetPath = "fugafuga"
$targetACL = Get-Acl $targetPath
$targetACL.SetAccessRule($accessRule)
$targetACL | Set-Acl $targetPath
よく使いそうな[System.Security.AccessControl.FileSystemRights]
- Read:読み取り
- ReadAndExecute:読み取りと実行
- Modify:変更
- FullControl:フルコントロール