На ряде серверов, на которых я работаю, права доступа к общим папкам загромождены прямыми разрешениями для некоторых наших технических специалистов из-за того, что им необходимо взять на себя ответственность. Я понял, как решить проблему с владением, чтобы этого больше не происходило, но я застрял на очистке этих разрешений. к сожалению, когда я запускаю эту команду, ничего не происходит, даже ошибка. Я предполагаю, что это какая-то логическая ошибка с моей стороны, но я не могу ее обнаружить. Любая помощь будет оценена по достоинству.
# $vData - это корневой путь
Get-Item $vData | по каждому { $_ ; $_ | Get-ChildItem -directory -Force -Recurse }| foreach { $currentDir = $_; $acl = ($_ | Get-Acl).Access; $IDs = $acl | выберите ссылку на личность ; foreach ($ID в $ID) { if (($ID.ToString()).endswith('-admin')) { $acesToRemove = $acl | где { $_.IsInherited -eq $false -и $_.IdentityReference -eq $ID }; $acl.RemoveAccessRuleAll($acesToRemove); Set-Acl -AclObject $acl $currentDir.ToString(); } } }
так как это 1 вкладыш, я разделил его ниже для удобства чтения.
Get-Item $vData |`
foreach {`
$_ ; $_ | Get-ChildItem -directory -Force -Recurse `
}`
| foreach {`
$текущий_каталог = $_;`
$acl = ($_ | Get-Acl).Access; `
$IDs = $acl | выберите идентификационную ссылку ;`
foreach ($ID в $ID) { `
если (($ID.ToString()).endswith('-admin')) {`
$acesToRemove = $acl | где { $_.IsInherited -eq $false -and $_.IdentityReference -eq $ID };`
$acl.RemoveAccessRuleAll($acesToRemove); `
Set-Acl -AclObject $acl $currentDir.ToString(); `
}`
}`
}
код для удаления разрешений основан на коде, который я нашел здесь
Полностью удалить пользователя из ACL с помощью PowerShell