<t>Read-Host is a simple option for getting string input from a user.<br/>
<br/>
$name = Read-Host 'What is your username?'<br/>
<br/>
```<br/>
<br/>
To hide passwords you can use:<br/>
<br/>
```<br/>
$pass = Read-Host 'What is your password?' -AsSecureString<br/>
<br/>
```<br/>
<br/>
To convert the password to plain text:<br/>
<br/>
```<br/>
[Runtime.InteropServices.Marshal]::SecureStringToBSTR($pass))<br/>
<br/>
```<br/>
<br/>
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']`.<br/>
<br/>
To access information without invoking a method, leave the parentheses off:<br/>
<br/>
```<br/>
PS> $Host.UI.Prompt<br/>
<br/>
MemberType : Method<br/>
OverloadDefinitions : {System.Collections.Generic.Dictionary[string,psobject] Pr<br/>
ompt(string caption, string message, System.Collections.Ob<br/>
jectModel.Collection[System.Management.Automation.Host.Fie<br/>
ldDescription] descriptions)}<br/>
TypeNameOfValue : System.Management.Automation.PSMethod<br/>
Value : System.Collections.Generic.Dictionary[string,psobject] Pro<br/>
mpt(string caption, string message, System.Collections.Obj<br/>
ectModel.Collection[System.Management.Automation.Host.Fiel<br/>
dDescription] descriptions)<br/>
Name : Prompt<br/>
IsInstance : True<br/>
<br/>
```<br/>
<br/>
`$Host.UI.Prompt.OverloadDefinitions` will give you the definition(s) of the method. Each definition displays as ` ()`.</t>