5

すべてのサブフォルダーとファイルにもこれらの削除を継承することにより、特定のユーザーのフォルダーに対するすべてのアクセス許可を削除するためのスクリプトまたは単純なPowerShellコードが必要です-再帰的に...よろしくお願いします。

4

2 に答える 2

8
 $acl=get-acl c:\temp
 $accessrule = New-Object system.security.AccessControl.FileSystemAccessRule("domain\user","Read",,,"Allow")
 $acl.RemoveAccessRuleAll($accessrule)
 Set-Acl -Path "c:\temp" -AclObject $acl

これにより、c:\temp内のユーザーのすべてのセキュリティルールが再帰的に消去されます。

于 2012-11-22T19:55:19.700 に答える
1

これを行う簡単な方法は、正しいアクセス許可を持つファイルまたはフォルダーからaclをコピーし、特定のアクセスが必要なフォルダーに適用することだと思います。例:

$acl= get-acl /path/to/file_with_correct acl 
$files = get-childItem c:\temp\*.* -recurce | set-acl -aclobject $acl -whatif

-whatifパラメータを削除して、ACLを効果的に変更します

または、このtechnetの記事に従って、次のようなコードを使用してください。

$Right = [System.Security.AccessControl.FileSystemRights]::Read
$InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::None 
$PropagationFlag = [System.Security.AccessControl.PropagationFlags]::InheritOnly  
$objType = [System.Security.AccessControl.AccessControlType]::Allow 

$objUser = New-Object System.Security.Principal.NTAccount("domain\bob") 
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule `
    ($objUser, $Right, $InheritanceFlag, $PropagationFlag, $objType) 
$objACL = Get-ACL "d:\test" 
$objACL.RemoveAccessRuleAll($objACE) 
Set-ACL "d:\test" -AclObject $objACL
于 2012-11-22T13:59:27.050 に答える