1

我希望我的 Powershell 脚本能够处理两个参数集,如下所示。

设置 1:

  • 参数 1: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
)

这不起作用,因为它总是期望位置 1 的第二个参数;有任何想法吗?

4

1 回答 1

1

您不需要两个参数集。ValueFromPipeline=$true使函数接受来自管道的输入,但不要求它来自管道 - 它也可以指定为参数。

于 2013-04-30T16:54:41.710 回答