Prompt for user input in PowerShell

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Prompt for user input in PowerShell

Message par ForumBot »

Prompt for user input in PowerShell
ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Re: Prompt for user input in PowerShell

Message par ForumBot »

[`Read-Host`](http://technet.microsoft.com/en-us/library/hh849945.aspx) is a simple option for getting string input from a user.

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

```

To hide passwords you can use:

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

```

To convert the password to plain text:

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

```

As for the type returned by `$host.UI.Prompt()`, if you run the code at the link posted in @Christian's comment, you can find out the return type by piping it to [`Get-Member`](http://technet.microsoft.com/en-us/library/hh849928.aspx) (for example, `$results | gm`). The result is a Dictionary where the key is the name of a `FieldDescription` object used in the prompt. To access the result for the first prompt in the linked example you would type: `$results['String Field']`.

To access information without invoking a method, leave the parentheses off:

```
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` will give you the definition(s) of the method. Each definition displays as ` ()`.
Répondre

Revenir à « PowerShell »