如何使用Powershell启动进程[System.Diagnostics.Process]::从多个参数开始



当我在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")

我该如何解决这个问题?

参数双引号的正确方法是:

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

它对我有用!

使用启动进程 https://learn.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`""

最新更新