【发布时间】:2011-10-01 02:47:20
【问题描述】:
我想更改 C: 驱动器的 ACL。我试图做的是删除用户可以直接在驱动器上创建文件夹的权限。我在编写脚本时在另一个文件夹上测试了它。它没有问题。完成后,我在实际驱动器上的测试环境中尝试了该脚本。我得到一个我无法弄清楚的错误。如果我手动删除权限,它可以正常工作。有人有想法吗?
$path = "C:\"
$colRights = [System.Security.AccessControl.FileSystemRights]"CreateDirectories"
$InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::None
$PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None
$objType =[System.Security.AccessControl.AccessControlType]::Allow
$objUser = New-Object System.Security.Principal.NTAccount("Authenticated Users")
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule ($objUser, $colRights, $InheritanceFlag, $PropagationFlag, $objType)
$objACL = Get-ACL $path
$objACL.RemoveAccessRule($objACE)
Set-ACL $path $objACL
错误是:
Set-Acl : The security identifier is not allowed to be the owner of this object.
At C:\Users\mhodler\Desktop\Remove Permission.ps1:57 char:8
+ Set-ACL <<<< $path $objACL
+ CategoryInfo : InvalidOperation: (C:\:String) [Set-Acl], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.SetAclCommand
【问题讨论】:
-
找到了答案。很抱歉在这里发布。我无权在接下来的 4 小时内发布我自己的问题的答案。将 $objACL = Get-ACL $path 替换为 $objACL = (get-item $path).getaccesscontrol("Access")
标签: powershell acl