打算对我的脚本中的用户输入进行控制台验证,但是遇到了PS的奇怪行为,这是脚本:
function Prompt
{
param([string] $prompt, $validationScript)
$rv = $null
do
{
try
{
$input = Read-Host -Prompt $prompt
$rv = Invoke-Command $validationScript -ArgumentList $input
} catch
{
Write-Host "Invalid input, try again"
}
} while (!$rv)
$rv
}
$xxx = Prompt -Prompt "Enter integer" -validationScript {[Convert]::ToInt32($args[0], 10)}
$xxx
当您输入无效值时,它工作良好,但是当有有效整数时,它将返回值和PS挂断。如果我在ISE中将其停止,则有成千上万的“无效输入,请重试”,看起来循环永远不会结束,但是不调用Read-Host。有什么问题吗?
答案 0 :(得分:0)
现在确定为什么,但是如果将其重命名为其他名称,则函数名称“提示”中的问题都可以正常工作。