6

我一直在尝试在 PowerShell 上运行以下命令:

    netsh http add sslcert ipport=0.0.0.0:443 certhash=<some certhash> appid={<random guid>}

问题是,它"The parameter is incorrect"每次都返回。我检查了证书哈希号和生成的 guid,它们都很好。事实上,我运行了相同的命令cmd.exe并且它运行良好,这增加了挫败感。

我想将变量作为certhashand传递appid,这就是我使用 PowerShell 的原因。

如果有人可以帮助我理解它为什么不工作,或者它是否缺少在 PowerShell 上工作的东西。

4

2 回答 2

16

我终于明白了问题所在:虽然在 PowerShell 中您可以在cmd本机执行命令,但命令的解析略有变化,在这种情况下,它扰乱了appid参数的解释(那些大括号!)。

为了解决这个问题,我只是将括号 ( {}) 和<random guid>单引号括起来,因此,

    netsh http add sslcert ipport=0.0.0.0:443 certhash=<certhash> appid='{<random guid>}'

与(注意缺少的“引号”)相反,

    netsh http add sslcert ipport=0.0.0.0:443 certhash=<certhash> appid={<random guid>}

并且该命令运行良好。

有关 PowerShell 解析的详细信息,请参阅了解 PowerShell 解析模式

于 2012-03-16T14:28:41.813 回答
0

添加到rae1的答案。如果您使用 Invoke-Expression,这也有帮助

$command = "netsh http add sslcert ipport=$hostIp`:$port certhash=$thumbprint appid='{$appId}'"
Invoke-Expression $command

请注意,双引号字符串中的单引号不会阻止变量被替换。

这种方法的缺点是你必须用反引号转义字符串内的冒号

于 2018-05-03T14:19:49.740 回答