【发布时间】:2020-12-03 19:54:47
【问题描述】:
如何在 Powershell 中使用布尔值控制 while 循环?
param
(
[Parameter(Mandatory = $true, HelpMessage = "Name. -1 for all names.")]
[string]$name
)
try
{
$selected = $false
while($selected -eq $false)
{
if($name -eq "-1")
{
write-host "Displaying all names"
Get-Name | select name
}
else
{
# do some code here
$selected = $true
}
}
}
catch
{
'Name {0} was not found. Provide a valid name.' -f $name
exit(0)
}
预期行为:
- 提示用户输入姓名
- 如果用户不知道名字,他们可以输入 -1
- 当键入 -1 时,会向用户显示所有名称
- 代码不会在循环中退出
【问题讨论】:
-
什么是
Get-Name? -
我假设
get-name | select-name只是被省略的伪代码。提要,当我运行你的代码时,我做了两个修改:注释掉“get-name|select-name”并在它下面添加“pause”。当我这样做时,我得到Displaying All Names,然后是hit enter to continue(这是我添加的暂停)。这会重复恶心,直到我手动停止代码。因此,在您当前的代码中,您似乎已经实现了既定目标。你能更好地解释一下你的代码目前不允许你做什么吗?
标签: powershell while-loop boolean