Cписок прав доступа к сетевой папке (шаре) на PowerShell

Практически в любой организации со временем образуется большое количество сетевых шар с огромным количеством подкаталогов. Зачастую права на эти шары даются и группам, и напрямую пользователям, причем если это делалось до вас, то определить текущие права доступа становится непростой задачей.
Привожу скрипт на PowerShell, который собирает информацию по всем подкаталогам и правам доступа к ним в заданной папке, а затем выгружает её в файл CSV в удобном для анализа виде —

Также не редка ситуация, когда требуется найти явно назначенные, не наследуемые права на каталоги. Для получения списка таких прав, потребуется немного изменить скрипт —

Надеюсь эти простые инструменты помогут вам в работе 🙂

Комментарии ( 12 )

  1. Сергей
    says:

    Спасибо за инфу про доступ к шаре 😀

  2. Сергей
    says:

    Спасибо за пример, однако в указанном коде выполняется отбор всех элементов файловой системы, у которых пустое расширение. Это может привести к тому, что в отчет не попадут папки с непустым расширением и файлы с пустым расширением.
    Я бы рекомендовал вторую строку записать в виде:
    $resc = gci $folder | where {$_.mode -like «d????»}
    В этом случае отбор происходит по атрибутам элемента (где так же можно указать дополнительные атрибуты)
    А в случае, если необходимо рекурсивно обойти весь каталог:
    $resc = gci $folder -recurse | where {$_.mode -like «d????»}

  3. Андрей
    says:

    Спасибо большое, что поделились таким ценным скриптом!
    Именно такая задача и появилась: собрать все ACL на сетевом диске. А с PowerShell совсем не знаком и сам бы не сваял такое)

    Не сочтите за наглость))), но было бы замечательно добавить сбор прав с подкатологов. Что-то подобное есть здесь: http://windowsnotes.ru/powershell-2/upravlenie-acl-iz-powershell/

    Ещё раз спасибо за выложенный в Интернет инструмент)))

    • Kvazar
      says:

      Добрый день. Достаточно во второй строке после gci указать -recurse

    • Kvazar
      says:

      И еще небольшое добавление — чтобы ограничить глубину сбора информации по каталогам, используйте:
      $level = $folder.Split(‘\’).count
      $resc = gci -recurse $folder | where { $_.PSIsContainer -and ($_.fullname.Split(‘\’).count -le ($level + 2)) }

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

  4. Андрей
    says:

    Спасибо большое. Проверил — работает:)

  5. Дмитрий
    says:

    Спасибо большое за скрипты.

  6. Олег
    says:

    Добрый день. Большое спасибо за столь ценный инструмент.
    Подскажите, а возможно модифицировать первый скрипт, чтобы раскрывались группы пользователей до конечных пользователей?

    • Александр
      says:

      Присоединяюсь к просьбе Олега!

    • Kvazar
      says:

      Скрипт выводит список и групп, и пользователей, которые имеют права на папку. Для получения информации о составе групп необходимо использовать как вариант такую строку:
      import-module ActiveDirectory
      Get-ADgroup -filter * | Get-ADGroupMember

  7. Александр
    says:

    Извините за ламерский вопрос, но как добавить в вывод помимо логина пользователя ещё и его ФИО?
    И так же не могу в выходном файле раскрыть группу.
    Буду весьма признателен за помощь!

  8. Tietatter
    says:

    Всё красиво работает 🙂
    Как теперь обратно применить права к папкам из файла используя эту выгрузку?

Добавить комментарий

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены знаком *

пять + 5 =

Яндекс.Метрика