Я довольно новичок в Powershell, но у меня большой опыт работы с VBScript и Python.Я пытаюсь быть хорошим администратором Windows и больше разбираюсь в Powershell.Итак, вот что я пытаюсь сделать: Родительская папка содержит десятки подпапок, которые называются именами пользователей AD (например, Users \ username1, Users \ username2, где Users - родительская папка).Я хочу просмотреть каждое имя папки, разобрать имя подпапки и передать его icacls для применения разрешений на основе имени пользователя.Я сделал мультилинер, потому что у меня были проблемы с трубопроводом.Это то, что у меня есть после того, как я попробовал несколько разных подходов:
$root_folder = "c:\temp\test"
$cmd1 = "icacls "
$cmd2 = " /grant cm\"
$cmd3 = ":`(OI`)`(CI`)F"
$paths_collection = get-childitem $root_folder | foreach-object -process {$_.FullName}
foreach ($path in $paths_collection)
{$string = $path.split("\");$last = $string[-1];$command = $cmd1 + $path +$cmd2 +$last +$cmd3;invoke-expression $command}
Изначально все было не так грубо, но я начал разбивать его на части, когда столкнулся с проблемами.
ПРОБЛЕМА - в $ cmd3 (OI) (CI) не входит чисто в выражение invoke.Если я изменю $ cmd3 просто на «: F», это сработает, но я должен установить наследование, используя ошибочные параметры.ПОЖАЛУЙСТА ПОМОГИ.Я весь день ломал голову над этим.На самом деле не удалось найти ничего, что конкретно касалось этой проблемы (пробники, ссылки на $ command как «$ command» и т. Д.)
ОШИБКА: Термин «OI» не являетсяраспознается как имя командлета, функции, файла сценария или работоспособной программы.Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку.В строке: 1 символ: 56 + icacls C: \ temp \ test \ garthwaitm / grant domain \ user1 :( OI <<<<) (IO) F + CategoryInfo: ObjectNotFound: (OI: String)[], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException </p>