如何在powershell中运行带有参数的.exe程序?

时间:2014-09-02 17:33:05

标签: powershell

我试图在powershell中创建一个非常简单的脚本来使用makecert.exe工具创建证书(我知道powershell已经有了自己的证书创建方法,但我想使用makecert)。

我想重现这个命令:

makecert.exe -sk server -sky exchange -pe -n CN=<machineName> -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My <certificate path>

在PowerShell中怎么可能?

2 个答案:

答案 0 :(得分:4)

对于大多数可执行文件,您希望将参数作为包含开关的数组传递。这是一个例子:

$arguments = "$env:windir\", 'c:\jpegs\','*.jpg', '/R:0', '/S', '/XD', '*winsxs*'  
Robocopy.exe $arguments 

答案 1 :(得分:3)

如果您使用的是V3或更高版本,则应考虑使用Stop Parsing运算符 - %。通过这种方式,您可以像在cmd.exe中一样指定参数:

makecert.exe --% -sk server -sky exchange -pe -n CN=acme.com -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My C:\test.cer

虽然,现在我看这个,它可能会像这样工作:

makecert.exe -sk server -sky exchange -pe -n CN=acme.com -ir LocalMachine -is Root -ic MyCA.cer -sr LocalMachine -ss My C:\test.cer

我没有看到任何可能导致PowerShell出现问题的字符($,@,(,;)。传递引号也可能是一个问题但我在这种情况下看不到任何引用