在 PowerShell 中建立輸入框
在 PowerShell 中,指令碼可以通過使用 Read-Host
命令提示使用者來檢索使用者的輸入。它的作用類似於 stdin
命令,從命令列讀取使用者提供的資訊。
由於使用者的輸入也可以儲存為安全字串,因此也可以使用此 cmdlet 提示密碼。
在常規 PowerShell 或 ISE 中,在提示符末尾顯示一個冒號,請求在更 GUI 增強的 ISE 中輸入。此外,還會顯示一個彈出視窗以及幾個按鈕。
本文將解釋使用提示符在 PowerShell 中獲取使用者輸入以及如何使用 PowerShell GUI 生成輸入框。
PowerShell 中的 Read-Host
命令簡介
Read-Host
命令是最基本的 PowerShell 本機命令,我們可以使用它來請求使用者輸入。
示例程式碼:
Read-Host
基本語法:
Read-Host [[-Prompt] <Object>] [-AsSecureString] [<CommonParameters>] ALIASES
None
Read-Host
命令有三個我們可以使用的引數。
-AsSecureString
- 這個參數列示使用者輸入的輸入被*
隱藏。使用此引數時,輸出為特定的字串物件。
- 引數值的資料型別為
Switch
。 - 引數的預設值為
NULL
。 - 不接受萬用字元。
-MaskInput
- 此引數類似於功能中的安全字串引數,不同之處在於輸出是字串,而不是安全字串。
- 引數值的資料型別為
Switch
。 - 引數的預設值為
NULL
。 - 不接受萬用字元。
-Prompt
- 此參數列示要顯示給使用者的指令碼提示文字。該引數值需要是一個字串。
在空格的情況下,它們應該用引號括起來。
- 引數的資料型別是
PSObject
。 - 引數的預設值為
NULL
。 - 不接受萬用字元。
在 PowerShell 中使用安全字串引數
執行 Read-Host
命令時,其正常行為將要求使用者在命令列上輸入。但是,使用 AsSecureString
引數是生成要求使用者輸入的簡單 GUI 的最簡單方法之一。
為此,請執行以下程式碼片段。
$UserName = Read-Host 'Enter Your User Name:' -AsSecureString
輸出:
唯一的缺點是輸入像密碼一樣被遮蔽。如果我們要求輸入使用者的密碼,這種方法是完美的。
但是,如果我們要求一些可以以純文字形式顯示的內容,比如使用者名稱或員工 ID,該怎麼辦。
如果我們想要自定義不需要 AsSecureString
引數的輸入框和欄位怎麼辦。我們將在本文的下一節中討論實現此過程的方法。
在 PowerShell 中使用 Visual Basic 庫
使用 GUI 介面請求使用者輸入的最新方法之一是使用 Add-Type
cmdlet 載入 Microsoft Visual Basic Interaction 類。
示例程式碼:
Add-Type -AssemblyName Microsoft.VisualBasic
$User = [Microsoft.VisualBasic.Interaction]::InputBox('Username:', 'User', "Enter username here")
正如我們在上面的程式碼片段中看到的,InputBox
函式接受三個引數。
- 第一個引數是文字欄位的標籤或名稱。
- 第二個引數是變數的名稱,我們將在其中儲存提供的使用者輸入的值。
- 第三個引數是文字欄位的預設值。
輸出:
一旦使用者用使用者輸入填寫文字框並按下 OK
按鈕,$User
變數將包含文字框中的值。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn