ValidateScript参数验证

时间:2017-04-25 11:36:03

标签: powershell

这一行:

[ValidateScript({if (!(Test-Path $_) -and (!($_ -like "*.exe"))) 
{ Throw "Specify correct path to executable." }
else {$true}})]
[String]$installerPath

Test-Path验证返回True / False。

但是! -like无法正常工作。使用.txt,.msi等文件类型传递参数无法正确验证。

2 个答案:

答案 0 :(得分:3)

我只是交换 if-else块并删除否定(!):

[ValidateScript(
{
    if ((Test-Path $_) -and ($_ -like "*.exe")) 
    { 
        $true

    }
    else 
    {
        Throw "Specify correct path to executable." 
    }
})

答案 1 :(得分:3)

为了更清晰的验证,我会拆分检查并提供不同的错误消息:

[ValidateScript({
    if(-Not Test-Path $_ ){ throw "$_ does not exist." }
    if(-Not ($_ -like "*.exe")){ throw "Input file must be an executable." }
    $true
})]
[String]
$installerPath

不需要“其他”,因为投掷会立即退出。