Выполнение powershell.exe из сценария powershell (запускается в ISE, но не в сценарии)
Я новичок в этом удивительном мире Power shell. У меня проблема со сценарием, и я очень ценю вашу помощь.
У меня есть сценарий "cmd4.ps1", который должен запустить другой сценарий "Transfer.ps1", который должен получить 3 строковых параметра, и его нужно запускать как другой процесс, отличный от "cmd4.ps1".
cmd4.ps1:
$ Script = "- File" "" + $ LocalDir + "\ Remote \ Transfer.ps1" "http: //" + $ ServerIP + "/ Upload /" + $ FileName + "" + $ ServerIP + "" + $ LocalIP Запуск-процесс powershell.exe -ArgumentList $Script
После эжекции $Script
иметь значение, аналогичное
-File "c:\temp re\Remote\Transfer.ps1" http://10.1.1.1/Upload/file.txt 10.1.1.1 10.1.1.10
содержащий синтаксис для использования -File
параметр для запуска скрипта Powershell.exe и три параметра, которые необходимы для Transfer.ps1 ("http://10.1.1.1/Upload/file.txt", 10.1.1.1, 10.1.1.10
).
Когда я пишу эти инструкции в PowerShell ISE, я вижу, что все значения верны, а PowerShell.exe выполняется с правильными значениями, все работает нормально!, но если я помещу эти инструкции в сценарий "cmd4.ps1", это не будет работать, я Я имею в виду, что что-то не так с параметрами, потому что я вижу, что это запускает powershell, но это никогда не заканчивается.
2 ответа
-ArgumentList
ожидает массив строковых аргументов вместо одной строки. Попробуйте это вместо этого:
$ScriptArgs = @(
'-File'
"$LocalDir\Remote\Transfer.ps1"
"http://$ServerIP/Upload/$FileName $ServerIP $LocalIP"
)
Start-Process powershell.exe -ArgumentList $ScriptArgs
Обратите внимание, что вы можете упростить строковое построение аргументов, как показано выше.
Почему бы вам не положить это в cmd4.ps1?
& "c:\temp re\Remote\Transfer.ps1" "http://10.1.1.1/Upload/file.txt" "10.1.1.1" "10.1.1.10"