7
votes

Comment remplir l'invite dans le script PowerShell

J'utilise une commande comme ceci: xxx

La commande me demande de remplir l'invite. Mais je ne peux pas faire cela dans mon script (test.ps1 pour ex)

Ce dont j'ai besoin, c'est comme ça: xxx

ou quelque chose de similaire Je peux exécuter mon script sans remplir l'invite à chaque fois

Je suis très reconnaissant pour toute réponse


0 commentaires

5 Réponses :


20
votes

Il n'y a pas de paramètre de mot de passe, vous pouvez essayer avec une classe .NET: xxx


3 commentaires

[NOID] [System.reflection.Assemblier] :: LoadwithPartialName ("" System.w Indows.Forms ") [System.windows.Forms.Sendkeys] :: Sendwait (" 123456 ~ ")


Cela résoudrait également le problème, mais pas assez bon pour moi, car si get-pfxcertificate ne demande pas l'invite, la commande ci-dessus exposera mon mot de passe. Votre solution est vraiment bonne. Merci beaucoup


@NGUBK, vous pouvez utiliser lish-host-hôte pour inviter le mot de passe. Stackoverflow.com/a/30602978/124069



2
votes

Merci à Shay pour me pointer dans la bonne direction. Mon besoin consistait à obtenir la pinceau du fichier PFX, alors j'ai utilisé la faude non persistante. Les tests de la PS3 de 2012 échouent à moins que l'ensemble clé est pleinement qualifié. En outre, un espace vide entre l'importation et la parenthèse gauche, c'est-à-dire "" $ cert.import ^^ (sys ... "provoque une erreur. Presque piquant, prequy.

Mon mot de passe PFX est crypté dans la source. Je le déchiffrer au moment de l'exécution, donc ce n'est pas visible dans la silvèle. P>

Set-StrictMode -Version Latest
[string] $strPW  = '123456'
[string] $strPFX = 'C:\MyCert.pfx'

$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cert.Import($strPFX,$strPW,[System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]"DefaultKeySet")
$cert.Thumbprint


0 commentaires

-2
votes

Cela fonctionne également à l'aide de Native PowerShell au lieu de .NET:

$securePassword = ConvertTo-SecureString -String $strPW -Force -AsPlainText
$cert = Import-PfxCertificate -FilePath $strPFX cert:\LocalMachine\My -Password $securePassword


2 commentaires

L'OP n'utilise pas importer , ils utilisent obtenez qui n'a pas le paramètre de mot de passe par défaut.


En effet, cette réponse est déroutante. La cmdlet Native Get-PFXcertificate de PowerShell 3.0 fournit beaucoup de fonctionnalités sur le fichier .pfx, mais ne permet pas de transmettre un mot de passe en tant que séchage. Cette réponse concerne la cmdlet Import-PFXcertificate de Module PKI, qui accepte un paramètre de mot de passe, mais manque de fonctionnalité en comparaison.



6
votes

Une autre option consiste à étendre les capacités de get-pfxcertificate code>, permettant essentiellement le mot de passe à transmettre. xxx pré>

et maintenant, vous pouvez l'appeler p> xxx pré>

En outre, si vous avez toujours besoin de l'invite, vous pouvez faire quelque chose comme ça. P>

$pwd = Read-Host 'Please enter your SSL Certificate password.'
Get-PfxCertificate 'C:\path\to\cert.pfx' $pwd


0 commentaires

3
votes

Il existe maintenant une commande get-pfxdata dans PowerShell qui obtient le certificat et la chaîne. La commande comprend un paramètre -password qui prend un objet de séchage de séchage afin que vous puissiez éviter d'être invité.

Le EndentityCertificats La propriété contient une gamme de certificats à la fin du certificat chaîne et contiendra le même objet de certificat créé par la commande get-pfxcertificate .

L'exemple suivant convertit une chaîne normale en un objet de séchage, chargez les certificats d'un fichier, puis Attribue le premier ou seul certificat de fin à la variable $ Signingcert: xxx

Vous pouvez maintenant appliquer $ Signingcert sans être invitée pour le mot de passe.


0 commentaires