Выполнение скриптового блока через startprocess

Кто-нибудь из вас, возможно, знает, почему это не работает?

Start-Process $PSHOME\powershell.exe -ArgumentList "-NoExit -Command & `"{$outvar1 = 4+4; `"out: $outvar1`"}`"" -Wait

Конечная цель этого состоит в том, чтобы я мог запускать блок сценария от имени другого пользователя с добавлением опции -Credential. Но я пока не могу заставить этот простой блок скрипта работать. Большое спасибо. Крис.


person chris    schedule 06.09.2011    source источник
comment
Любая причина, по которой вы не используете Invoke-Command, который может запускать блок сценария локально или удаленно с указанными учетными данными (см. пример 2 в его помощь)?   -  person Richard    schedule 06.09.2011
comment
Привет. Правда в том, что у меня возникла ошибка при выполнении сценария AutoSPInstaller в строке 2056 AutoSPInstallerFunctions.ps1. Я пытаюсь воспроизвести то, что он делает, исходная строка ; Start-Process $PSHOME\powershell.exe -Credential $FarmCredential -ArgumentList -Command Start-Process $PSHOME\powershell.exe -ArgumentList "'$ScriptFile' -Verb Runas -Wait   -  person chris    schedule 06.09.2011
comment
где файл сценария — это путь и имя файла сценария, который был сгенерирован ранее в процессе   -  person chris    schedule 06.09.2011


Ответы (1)


Вот что работает:

PS C:\> Start-Process $PSHOME\powershell.exe -ArgumentList "-NoExit","-Command  `"&{`$outvar1 = 4+4; `"write-output `$outvar1`"}`"" -Wait

-ArgumentList представляет собой массив строк, $outvar интерпретируется, поэтому я использую `$outvar

person JPBlanc    schedule 06.09.2011
comment
Отлично, а затем добавить текст, прежде чем мы просто избежим специальных символов, теперь я понимаю. ура Start-Process $PSHOME\powershell.exe -ArgumentList -NoExit,-Command "&{$outvar1 = 4+4; "write-output Привет:"$outvar1"} - Подождите - person chris; 06.09.2011
comment
К вашему сведению, я предпочитаю использовать $p = Start-Process ... -PassThru; Wait-Process $p.id -Timeout xxx. На случай, если запущенный процесс зависнет, мой скрипт не будет зависать дольше указанного времени ожидания. - person Keith Hill; 06.09.2011