Как использовать Powershell для поиска файлов, в которых нет указанного пользователя c в ACL - PullRequest
1 голос
/ 28 февраля 2020

Я новичок в Powershell ie - я пытался собрать скрипт, который будет проходить через структуру папок и возвращать путь / имя любого файла, который не содержит указанную c учетную запись пользователя. в ACL. Самое близкое, что я получил, это:

Get-ChildItem 'Z:\Inbox' -Recurse | Where-Object {(Get-Acl $_.FullName).Access | Where-Object {$_.IdentityReference.Value -notcontains 'domain\username'} } 

Хотя значение, которое я ввел для domain \ username, существует в ACL для файлов в папке «Входящие», он все равно возвращает эти файлы в результатах. , Любые идеи с благодарностью - спасибо.

1 Ответ

0 голосов
/ 28 февраля 2020

Обновите ваши команды до следующего:

Get-ChildItem 'Z:\Inbox' -Recurse |
    Where {(Get-Acl $_.fullname).Access.IdentityReference.Value -notcontains 'domain\user'}

В вашей попытке проблема заключается в цепочке команд where. Команда Get-ChildItem возвращает объекты, когда Access содержит запись, которая не включает domain\user как .IdentityReference.Value. В ней почти всегда будет запись Access, которая не содержит этого значения, поскольку почти в каждой папке содержится несколько объектов Access.

После чего вам нужно только возвращать объекты, для которых коллекция Access.IdentityReference.Value никогда не будет содержит domain\user.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...