Я пытаюсь сравнить ACL в папке с набором ссылок ACL, а затем перечислить любые исключения. «Нечеткая» часть уравнения заключается в том, что я хочу иметь возможность игнорировать любой неизвестный SID. Поэтому создание справочной папки с perms, которую я хочу протестировать, не будет работать, чтобы использовать Compare-Object между ним и моей тестовой папкой.ACL "fuzzy" сравнение
Основополагающим сценарием является то, что я очищаю старые пользовательские каталоги, где фактическая учетная запись пользователя была удалена (здесь происходит неразрешенный SID). По умолчанию папки включают perms для администратора и т. П., Которые мне не нужны. Однако есть несколько папок, где другому пользователю предоставлены явные разрешения, и я хочу их захватить. К сожалению, нет никаких ярлыков, которые я могу использовать для проверки: например. -IsInherited или тому подобное, чтобы исключить ACL, мне все равно.
Per ниже, я могу сбросить списки ACL из массива в
$acl = get-acl f:\user_folder
$access = $acl.Access | ForEach-Object { $_.identityReference.value }
$access
BUILTIN\Administrators
MYDOMAIN\JBLOGGS
S-1-5-21-4444444444-9999999-1111111111-74390
MYDOMAIN\Domain_Group ###Yes, the group has an underscore in the name
я могу создать другой массив пользователей, которые я хочу, чтобы игнорировать, включая частичную строку, чтобы соответствовать любой нерешенный SID.
$defaults = @("BUILTIN\Administrators","MYDOMAIN\DomainGroup","S-1-5-21")
Так как же я сравниваю мой $defaults
массив с $access
массива и вывода только исключения, как «MYDOMAIN \ JBLOGGS»?
Я пытаюсь использовать foreach, но я в тупике обхватил это исключение. Следующее все еще выводит SID, которого я хочу избежать. Я надеюсь также избежать слишком много вложенных «IFs».
$access | ForEach { If ($defaults -notcontains $_) { Write-Output $_ } }
MYDOMAIN\JBLOGGS
S-1-5-21-4444444444-9999999-1111111111-74390 #Do not want!
Если я поставил подстановочные $_*
в -notcontains
, я получаю все содержимое $access
снова.
Спасибо, он didn Работаю так, как есть, но вернула меня на правильный путь – Trix