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

如何在powershell中运行带参数的.exe程序?,powershell,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

我正在尝试在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>
makecert.exe-sk server-sky exchange-pe-n CN=-ir LocalMachine-is Root-ic MyCA.cer-sr LocalMachine-ss My

如何在powershell中实现这一点?

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

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

如果你在V3或更高,你应该考虑使用停止解析运算符-%.通过这种方式,您可以像在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出现问题。引号的传递也可能是一个问题,但在这种情况下我没有看到任何引号。

很抱歉,我误解了问题。现在我无法撤消它(除非您编辑答案):(谢谢Tux先生,感谢您的回复。我不确定ggui,它对我来说似乎是有效的。我投了赞成票。FWIW这是不必要的困难。以下在PowerShell中运行良好:
robocy$env:windir c:\jpeg*。jpg/R:0/S/XD*winsxs*
是的,robocy不需要它,但正如答案中所述,这是一个示例。robocy在每台服务器都比2003年更新,因此很容易测试以确认此方法是否有效。许多可执行文件不允许您直接传递这样的参数。该命令行字符串看起来可以工作。您是否收到错误消息?如果是,是否可以将其添加到您的问题中?哪里记录了
-->%
运算符?我不知道它记录在about_解析主题中。