繁体   English   中英

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

[英]Powershell start-process argumentlist not treating colon correctly

所以我试图运行以下代码片段:

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>]

我没有想法,有人有任何线索吗?

直接运行似乎最简单:

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 等待: 如何告诉 PowerShell 在开始下一个命令之前等待每个命令结束?

使用 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

正如您在评论中指出的,此命令应该有效:

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"

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM