права доступа к списку powershell для пользователя + папки


недавно работал с powershell.
Интересно, знает ли кто-нибудь способ показать разрешенные папки пользователем.

я добираюсь до этого

Get-ADPrincipalGroupMembership имя пользователя | выберите имя

но я просто получаю группы, ничего для папки, и если пользователю назначена одна папка без группы, ее нельзя увидеть.

Я ищу возможность быстро найти все разрешения на файловом сервере для одного пользователя.

Извините за мой английский. благодарю вас.


person Javier Bewater    schedule 24.05.2017    source источник


Ответы (1)


Вам придется перебрать все папки и файлы и проверить, включает ли их разрешения имя пользователя, которое вы ищете.

Вот так:

$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