Validation Powershell输入验证失败或生成异常时结束脚本

Validation Powershell输入验证失败或生成异常时结束脚本,validation,powershell,Validation,Powershell,我的powershell脚本中有以下代码用于验证用户输入(脚本中的第一个位置参数): 我的问题是,当前当验证失败时,代码进入Else块并点击Break,而不是停止整个脚本继续运行,而是进入下一个块,所有内容继续,并出现更多错误 问题是,如何修改我的代码,以便当验证与正则表达式不匹配时,它将抛出适当的错误消息并停止整个脚本的运行?将脚本中的$ErrorActionPreference变量设置为Stop: $ErrorActionPreference = 'Stop' function valid

我的powershell脚本中有以下代码用于验证用户输入(脚本中的第一个位置参数):

我的问题是,当前当验证失败时,代码进入Else块并点击Break,而不是停止整个脚本继续运行,而是进入下一个块,所有内容继续,并出现更多错误


问题是,如何修改我的代码,以便当验证与正则表达式不匹配时,它将抛出适当的错误消息并停止整个脚本的运行?

将脚本中的
$ErrorActionPreference
变量设置为
Stop

$ErrorActionPreference = 'Stop'

function validatePath {
Param
(
    [Parameter(Mandatory=$true)]
    [ValidateScript({
        If ($_ -match "^([a-z]:\\(?:[-\\w\\.\\d])*)") {
            $True
        } Else {
            Write-Host "Please enter a valid path,$_ is not a valid path."
            Write-debug $_.Exception
            Break
        }
    })]
    [string]$filePath
)
Process
{
    Write-Host "The path is "$filePath
}
}

validatePath -filePath $args[0] 
Do-MoreStuff # this won't execute if parameter validation fails in the previous call

有关更多信息,请参见

使用“退出”停止整个脚本。将任何消息放在“退出”之前。

不起作用,在我在块内设置退出后,脚本仍在运行。
$ErrorActionPreference = 'Stop'

function validatePath {
Param
(
    [Parameter(Mandatory=$true)]
    [ValidateScript({
        If ($_ -match "^([a-z]:\\(?:[-\\w\\.\\d])*)") {
            $True
        } Else {
            Write-Host "Please enter a valid path,$_ is not a valid path."
            Write-debug $_.Exception
            Break
        }
    })]
    [string]$filePath
)
Process
{
    Write-Host "The path is "$filePath
}
}

validatePath -filePath $args[0] 
Do-MoreStuff # this won't execute if parameter validation fails in the previous call