【问题标题】:How to Start process with Powershell [System.Diagnostics.Process]::Start with more the one parameter如何使用 Powershell [System.Diagnostics.Process]::Start with more the one 参数启动进程
【发布时间】:2019-03-26 12:07:51
【问题描述】:

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

我该如何解决这个问题?

【问题讨论】:

    标签: powershell process process.start


    【解决方案1】:

    双引号的正确方法是:

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

    它对我有用!

    【讨论】:

      【解决方案2】:

      使用启动进程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`""
      

      【讨论】:

      • 是的,这就是问题所在:“指定此 cmdlet 启动进程时要使用的参数或参数值。如果参数或参数值包含空格,则需要用转义的双引号将它们括起来。”但是我在寻找双引号 $param2 的方法时遇到了问题。有人说:Powershell中的转义字符是“`”(后撇号/grave)。就我而言,如何使用它?
      猜你喜欢
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 2023-02-03
      • 2011-08-11
      相关资源
      最近更新 更多