Список пользователей с правами к папке
Добрый день, в этой статье рассмотрим PowerShell скрипт для рекурсивного осмотра групп пользователей домена с целью узнать кто имеет доступ к папке.
Например ситуация, когда права к папкам выдаются на основе групп AD и этих групп много, одна вложена в другую. Тем самым сильно усложняет поиск конкретного конечного пользователя который получили права.
Итак сам скрипт:
Function GetFolderACL($tmpPath){ $bufData = "" # $Domain = (Get-ADDomain).name.ToUpper() #Получаем имя домена #Получаем списки безопасности целевой папки $ACL = Get-Acl $tmpPath $ACL = $ACL.Access foreach ($tmpAcl in $ACL){ #Перебираем список доступа if ($tmpAcl.IdentityReference -match $Domain){ #Берем только доменные учетки if ($tmpAcl.FileSystemRights.ToString() -eq "ReadAndExecute, Synchronize") {$AccessType = "ReadAndExecute"} elseif ($tmpAcl.FileSystemRights.ToString() -eq "Modify, Synchronize") {$AccessType = "Modify"} elseif ($tmpAcl.FileSystemRights.ToString() -eq "FullControl") {$AccessType = "FullControl"} else {$AccessType = "Custom"} $tmpName = $tmpAcl.IdentityReference.Value.ToString().Replace($Domain + "\",'') $ADObject = Get-ADObject -filter{SamAccountName -eq $tmpName} #Выясняем группа или пользователь if ($ADObject.ObjectClass.ToString() -eq "user") { #Если пользователь $tmpUname = Get-ADUser -identity $tmpName | Format-Table name -HideTableHeaders | Out-String # запрос в AD для Ф.И.О. $bufData += $tmpName + ";" + $tmpUname.trim() + ";" + $AccessType + ";`n" } elseif ($ADObject.ObjectClass.ToString() -eq "group") { #Если группа - получаем список пользователей в группе $Users = Get-ADGroupMember $tmpName -Recursive foreach ($tmpUser in $Users){ $bufData += $tmpUser.SamAccountName + ";" + $tmpUser.name + ";" + $AccessType + ";`n" #Запись } } } } $bufData = $bufData.split("`n") # конвертируем в массив $buf = $bufData | sort -Unique # убираем дубли return $buf # ответ } GetFolderACL([string[]]$args) # вызываем функцию с входящ параметром
Скрипт состоит из одной функции, которой нужно указать полный URL до целевой папки. Например : \\domain\dfs-sd\folder1
В итоге мы получаем массив данных пользователей которые находятся в группах безопасности домена.
Синтаксис: Login; ФИО; Права
Рейтинг:
/5 -
голосов
Комментарии ()