Найти тему
Black It Cat

Получаем список прав доступа к сетевой папке через PowerShell

Оглавление

Следующий скрипт дает возможность выгрузить списком все права доступа к определенной сетевой папке. Итоговый файл csv, в скрипте можно изменить разделитель для удобства.

Для сканирования по папкам верхнего уровня:

$folder = "\\ПУТЬ_к_сетевой_папке\"
$resc = gci $folder | where {$_.extension -like ""}
$out = foreach($r in $resc)
{
$s = get-acl $r.fullname
foreach($inherit in $s.Access)
{
$inherit | add-member -membertype noteproperty -name Path -value $r.fullname -passthru |
select Path, IdentityReference, filesystemrights
}
}
$out | Export-Csv -Encoding "Unicode" -Path "\\Путь\наименование_файла.csv" -Delimiter ";"

Для сканирования с учетом ВСЕХ вложенный папок:

$folder = "\\ПУТЬ_к_сетевой_папке\"
$resc = gci -recurse $folder | where {$_.extension -like ""}
$out = foreach($r in $resc)
{
$s = get-acl $r.fullname

foreach($inherit in $s.Access)
{
$inherit | add-member -membertype noteproperty -name Path -value $r.fullname -passthru |
select Path, IdentityReference, filesystemrights
}
}
$out | Export-Csv -Encoding "Unicode" -Path
"\\Путь\наименование_файла.csv" -Delimiter ";"
pause

Для ограничения глубины поиска:

$folder = "\\ПУТЬ_к_сетевой_папке\"
$level = $folder.Split(‘\’).count
$resc = gci -recurse $folder | where { $_.PSIsContainer -and ($_.fullname.Split(‘\’).count -le ($level + 2)) }
$out = foreach($r in $resc)
{
$s = get-acl $r.fullname

foreach($inherit in $s.Access)
{
$inherit | add-member -membertype noteproperty -name Path -value $r.fullname -passthru |
select Path, IdentityReference, filesystemrights
}
}
$out | Export-Csv -Encoding "Unicode" -Path "
\\Путь\наименование_файла.csv" -Delimiter ";"
pause

Где " +2 " глубина поиска

Источник: mcp.su/active-directory/folderpermissionslist/

Windows
66,2 тыс интересуются