当我发现this blog post建议我执行以下操作时,我一直在寻找一种在powershell中创建所需参数的方法:
param(
[string] $ObjectName = $(Throw "Parameter -ObjectName must be set to the name of a database object")
);
消化了一段时间后,我得出的结论是,抛出ArgumentException而不是字符串可能会更好:
param(
[string] $ObjectName = $(Throw New-Object System.ArgumentException "Parameter -ObjectName must be set to the name of a database object","ObjectNamt")
);
现在从C#的角度来看,后者会更好。这种做法是否有任何理由不在powershell中翻译?
答案 0 :(得分:10)
在PowerShell 2.0中,您可以将参数标记为Mandatory,让PowerShell为您完成工作:
Param(
[Parameter(Mandatory=$true,
Position=0,
HelpMessage='ObjectName must be set to the name of a database object')]
[string]
$ObjectName
)