共用方式為


Read-Host

從主控台讀取輸入的一行。

Syntax

Read-Host
    [[-Prompt] <Object>]
    [-MaskInput]
    [<CommonParameters>]
Read-Host
    [[-Prompt] <Object>]
    [-AsSecureString]
    [<CommonParameters>]

Description

Cmdlet Read-Host 會從控制台讀取一行輸入, (stdin) 。 您可以使用它來提示使用者輸入。 因為您可以將輸入儲存為安全字串,所以您可以使用此 Cmdlet 來提示使用者輸入安全數據,例如密碼。

注意

Read-Host 限制為 1022 個字元,可接受為使用者的輸入。

範例

範例 1:將主控台輸入儲存至變數

此範例會顯示字串「請輸入您的年齡:」作為提示。 輸入值並按下 Enter 鍵時,值會儲存在變數中 $Age

$Age = Read-Host "Please enter your age"

範例 2:將主控台輸入儲存為安全字串

此範例會顯示字串 “Enter a Password:” 作為提示。 當輸入值時,星號 (*) 會出現在控制臺上取代輸入。 按下 Enter 鍵時,值會儲存為變數中的 $pwd_secure_stringSecureString 物件。

$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString

範例 3:遮罩輸入和作為純文字字串

此範例會顯示字串 “Enter a Password:” 作為提示。 當輸入值時,星號 (*) 會出現在控制臺上取代輸入。 按下 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。

輸出

String

根據預設,此 Cmdlet 會傳回字串。

SecureString

當您使用 AsSecureString 參數時,此 Cmdlet 會傳回 SecureString

備註

此 Cmdlet 只會從主機進程的 stdin 數據流讀取。 通常,stdin 數據流會連接到主機控制台的鍵盤。