Выполнение powershell.exe из сценария powershell (запускается в ISE, но не в сценарии) - PullRequest
2 голосов
/ 03 ноября 2010

Я новичок в этом удивительном мире Power shell. У меня проблема со скриптом, и я очень ценю вашу помощь.

У меня есть сценарий "cmd4.ps1", который должен запускать другой сценарий "Transfer.ps1", который должен получать 3 строковых параметра и запускаться как другой процесс, отличный от "cmd4.ps1".

cmd4.ps1:

$Script="-File """+$LocalDir+"\Remote\Transfer.ps1"" http://"+$ServerIP+"/Upload/"+$FileName+" "+$ServerIP+" "+$LocalIP

Start-Process 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 ]

1 голос
/ 03 ноября 2010

-ArgumentList ожидает массив строковых аргументов вместо одной строки. Попробуйте вместо этого:

$ScriptArgs = @(
    '-File'
    "$LocalDir\Remote\Transfer.ps1"
    "http://$ServerIP/Upload/$FileName $ServerIP $LocalIP"
)

Start-Process powershell.exe -ArgumentList $ScriptArgs

Обратите внимание, что вы можете упростить строковое построение аргументов, как показано выше.

0 голосов
/ 08 ноября 2010

Почему бы вам не поместить это в cmd4.ps1?

& "c:\temp re\Remote\Transfer.ps1" "http://10.1.1.1/Upload/file.txt" "10.1.1.1" "10.1.1.10"
...