1

以下に示すように、Powershell スクリプトで 2 つのパラメーター セットを処理できるようにしたいと考えています。

セット 1:

  • Param1:GroupNameパイプ経由
  • パラメータ 2:FilePath
  • 次のように呼び出されます:"GROUPNAME" | script.ps1 FilePath

セット 2:

  • パラメータ 1:GroupName
  • パラメータ 2:FilePath
  • 次のように呼び出されます:script.ps1 GroupName FilePath

どちらの場合も、両方の引数が必須です。

私は考えられるすべてを試しましたが、私が得たと思う最も近いものはこれです:

[CmdletBinding(DefaultParameterSetName="Pipe")]
param (
    [Parameter(Mandatory=$true,Position=0,ValueFromPipeline=$false,HelpMessage="AD Group Name",ParameterSetName="Param")]
    [Parameter(Mandatory=$true,ValueFromPipeline=$true,HelpMessage="AD Group Name",ParameterSetName="Pipe")]
    [ValidateNotNullOrEmpty()]
    [String]$GroupName,

    [Parameter(Mandatory=$true,Position=1,ValueFromPipeline=$false,HelpMessage="Path to CSV",ParameterSetName="Param")]
    [Parameter(Mandatory=$true,Position=0,ValueFromPipeline=$false,HelpMessage="Path to CSV",ParameterSetName="Pipe")]
    [ValidateNotNullOrEmpty()]
    [String]$FilePath
)

これは、2 番目の引数が常に位置 1 にあることを想定しているため、機能しません。何か案は?

4

1 に答える 1