在 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