因此,我正在尝试运行以下代码段:
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>]
我没主意了,有人知道吗?
答案 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-Process
或cmd.exe
。
由于似乎mbbr.exe
仍然对上述命令给出错误,请尝试引用其-key
参数,如下所示:
C:\support\mbbr.exe register "-key:ABCDE-ABCDE-ABCDE"
或这种方式:
C:\support\mbbr.exe register -key:"ABCDE-ABCDE-ABCDE"
如果这些命令不起作用,则可能是来自可执行文件的帮助消息不正确(由于我们没有您的可执行文件,因此我们无法提供帮助。)