Удаление ВСЕХ разрешений для пользовательских объектов из ACL / структуры папок - PullRequest
0 голосов
/ 03 февраля 2019

Я хочу удалить ВСЕ объекты 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
}

К сожалению, до сих пор не могу заставить это работать, используя пользовательские переменные ... я что-то упустил или это не возможная функция?Спасибо ....


Отложите это в сторону на данный момент, поскольку все еще не можете заставить его работать, и другие вещи возникли, чтобы посмотреть.Вернемся к этому в какой-то момент, хотя.Любые предложения всегда приветствуются.Спасибо.

1 Ответ

0 голосов
/ 04 февраля 2019

Немного изменив то, что вы опубликовали, попробуйте это ...

$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
    }
}
...