这一行:
[ValidateScript({if (!(Test-Path $_) -and (!($_ -like "*.exe")))
{ Throw "Specify correct path to executable." }
else {$true}})]
[String]$installerPath
Test-Path
验证返回True / False。
但是!
-like
无法正常工作。使用.txt,.msi等文件类型传递参数无法正确验证。
答案 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
不需要“其他”,因为投掷会立即退出。