![](/img/trans.png)
[英]Powershell variable replacement with Start-Process and ArgumentList
[英]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-Process
或cmd.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.