次のようなスクリプトがあります。
param(
[Alias('a')]
[string]$aval,
[Alias('b')]
[switch]$bval,
[Alias('c')]
[string]$cval
)
if($aval.length -gt 1)
{
Do-Something
}
elseif($bval)
{
Do-Something-Else
}
elseif($cval.length -gt 1)
{
Do-Another-Thing
}
else
{
Do-This
}
誰かが私のスクリプトをそのように呼び出すと、パラメータ 'aval/bval/cval' の引数が不足していることを示す醜いエラーが表示されます。
PS C:\> .\MyScript.ps1 -a
C:\MyScript.ps1 : Missing an argument for parameter 'aval'. Specify a
parameter of type 'System.String' and try again.
At line:1 char:18
+ .\MyScript.ps1 -n <<<<
+ CategoryInfo : InvalidArgument: (:) [MyScript.ps1], ParameterBindingException
+ FullyQualifiedErrorId : MissingArgument,MyScript.ps1
代わりに、よりクリーンな、おそらく 1 行のエラーを表示する方法はありますか? また、elseif ステートメントのリストよりもパラメーターを処理するためのより良い方法はありますか (実際のスクリプトには ~10 個のパラメーターがあります)。
スクリプトは、パラメーターとともに引数を渡す場合もあります。
EX:
PS C:\> .\MyScript.ps1 -b ServerName
助けてくれてありがとう!