Powershell启动过程参数列表未正确处理冒号

时间:2019-12-10 14:45:59

标签: powershell

因此,我正在尝试运行以下代码段:

start-process -Filepath "c:\support\mbbr.exe" -ArgumentList 'register','–key:ABCDE-ABCDE-ABCDE-ABCDE' -Wait -NoNewWindow

但是,由于将其视为保留字符,它停止在冒号处处理参数。当我尝试使用`对其进行转义时,会将转义字符视为普通字符,并且不会让我转义:

Error: –key is an invalid option.

The syntax of register command is:

  register [-key:<prodkey>]

我没主意了,有人知道吗?

3 个答案:

答案 0 :(得分:0)

直接运行它似乎最简单:

c:\support\mbbr.exe register –key:ABCDE-ABCDE-ABCDE-ABCDE

等待,这可能会比较烦人:

cmd /c start /wait c:\support\mbbr.exe register –key:ABCDE-ABCDE-ABCDE-ABCDE

有很多技巧可以让Powershell等待:How to tell PowerShell to wait for each command to end before starting the next?

答案 1 :(得分:0)

运行invoke-expression,并在返回时使用“ cmd / c”捕获它:

invoke-expression "cmd /c c:\support\mbbr.exe register –key:ABCDE-ABCDE-ABCDE-ABCDE"

如果必须在远程计算机上运行它,则需要使用invoke-command:

invoke-command -computername <remote_hostname> -scriptblock {cmd /c c:\support\mbbr.exe register –key:ABCDE-ABCDE-ABCDE-ABCDE}

HTH

答案 2 :(得分:0)

正如您在评论中指出的那样,此命令应该起作用:

C:\support\mbbr.exe register -key:ABCDE-ABCDE-ABCDE-ABCDE

如果mbbr.exe的路径和/或文件名包含空格,请使用调用/调用运算符(&):

& "C:\Program Files\blah\mbbr.exe" register -key:ABCDE-ABCDE-ABCDE-ABCDE

您不需要Start-Processcmd.exe

由于似乎mbbr.exe仍然对上述命令给出错误,请尝试引用其-key参数,如下所示:

C:\support\mbbr.exe register "-key:ABCDE-ABCDE-ABCDE"

或这种方式:

C:\support\mbbr.exe register -key:"ABCDE-ABCDE-ABCDE"

如果这些命令不起作用,则可能是来自可执行文件的帮助消息不正确(由于我们没有您的可执行文件,因此我们无法提供帮助。)