Архив Ноябрь 2012

Скрипт: список папок, для которых отключено наследование разрешений.

Задал тут мне на днях начальник задачку, вполне себе типовую — предоставить финдиректору доступ ко всем папкам внутри некоей общей папки (на самом деле — дерева DFS), чтобы финдиректор мог «пойти туда, не знаю куда», и найти «то, не знаю что» (какие-то документы по какой-то старой-престарой сделке, про которую я не знаю и знать не хочу). Причем, начальник явно и недвусмысленно поставил условие — дать доступ ко всем папкам.
Если бы я работал в сферической организации в вакууме, которая придерживается «наилучших практик» в области IT, то проблемы бы не было: достаточно было бы включить финдиректора в группы, имеющие разрешения на чтение на целевые папки для каждой из ссылок DFS, и эти разрешения были бы унаследованы всеми вложенными папками. Но поскольку я работаю в реальной фирме, которая использует реальные практики, то все оказывается не так просто: где-то внутри деревьев подпапок есть папки, для которых наследование разрешений отключено , и эти папки, в полном с соответствии с реальными практиками, реально не документированы (ну, какой-то документ для начальства, конечно же, есть, но, сами понимаете…).
Поэтому для поиска таких папок был, после небольших раздумий, написан несложный скрипт на PowerShell (точнее — несколько команд для консоли, соединенных через конвейер), которым я и хочу поделиться.
Собственно, сам скрипт — вот он:
(get-item .).GetDirectories('*.*',[System.IO.SearchOption]::AllDirectories) | where-object{(Get-Acl $_.FullName).AreAccessRulesProtected}| select-object FullName
Он выводит в стандартный вывод полные имена всех папок внтури текущей папки, для которых отключено наследование разрешений.
Несколько слов по каждой команде. Читать далее

Реклама