Установить разрешение папки с помощью icacls - PullRequest
0 голосов
/ 16 мая 2018

Мне стыдно, что я должен спросить об этом, но, поскольку синтаксис icacls явно изменился в powershell, мне кажется, что я не могу собрать рабочую команду.

Чем я являюсьпытаюсь сделать:

Я хочу удалить все разрешения из определенной папки, а затем добавить «Текущий вошедший в систему пользователь» и «СИСТЕМА», чтобы иметь полный доступ.Но не администраторы или что-то еще.

Что у меня есть:

icacls $MyFolder /inheritance:r /grant: $Domain\Env:Username:(OI)(CI)F /T /grant: SYSTEM:(OI)(CI)F /T

Но каждый раз, когда я выполняю команду, я получаю ошибку

(OI) (CI) / T не был распознан как командлет или команда ...

Я прочитал некоторые трюки в Интернете, чтобы использовать различные типы кавычек или обратных кавычек для параметров, но у меня ничего не получалось.

Может кто-нибудь сказать, пожалуйста, что я здесь не так делаю?

1 Ответ

0 голосов
/ 16 мая 2018

Как вы уже намекали, проблема здесь не в том, что синтаксис icalcs изменился в PowerShell, а в том, что PowerShell может странно работать при выполнении внешней команды (исполняемой), которая принимает аргументы.

Существует несколько способов обработки аргументов, один из которых заключается в передаче их в виде массива строк:

$IcalcArgs = @(
    $MyFolder,
    '/inheritance:r',
    "/grant:$Domain\$($Env:Username):(OI)(CI)F",
    "/T",
    '/grant:SYSTEM:(OI)(CI)F',
    '/T'
)

& icalcs @IcalcArgs
...