Как запустить процесс с помощью Powershell [System.Diagnostics.Process] :: Начать с более одного параметра - PullRequest
0 голосов
/ 26 марта 2019

Когда я запускаю процесс в PS:

Это отлично работает.

[System.Diagnostics.Process]::Start("myprog.exe", "$param1 $param2 /run /SilentMode")

Но если в $param2 есть пробел, он будет усечен при первом слове. Myprog.exe вставит 2 строки, переданные в качестве параметра в таблицу SQL.

Так что это прекрасно работает:

$param1 = "param1string"
$param2 = "param2string"
[System.Diagnostics.Process]::Start("myprog.exe", "$param1 $param2 /run /SilentMode")

Но здесь нет. У меня на столе будет только первое слово второго параметра.

$param1 = "param1string"
$param2 = "param2 string string"
[System.Diagnostics.Process]::Start("myprog.exe", "$param1 $param2 /run /SilentMode")

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Правильный способ заключить в кавычки параметр:

$param1 = "param1string" 
$param2 = "`"param2 string string`""
[System.Diagnostics.Process]::Start("myprog.exe", "$param1 $param2 /run /SilentMode")

У меня это работает!

0 голосов
/ 26 марта 2019

Используйте start-process https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6

посмотрите примеры

Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%systemdrive%\program files`""
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%systemdrive%\program files`""
...