我试图在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中怎么可能?
答案 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出现问题的字符($,@,(,;)。传递引号也可能是一个问题但我在这种情况下看不到任何引用