Проблема с использованием цикла for и запуска процесса для вызова сценария powershell - PullRequest
0 голосов
/ 28 сентября 2019

Может кто-нибудь, пожалуйста, помогите мне в этом.Я создал два сценария powershell, один из которых должен вызывать другой, давайте назовем его script2.ps1

script2.ps1 - принимает два аргумента имя_компьютера и тип исправления

пример:

list=get-content c:\computer.txt

foreach ($pc in $list){
    start-process powershell.exe -ArgumentList "-noexit", "-file `C:\temp\client fix\script2.ps1`", "-type install", "-computer $i"
}

Цель состоит в том, чтобы каждый компьютер в списке выполнял script2.ps1 в отдельном процессе.Сценарий работает нормально, если start-process не используется, например:

powershell.exe  -file 'C:\temp\client fix\Script2.ps1' -type install -computer $i 

1 Ответ

0 голосов
/ 28 сентября 2019

Справка Start-Process объясняет:

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

Ваш файловый параметр не имеет экранированной двойной кавычки, а обратный удар, который ничего не делает.

start-process powershell.exe -ArgumentList "-noexit", "-file `"C:\temp\client fix\script2.ps1`"", "-type install", "-computer $i"

Кроме того, вы смешиваете аргументы для powershell.exe (-noexit, -file) с дополнениями для вашего скрипта (-type, -computer).Также ваша переменная $i никогда не назначается.

В любом случае, более важно знать, что для start-process нет никаких оснований.Упростите ваш сценарий, используя оператор вызова &.

$list=get-content c:\computer.txt

foreach ($pc in $list){
    & "C:\temp\client fix\script2.ps1" -type install -computer $pc
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...