Powershellでフォルダ権限を操作する方法
index
doc
基本
- Windowsのフォルダのアクセス権はACL(Access Control List)という
- アクセス権の取得は
Get-Aclコマンドを使用する - アクセス権の変更は
Set-Aclコマンドを使用する - ACLのアクセスルールを消すにはDirectorySecurity(FileSecurity)クラスのRemoveAccessRuleメソッドを使用する
フォルダのアクセス権を操作する
アクセス権の確認
Get-Acl \\mvdfshq1\Shared\MVD-Project\AIDC\YaYoi | Format-Table -Wrap
* Get-Aclでフォルダを指定してあげると割り当てられている権限がすべて出てくる
* ...で省略されないようにFormat-Table -Wrapコマンドを追加
アクセス権の削除
(Get-Acl "C:\Path\To\Your\Folder").Access
# Pathの設定
$path = '\\mvdfshq1\Shared\MVD-Project\平田機工\平田機工様_セーフティユニット開発'
$path = '\\mvdfshq1\Shared\MVD-Project\平田機工'
$path = '\\mvdfshq1\Shared'
# 1. 現在のアクセス制御リスト (ACL) を取得
$acl = Get-Acl $path
$acl.Access
# 2. 継承を無効にする
$acl.SetAccessRuleProtection($true, $false)
$acl.SetAccessRuleProtection($false, $true)
$acl.SetAccessRuleProtection($true, $true)
# 2. 特定のSIDを持つACEを検索
$targetSID = 'S-1-5-21-3203922931-1826102660-3435358224-2148'
$acesToRemove = $acl.Access | Where-Object { $_.IdentityReference -eq $targetSID }
# 3. 不要なACEを削除
foreach ($ace in $acesToRemove) {
$acl.RemoveAccessRule($ace)
}
# 4. 変更を適用
Set-Acl $path $acl