在 PowerShell 中建立輸入框

Marion Paul Kenneth Mendoza 2023年1月30日 2022年5月16日
  1. PowerShell 中的 Read-Host 命令簡介
  2. 在 PowerShell 中使用安全字串引數
  3. 在 PowerShell 中使用 Visual Basic 庫
在 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 - 這個參數列示使用者輸入的輸入被*隱藏。使用此引數時,輸出為特定的字串物件。

  1. 引數值的資料型別為 Switch
  2. 引數的預設值為 NULL
  3. 不接受萬用字元。

-MaskInput - 此引數類似於功能中的安全字串引數,不同之處在於輸出是字串,而不是安全字串。

  1. 引數值的資料型別為 Switch
  2. 引數的預設值為 NULL
  3. 不接受萬用字元。

-Prompt - 此參數列示要顯示給使用者的指令碼提示文字。該引數值需要是一個字串。

在空格的情況下,它們應該用引號括起來。

  1. 引數的資料型別是 PSObject
  2. 引數的預設值為 NULL
  3. 不接受萬用字元。

在 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 函式接受三個引數。

  1. 第一個引數是文字欄位的標籤或名稱。
  2. 第二個引數是變數的名稱,我們將在其中儲存提供的使用者輸入的值。
  3. 第三個引數是文字欄位的預設值。

輸出:

Visual Basic 類提示輸出

一旦使用者用使用者輸入填寫文字框並按下 OK 按鈕,$User 變數將包含文字框中的值。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相關文章 - PowerShell Input