我一直尝试通过 powershell 清理 NAS 上的权限,但遇到了一个恼人的问题。
目前我用的是
foreach ($entry in $entries) {
$acl = (Get-Item $QueryPath).GetAccessControl('Access')
foreach($acc in $acl.access )
{
$val = $acc.IdentityReference.Value
Write-Host "$val"
if($val -match $entry)
{
Write-Host " == Removing $val == " -ForegroundColor Yellow
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($val,"FullControl","Allow")
$acl.RemoveAccessRule($acc)
$acl.RemoveAccessRuleAll($acc) # might be redundant but just incase...
}
}
Set-Acl -Path $QueryPath -AclObject $acl
}
其中 $entry 是想要删除的用户/组的列表,而 $querypath 源自 Get-ChildItem。
存在一个孤立的用户名和/或组群,我无法通过此方法删除,虽然花了一些时间,但我找到了模式。旧域组/权限。
域 1\用户 1 ... 域 2\用户 2
从 Windows 资源管理器查看权限时,会列出两个用户。但执行上述操作时,脚本会注意到有两个条目,但只返回 domain2\user2 两次。
同样测试(获取 Acl -Path $PATH).Access均等地返回两个相同的条目。因此,我无法删除所有条目。
任何建议如何返回所有信息