Read-Host
从控制台读取一行输入。
Read-Host
[[-Prompt] <Object>]
[-AsSecureString]
[<CommonParameters>]
Read-Host
cmdlet 从控制台(stdin)读取一行输入。 可以使用它提示用户输入。 由于可以将输入保存为安全字符串,因此可以使用此 cmdlet 提示用户输入安全数据,例如密码。
备注
Read-Host
限制为 8190 个字符,可以接受用户输入。
本示例显示字符串“请输入你的年龄:”作为提示。 输入值并按下 Enter 键时,该值存储在 $Age
变量中。
$Age = Read-Host "Please enter your age"
本示例以提示显示字符串“输入密码:”。 当输入值时,星号(*
)显示在主机上代替输入。 按下 Enter 键后,该值将作为 SecureString 对象存储在 $pwd_secure_string
变量中。
$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString
此示例提示用户输入以分号分隔的城市列表。 它显示用户键入的字符串值。 在此示例中,用户添加了一些条目之间的空格。 这可能会导致脚本后面出现错误,代码需要确切名称。
此示例演示如何将输入字符串转换为条目数组,而无需任何额外的空格。
$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()
方法从每个字符串中删除前导空格和尾随空格。
指示 cmdlet 显示星号(*
),以代替用户键入为输入的字符。 使用此参数时,Read-Host
cmdlet 的输出是 SecureString 对象(System.Security.SecureString)。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
指定提示的文本。 键入字符串。 如果字符串包含空格,请用引号将其括起来。 PowerShell 将冒号(:
)追加到输入的文本。
类型: | Object |
Position: | 0 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
None
不能通过管道将对象传递给此 cmdlet。
默认情况下,此 cmdlet 返回一个字符串。
使用 AsSecureString 参数时,此 cmdlet 返回 SecureString。
此 cmdlet 仅从主机进程的 stdin 流中读取。 通常,stdin 流连接到主机主机的键盘。