Установите разрешения с помощью 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 который возвращает файлы в виде массивов строк.

Другие вопросы по тегам