我希望我的Powershell脚本能够处理两个参数集,如下所示。
设置1:
GroupName
via pipe FilePath
"GROUPNAME" | script.ps1 FilePath
设置2:
GroupName
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
)
这不起作用,因为它总是期望位置1的第二个参数;任何想法?
答案 0 :(得分:1)
您不需要两个参数集。 ValueFromPipeline=$true
使管道中的函数 accept 输入,但 它不是来自管道的 - 它也可以被指定为参数