当PowerShell输入验证失败或生成异常时,结束脚本



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

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] 

我的问题是,当前验证失败时,代码进入其他块并命中断裂,而不是阻止整个脚本继续运行,而是进入下一个块,一切都将继续,并且更多的错误出现了。

问题是,我如何修改代码,以便当验证无法匹配正则态度时,它将发出适当的错误消息并阻止整个脚本运行?

将脚本中的 $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

有关更多信息,请参见about_Preference_Variables帮助文件

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

最新更新