Read-Host
从控制台读取一行输入。
语法
Read-Host
[[-Prompt] <Object>]
[-MaskInput]
[<CommonParameters>]
Read-Host
[[-Prompt] <Object>]
[-AsSecureString]
[<CommonParameters>]
说明
cmdlet Read-Host
从控制台读取一行输入, (stdin) 。 可使用它来提示用户输入数据。 由于可以将输入保存为安全字符串,因此可以使用此 cmdlet 提示用户输入安全数据,例如密码。
注意
Read-Host
最多可以接受 1022 个字符作为用户的输入。
示例
示例 1:将控制台输入保存到变量
此示例显示字符串“请输入你的年龄:”作为提示。 输入值并按 Enter 键时,该值存储在 变量中 $Age
。
$Age = Read-Host "Please enter your age"
示例 2:将控制台输入另存为安全字符串
此示例显示字符串“输入密码:”作为提示。 输入值时,) 控制台上会显示星号 (*
代替输入。 按 Enter 键时,该值将存储为变量中的 $pwd_secure_string
SecureString 对象。
$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString
示例 3:将输入和 掩码为纯文本字符串
此示例显示字符串“输入密码:”作为提示。 输入值时,) 控制台上会显示星号 (*
代替输入。 按 Enter 键时,该值将存储为变量中的$pwd_string
纯文本 String 对象。
$pwd_string = Read-Host "Enter a Password" -MaskInput
示例 4:规范化输入
此示例提示用户输入用分号分隔的城市列表。 它显示用户键入的字符串值。 在此示例中,用户在一些条目之间添加了空格。 这可能会导致脚本稍后出现错误,代码需要确切的名称。
该示例演示如何将输入字符串转换为条目数组,而无需任何额外的空格。
$prompt = @(
'List the cities you want weather information for.'
'When specifying multiple cities, separate them with a semi-colon, like:'
"'New York; Osan; Koforidua'"
) -join ' '
$cities = Read-Host $prompt
"Input cities string: `n`t'$cities'"
$splitCities = $cities -split ';'
"Split cities array:"
$splitCities | ForEach-Object -Process { "`t'$_'" }
$normalizedCities = $splitCities | ForEach-Object -Process { $_.Trim() }
"Normalized split cities array:"
$normalizedCities | ForEach-Object -Process { "`t'$_'" }
Input cities string:
' New York; Osan ;Koforidua '
Split cities array:
' New York'
' Osan '
'Koforidua '
Normalized split cities array:
'New York'
'Osan'
'Koforidua'
该示例使用 -split
运算符将输入字符串转换为字符串数组。 数组中的每个字符串都包含不同城市的名称。 但是,拆分字符串包含额外的空格。 方法 Trim()
从每个字符串中删除前导空格和尾随空格。
参数
-AsSecureString
指示 cmdlet 显示星号 (*
) 代替用户键入为输入的字符。 使用此参数时,cmdlet 的 Read-Host
输出是 一个 SecureString 对象, (System.Security.SecureString) 。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaskInput
指示 cmdlet 显示星号 (*
) 代替用户键入为输入的字符。 使用此参数时,cmdlet 的 Read-Host
输出为 String 对象。
这使你可以安全地提示输入以纯文本而不是 SecureString 形式返回的密码。
此参数已添加到 PowerShell 7.1 中。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Prompt
指定提示的文本。 键入一个字符串。 如果该字符串包含空格,请将其括在引号中。 PowerShell 会将冒号 (:
) 追加到输入的文本。
Type: | Object |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
输入
None
不能通过管道将对象传递给此 cmdlet。
输出
默认情况下,此 cmdlet 返回字符串。
使用 AsSecureString 参数时,此 cmdlet 返回 SecureString。
备注
此 cmdlet 仅从主机进程的 stdin 流进行读取。 通常,stdin 流连接到主机的键盘。