У меня есть несколько сотен папок, каждая из которых содержит подпапку "Документы с предложениями".
Мне нужно изменить разрешения ACL для каждого экземпляра этих папок "Документы с предложениями".
Есть ли способ автоматизировать этот процесс? Мне сказали, что vbscript не является хорошим выбором для работы с разрешениями ACL. Я представляю себе сценарий powershell или что-то подобное, что автоматически выполнит поиск по всей иерархии папок и добавит указанное разрешение ACL для каждой папки с именем "предложение", но я не знаю, возможно ли это на самом деле или есть какие-то другие способ выполнить эту задачу.
Мысли кто-нибудь?
Редактировать: окно комментария продолжает путать мою фактическую команду powershell, которая должна быть следующей:
Get-ChildItem "e:\datastore\marcstone bids\*\*\*\Bid Documents" | where {$_.Attributes -eq 'Directory'}
Проблема в том, что иногда папка «Предложения» не всегда содержит три слоя под ставками Marcstone, а иногда только два слоя, поэтому при попытке выполнить следующее:
Get-ChildItem "e:\datastore\marcstone bids\*\*\Bid Documents" | where {$_.Attributes -eq 'Directory'}
Обратите внимание, что во второй версии только две * Эта версия не может найти какие-либо папки, хотя их много. Зачем?
Редактировать снова: это становится все интереснее. Изучив результаты, возвращенные успешной командой, я обнаружил, что она возвращает только пустые папки "Документы с предложениями". Любые папки "Документы с предложениями", содержащие какие-либо файлы, не возвращаются. Зачем??
Снова отредактируйте: я изменил команду на следующую, и она вернула ВСЕ папки с "заявками".
Get-ChildItem "e:\datastore\marcstone bids\*\*\*\Bid Documents" | where {$_.Attributes -match 'Directory'}
Теперь, чтобы узнать, как использовать icacls для изменения разрешений.
Изменить еще раз: ОК, я думаю, что у меня есть правильный синтаксис для icacls с этим:
icacls *filename* /deny special-restrict1:(f)
Итак, ПОЖАЛУЙСТА, кто-нибудь, помогите мне соединить эти две команды вместе.
Экспериментируя с такой переменной:
$var = Get-ChildItem "e:\datastore\marcstone bids\1001-3500\1701-1750\1702 Morrow M
emorial Home - Sparta WI\Bid Documents" | where {$_.Attributes -match 'Directory'} | icacls $var /deny special-restrict1
:/F
Я выбрал определенную папку для экспериментов. Команда возвращает следующую ошибку:
First parameter must be a file name pattern or "/?"
Мысли кто-нибудь?