web-dev-qa-db-fra.com

Exécution de commandes openssl dans PowerShell

J'exécute la commande suivante dans PowerShell:

Invoke-Expression "openssl pkcs12 -in $certCN.pfx -nocerts -nodes -out $certCN.key -password pass:1111"

Cela fonctionne bien, mais la sortie de openssl provoque des erreurs de console moches:

openssl : MAC verified OK
At line:1 char:1
+ openssl pkcs12 -in www.mywebsite.com.pfx -nocerts -node ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (MAC verified OK:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

Quelle est la meilleure façon d'exécuter cette commande OpenSSL et que la sortie soit ignorée ou du moins pas interprétée comme une commande?

6
Dominic Brunetti

Vous n'avez pas besoin de Invoke-Expression (en fait, ce n'est pas recommandé sauf dans des cas spécifiques car il est sensible à l'injection). Exécutez simplement la commande et citez les paramètres où vous avez besoin d'une extension de chaîne variable:

openssl pkcs12 -in "$certCN.pfx" -nocerts -nodes -out "$certCN.key" -password pass:1111

Pour ignorer la sortie de la commande, une technique courante consiste à diriger vers Out-Null.

7
Bill_Stewart