在Invoke-Comand期间奇怪的PowerShell行为

时间:2018-11-16 23:12:27

标签: powershell-v3.0

打算对我的脚本中的用户输入进行控制台验证,但是遇到了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。有什么问题吗?

1 个答案:

答案 0 :(得分:0)

现在确定为什么,但是如果将其重命名为其他名称,则函数名称“提示”中的问题都可以正常工作。