Вам придется перебрать все папки и файлы и проверить, включает ли их разрешения имя пользователя, которое вы ищете.
Вот так:
$items = Get-Childitem C:\Temp
Это дает вам объект файлов и папок, который вы затем можете передать методу GetAccessControl. Объект выглядит следующим образом:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 24-05-2017 10:06 test
-a---- 23-05-2017 14:55 97 test.csv
Теперь вы можете использовать свой объект $items с методом GetAccessControl, например:
$items.GetAccessControl() | select -ExpandProperty Access
Опять же, это вернет объект, содержащий права доступа к файлам NTFS для каждой папки по указанному вами пути.
Что будет выглядеть так:
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : Domain\User
IsInherited : True
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : None
Попробуйте поэкспериментировать с этой информацией и посмотрите, сможете ли вы начать работу с работающим примером, чтобы сообщество могло помочь в отладке :)
Пожалуйста, держите свои ответы в исходном сообщении. Отстой, мы не можем просто комментировать... Но, тем не менее, да, то, что вы там видите, это все пользователи/группы, упомянутые в текущем файле (в процессе разработки) в списке контроля доступа NTFS. Имейте в виду, что вы можете получить доступ к отдельным строкам объектов, чтобы упростить поиск. Вот так:
$Test[0].IdentityReference Выдаст «домен/пользователь» для первой записи в массиве $Test. Таким образом, вы будете перебирать все записи, используя объект foreach или
foreach($item in $test){
#Code here
# if($item.IdentityReference -eq $UserImLookingfor){Write-host "Match! -fo green" }
$i++
}
person
Martin Sandgaard Rasmussen
schedule
24.05.2017