我想在此脚本中调用第二个函数来抛出错误:
function Deploy
{
param(
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string]$BuildName
)
Write-Host "Build name is: $BuildName"
}
Deploy "Build123"
Deploy #Currently prompts for input
提示非常适合以交互方式使用脚本,但这也将由我们的构建服务器执行。
我最好的选择是使用if
或其他东西进行自定义验证吗?
答案 0 :(得分:47)
将参数标记为必需后,PowerShell将提示输入值。也就是说,如果删除强制属性,则可以使用throw语句设置默认值:
function Deploy
{
param(
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$BuildName=$(throw "BuildName is mandatory, please provide a value.")
)
Write-Host "Build name is: $BuildName"
}
答案 1 :(得分:19)
@Emperor XLII对这个问题有一个很好的评论,我认为对某些用例来说这是一个更好的答案:
如果您使用
powershell.exe
标记运行-NonInteractive
,则会丢失 强制参数将导致错误并导致非零退出 该过程的代码。
使用它的原因可能是:
Mandatory=$true
参数,转换所有这些参数的成本很高。