如何在 PowerShell 中提示用户输入
-
使用
Read-Host
提示用户在 PowerShell 中输入 -
使用
Mandatory
参数提示用户在 PowerShell 中输入 -
使用
PromptForChoice
提示用户在 PowerShell 中输入 - 结论

在 PowerShell 脚本中,与用户交互以收集输入是一项常见需求。无论是用于自定义、决策还是导航,提示用户输入都是至关重要的。
本文探讨了在 PowerShell 中提示用户输入的各种方法,包括 Read-Host
方法、Mandatory
参数方法和 PromptForChoice
方法。每种方法提供了独特的功能,适用于不同场景,增强了 PowerShell 脚本的交互性和可用性。
使用 Read-Host
提示用户在 PowerShell 中输入
Read-Host
命令提示用户输入,并从控制台读取一行输入。Read-Host
仅可以接受用户输入的 1022
个字符。
-Prompt
参数用于指定提供输入信息的文本。它会在您输入的文本后附加一个冒号 :
。
示例:
Read-Host -Prompt "Enter your name"
在此示例中,当我们使用 Read-Host
时,它会向用户提示消息 "请输入您的姓名"
,然后暂停脚本执行,等待输入。当用户输入他们的姓名并按下 Enter 时,脚本将继续执行。
然而,由于我们没有在变量中捕获或存储输入,也没有基于输入执行任何后续操作,因此此示例主要演示 Read-Host
的基本功能,而没有进一步处理用户输入。
输出:
Read-Host
暂停执行并接收输入。当用户在提示中输入值时,它返回相同的值。
它不接受来自 PowerShell 管道的输入。这里有另一个示例:
$name = Read-Host "Enter your name"
Write-Output "Hello, $name!"
在此示例中,我们使用 Read-Host
提示用户输入他们的姓名。字符串 "请输入您的姓名"
作为提示消息。
用户的输入存储在 $name
变量中。然后,我们使用 Write-Output
显示个性化的问候消息,包含用户输入的值。
使用 Read-Host
命令,我们可以将输入保存为安全字符串,使其成为收集敏感信息(如密码)的宝贵工具。该命令使我们能够提示用户提供安全数据,同时确保保密性和安全性。
输出:
参数 -AsSecureString
将用户输入的字符以星号 *
的形式显示。使用此参数,Read-Host
的输出是一个 System.Security.SecureString
对象。
Read-Host "Enter password" -AsSecureString
在此示例中,我们使用带有 -AsSecureString
参数的 Read-Host
提示用户安全地输入密码。提示消息 "输入密码"
被显示给用户。
当用户输入密码时,它在屏幕上被隐藏,以确保保密性。密码随后作为安全字符串存储在 $password
变量中,准备进行进一步处理或验证。
输出:
使用 Mandatory
参数提示用户在 PowerShell 中输入
在 PowerShell 中,Mandatory
参数方法是一种强大的方法,用于提示用户输入,同时确保某些参数是脚本执行所必需的。通过将参数标记为 Mandatory
,脚本作者可以强制提供必需的输入值,从而增强脚本的可靠性和可用性。
下面是一个名为 Name
的函数示例,当运行时会询问用户输入。
示例:
function Name {
param(
[Parameter(Mandatory)]
[string]$name
)
Write-Output "Your name is $name."
}
Name
在此示例中,我们定义了一个名为 Name
的 PowerShell 函数,它有一个名为 name
的参数。通过指定 [Parameter(Mandatory)]
,我们确保用户在调用该函数时必须为 name
参数提供一个值。
该函数然后使用 Write-Output
输出包含提供的名称的消息。
输出:
使用 PromptForChoice
提示用户在 PowerShell 中输入
在 PowerShell 中,PromptForChoice
方法提供了一种结构化的方式来提示用户一系列选项,并接收他们的选择作为输入。当向用户呈现菜单或选项列表时,此方法尤其有用,允许更具交互性和用户友好的脚本执行体验。
示例:
$choicePrompt = "Choose an option:"
$choices = [System.Management.Automation.Host.ChoiceDescription[]]@(
"&Option 1",
"&Option 2",
"&Option 3"
)
$defaultChoice = 0
$result = $host.UI.PromptForChoice("Title", $choicePrompt, $choices, $defaultChoice)
Write-Output "You selected $($choices[$result].Label)"
在此示例中,我们定义了一个提示消息和一组选项,并指定默认选择索引。然后我们使用 PromptForChoice
方法显示带有提供选择的提示对话框。
用户的选择存储在 $result
变量中,我们用它来获取所选选项标签并显示给用户。
输出:
结论
在 PowerShell 中提示用户输入对于创建交互性和用户友好的脚本至关重要。通过利用 Read-Host
、Mandatory
参数和 PromptForChoice
等方法,脚本作者可以高效地收集用户输入,同时确保可靠性和安全性。
无论是收集简单文本输入,强制必要参数,还是向用户呈现结构化的选择集,这些方法都使脚本作者能够创建强大而灵活的自动化解决方案。通过理解和利用这些技术,PowerShell 脚本作者能够增强其脚本的可用性和有效性,以满足用户和管理员的多样化需求。