Read-Host
est une option simple pour obtenir une entrée de chaîne de caractères d'un utilisateur.
$name = Read-Host 'What is your username?'
Pour cacher 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 du lien posté dans le commentaire de @Christian, vous pouvez trouver le type de retour en le passant dans la ligne suivante Get-Member
(par exemple, $results | gm
). Le résultat est un Dictionnaire où la clé est le nom d'un FieldDescription
utilisé dans l'invite. Pour accéder au résultat de la première invite dans l'exemple lié, vous devez taper : $results['String Field']
.
Pour accéder à l'information sans invoquer une méthode, il suffit de ne pas utiliser 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 <Return Type> <Method Name>(<Parameters>)
.