有什么理由不在powershell param()块中抛出ArgumentException?

时间:2011-03-26 18:47:31

标签: powershell

当我发现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中翻译?

1 个答案:

答案 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
)