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