在PowerShell上使用netsh失败,返回错误:参数不正确



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

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

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

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

如果有人能帮助我理解它为什么不起作用,或者它在PowerShell上是否缺少一些功能。

我终于了解了问题所在:尽管在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解析模式。

添加到rae1的答案中。如果您正在使用InvokeExpression,这也会有所帮助

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

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

此方法的缺点是,必须使用反勾来转义字符串中的冒号

相关内容

  • 没有找到相关文章

最新更新