Read-Host
Reads a line of input from the console.
Syntax
Read-Host
[[-Prompt] <Object>]
[-MaskInput]
[<CommonParameters>]
Read-Host
[[-Prompt] <Object>]
[-AsSecureString]
[<CommonParameters>]
Description
The Read-Host
cmdlet reads a line of input from the console (stdin). You can use it to prompt a
user for input. Because you can save the input as a secure string, you can use this cmdlet to prompt
users for secure data, such as passwords.
Note
Read-Host
has a limit of 1022 characters it can accept as input from a user.
Examples
Example 1: Save console input to a variable
This example displays the string "Please enter your age:" as a prompt. When a value is entered and
the Enter key is pressed, the value is stored in the $Age
variable.
$Age = Read-Host "Please enter your age"
Example 2: Save console input as a secure string
This example displays the string "Enter a Password:" as a prompt. As a value is being entered,
asterisks (*
) appear on the console in place of the input. When the Enter key is pressed, the
value is stored as a SecureString object in the $pwd_secure_string
variable.
$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString
Example 3: Mask input and as a plaintext string
This example displays the string "Enter a Password:" as a prompt. As a value is being entered,
asterisks (*
) appear on the console in place of the input. When the Enter key is pressed, the
value is stored as a plaintext String object in the $pwd_string
variable.
$pwd_string = Read-Host "Enter a Password" -MaskInput
Parameters
-AsSecureString
Indicates that the cmdlet displays asterisks (*
) in place of the characters that the user types as
input. When you use this parameter, the output of the Read-Host
cmdlet is a SecureString
object (System.Security.SecureString).
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaskInput
Indicates that the cmdlet displays asterisks (*
) in place of the characters that the user types as
input. When you use this parameter, the output of the Read-Host
cmdlet is a String object.
This allows you to safely prompt for a password that is returned as plaintext instead of
SecureString.
This parameter was added in PowerShell 7.1.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Prompt
Specifies the text of the prompt. Type a string. If the string includes spaces, enclose it in
quotation marks. PowerShell appends a colon (:
) to the text that you enter.
Type: | Object |
Position: | 0 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Inputs
None
You can't pipe objects to this cmdlet.
Outputs
By default, this cmdlet returns a string.
When you use AsSecureString parameter, this cmdlet returns a SecureString.
Notes
This cmdlet only reads from the stdin stream of the host process. Usually, the stdin stream is connected to the keyboard of the host console.
Related Links
Feedback
Submit and view feedback for