基本的にはログ情報を出力するスクリプトがあります。このスクリプトには、ID、Text、Dayの3つのパラメータがあり、それらのパラメータに基づいて情報をフィルタリングできます。 、私はありませんか一つのパラメータのみ、例:2つ以上のパラメータが使用されたときのPowershell ParameterSetエラー
Get-Log
Get-Log -Text "sample"
で関数を呼び出す場合でも、私は2つの以上のパラメータを使用する場合には、正常に動作します
function Get-Log{
[CmdletBinding(DefaultParameterSetName="All")]
Param(
[Parameter(
ParameterSetName="ByID"
)]
[Int]$ID,
[Parameter(
ParameterSetName="ByText"
)]
[String]$Text,
[Parameter(
ParameterSetName="ByDay"
)]
[String]$Day
)
...
}
のような:それはこのようなものだ
Get-Log -Text "sample" -Day "29/04/2016"
それは、パラメータ・セット・エラーがこぼれ:
Get-Log : Parameter set cannot be resolved using the specified named parameters
+ get-log -Text "sample" -Day "29/04/2016"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-Change], ParameterBind
ingException
+ FullyQualifiedErrorId : AmbiguousParameterSet,Get-Change
2つ以上のパラメータが指定されている場合に、別のパラメータセットを指定する方法はありますか?それとももっと良い方法でしょうか?
として使用
? – PetSerAl
私は、Switch($ psCmdlet.ParameterSetName){"ByID" {query1} "ByText" {query2}} "のようにswitch文でクエリの可能性を管理する方が簡単だと思ったので、とにかくなら... – esserafael