以下に示すように、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 にあることを想定しているため、機能しません。何か案は?