我想从目录/文件夹安全性中删除所有AD用户对象。
所以,这可能是一个愚蠢的帖子,如果是的话,我表示歉意...但是基本上我想通过目录递归并从权限中删除所有用户对象。文件夹权限应使用组来保护,但偶尔会有用户拒绝将用户直接添加到违反规则的文件夹中。我有一个简单的小脚本,该脚本非常适合特定用户,但是我无法将其设置为使用变量,例如所有域用户帐户。例如,如果我将$ user变量指定为AD搜索,则它不起作用,例如$ USER ='Get-ADuser -filter * -Server'DOMAIN -properties SamAccountName |选择SamAccountName
我很确定这不像这样设置变量字段。任何帮助或建议,不胜感激。谢谢。
$filepath = 'C:\Temp\ACLTesting'
$user = 'DOMAIN\USER'
Get-ChildItem $filePath -Recurse -Directory | ForEach-Object {
$acl = Get-Acl -Path $_.FullName
$acl.Access | Where-Object {
$_.IdentityReference.Value -eq $user
} | ForEach-Object {
$acl.RemoveAccessRule($_) | Out-Null
}
Set-Acl -Path $_.FullName -AclObject $acl
}
不幸的是,仍然不能使用用户变量来使它工作……我是否缺少某些东西,或者这不是可能的功能吗?谢谢。...
暂时将其放到一边,因为它仍然无法正常工作,其他事情也出现了。将会在某个时候重新讨论这一点。任何建议总是值得欢迎的。谢谢。
答案 0 :(得分:0)
稍微修改您发布的内容,尝试一下……
$filepath = 'C:\Temp\ACLTesting'
$DomainUsers = (Get-ADUser -Filter *).SamAccountName
ForEach ($DomainUser in $DomainUsers)
{
Get-ChildItem $filePath -Recurse -Directory |
ForEach-Object {
$acl = Get-Acl -Path $_.FullName
$acl.Access |
Where-Object {
$_.IdentityReference.Value -eq $DomainUser
} |
ForEach-Object {
$acl.RemoveAccessRule($_) | Out-Null
}
Set-Acl -Path $_.FullName -AclObject $acl
}
}