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、それは完全に機能し、フラストレーションが増しました。

certhash変数をととして渡したいので、appidPowerShellを使用しています。

誰かがそれが機能しない理由を理解するのを手伝ってくれるか、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 に答える