У меня есть массив, содержащий папки, мне нужно запустить команду приложения для каждой из папок, поэтому я использую команду foreach.Однако в списке аргументов мне нужно указать путь к каждой папке в отдельности, так что, скажем, у меня есть 4 папки (Folder1, Folder2, Folder3, Folder4), а в блоке скрипта foreach мне нужно запустить-Process с -Argumentlist, содержащим несколько команд приложенияи имя папки.То же действие для каждой папки соответственно.
У меня проблема с запуском ArgumentList для каждой папки с разными папками из одного и того же массива.Я пытался быть ясным, но дайте мне знать, если это все еще недостаточно понятно.
То, что я пытался выяснить, это в значительной степени мои заметки:
$folders=Get-ChildItem C:\AppFolder
$argum="-appcommand /path/$folders"
foreach ($folder in $folders) {
Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList $argum
}
Я не могу написать отдельную строку для каждой папки, потому что они будут различаться на каждом компьютере, и мне нужно полностью автоматизированное решение.
Я знаю, что это сбивает с толку, поэтому я постараюсь переписать этот шаг за шагом, что яхочу добиться.Мне нужно автоматизировать это:
Для каждой папки, хранящейся в $ folder = Folder1, Folder2, Folder3, Folder4
Для Folder1: Start-Process -FilePath 'C: \ Program Files \ App1 \run.exe '-ArgumentList' -appcommand / path / Folder1 '(Примечание: -appcommand / path / является константой)
Для папки 2: Start-Process -FilePath' C: \ Program Files \ App1 \ run.exe '-ArgumentList' -appcommand / path / Folder2 '
Для папки 3: запуск-процесс -FilePath' C: \ Program Files \ App1 \ run.exe '-ArgumentList' -appcommand / path / Folder3 '
Для папки 4: Start-Process -FilePath 'C: \ Program Files \ App1 \ run.exe' -ArgumentList '-appcommand / path / Folder4'
РЕДАКТИРОВАТЬ: мне удалосьобойти это, используя новые комбинированные переменные, а затем запустить их, используя выражение-выражение.Ниже то, что я сделал в двух словах.
$items=Get-ChildItem C:\AppFolder -Directory | select -ExpandProperty Name
$argum="Start-Process -FilePath 'C:\Program Files\App1\run.exe' -ArgumentList '-appcommand ""/Path/"
foreach ($item in $items) {
$Tasks=$argum+$item+"""'"
Invoke-Expression $Tasks
}
Я знаю, что это решение для клейкой ленты, но в итоге оно работает.Спасибо добрым людям за ваш вклад!