Demander une saisie utilisateur dans PowerShell

Demander une saisie utilisateur dans PowerShell

Read-Host est une option simple pour obtenir une saisie de chaîne de la part d’un utilisateur.

$name = Read-Host 'What is your username?'

Pour masquer les mots de passe, vous pouvez utiliser :

$pass = Read-Host 'What is your password?' -AsSecureString

Pour convertir le mot de passe en texte brut :

[Runtime.InteropServices.Marshal]::PtrToStringAuto(
    [Runtime.InteropServices.Marshal]::SecureStringToBSTR($pass))

Quant au type retourné par $host.UI.Prompt(), si vous exécutez le code au lien posté dans le commentaire de @Christian, vous pouvez découvrir le type de retour en le redirigeant vers Get-Member (par exemple, $results | gm). Le résultat est un Dictionary dont la clé est le nom d’un objet FieldDescription utilisé dans l’invite. Pour accéder au résultat de la première invite dans l’exemple lié, vous taperiez : $results['String Field'].

Pour accéder aux informations sans invoquer une méthode, omettez les parenthèses :

PS> $Host.UI.Prompt

MemberType          : Method
OverloadDefinitions : {System.Collections.Generic.Dictionary[string,psobject] Pr
                    ompt(string caption, string message, System.Collections.Ob
                    jectModel.Collection[System.Management.Automation.Host.Fie
                    ldDescription] descriptions)}
TypeNameOfValue     : System.Management.Automation.PSMethod
Value               : System.Collections.Generic.Dictionary[string,psobject] Pro
                    mpt(string caption, string message, System.Collections.Obj
                    ectModel.Collection[System.Management.Automation.Host.Fiel
                    dDescription] descriptions)
Name                : Prompt
IsInstance          : True

$Host.UI.Prompt.OverloadDefinitions vous donnera la ou les définitions de la méthode. Chaque définition s’affiche sous la forme <Type de retour> <Nom de la méthode>(<Paramètres>).