Установите разрешения с помощью icacls с правилами из текстового файла в powershell
Я пытаюсь использовать Icacls в Powershell, чтобы установить локальные разрешения. У меня есть текстовый файл, из которого я получаю разрешения. Я делаю это так, потому что я хочу изменить права доступа ко многим папкам и не хочу каждый раз менять скрипт.
Текстовый файл выглядит так (используются немецкие имена):
/grant:r SYSTEM:(OI)(CI)(F) /grant:r Administratoren:(OI)(CI)(F) /grant:r mydomain\Domänen-Admins:(OI)(CI)(F) /inheritance:r
/grant:r mydomain\user1:(OI)(CI)(R) /grant:r myodomain\user2:(OI)(CI)(C)
/grant:r mydomain\user2:(OI)(CI)(F) /deny mydomain\user2:(DE)
Мой код выглядит так:
$AccessLine=cat .\Lines.txt
$ica=$AccessLine[0..2]
icacls.exe $path "ica" #$path is the path of folder which should be modified
Он всегда говорит, что указан неверный параметр. Я не могу написать часть /grant:r в соответствии с icacls $path, потому что мне также нужно установить / запретить разрешения. Я хотел бы установить все разрешения с помощью одной команды. Это возможно?
1 ответ
У вас есть 3 набора команд, которые нужно запустить. $ica=$AccessLine[0]
линия работает, потому что вы вызываете только одну из линий. Вы просите цикл, чтобы каждая строка могла быть обработана.
$AccessLines = cat .\Lines.txt
$AccessLines | ForEach-Object{& icacls.exe $path $_}
FWIW cat
это псевдоним для Get-Content
который возвращает файлы в виде массивов строк.