PowerShell参数集,如果设置了某些参数,则允许多选

PowerShell参数集,如果设置了某些参数,则允许多选,powershell,Powershell,我正在尝试在PowerShell中创建一个函数,其中有一个特定的参数开关,然后提供其他选项,但这些选项仅在该参数与主参数一起使用时可用。这将用于向广告组添加用户。我还在学习参数集是如何工作的 我希望这样的事情成为可能: OK:(其中21和22是多选开关 Set-UserAccess -user Username -Access1 -Access2 -Access21 Set-UserAccess -user Username -Access1 -Access2 -Access21 -Access

我正在尝试在PowerShell中创建一个函数,其中有一个特定的参数开关,然后提供其他选项,但这些选项仅在该参数与主参数一起使用时可用。这将用于向广告组添加用户。我还在学习参数集是如何工作的

我希望这样的事情成为可能:

OK:(其中21和22是多选开关

Set-UserAccess -user Username -Access1 -Access2 -Access21
Set-UserAccess -user Username -Access1 -Access2 -Access21 -Access22
Set-UserAccess -user Username -Access1 -Access2 -Access22
Set-UserAccess -user Username -Access2 -Access22
不正常:

Set-UserAccess -user Username -Access1 -Access21
Set-UserAccess -user Username -Access1 -Access2
Set-UserAccess -Access21
您能否建议如何创建参数集以允许此操作

基本上到目前为止,我所知道的是(这个问题改名为泛型)


请告知是否需要对此进行澄清。

您可以为每个多选开关(Access4、5和6)定义一个参数集。但是,我将使用字符串作为ValidateSet的参数:

这将使您可以选择以下参数:

只是检查一下,对于该设置,我可以选择多个选项,还是仅选择一个选项?这是这里所要求的。您必须在验证集中选择一个字符串。或者将其设置为
[string[]]$Access4
(ISE不显示第二个参数的菜单,但TAB工作)谢谢Frode,我应该考虑这个问题。谢谢马丁。看起来很有效。我在学习和研究中还没有遇到过验证过的集合。欢迎你。你可能想看看。请考虑使用绿色复选标记来接受答案。
[CmdletBinding(DefaultParameterSetName='Default')]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)][string[]]
$user,
[Parameter()][switch]$Access1,
[Parameter()][switch]$Access2,
[Parameter()][switch]$Access3,
[Parameter(ParameterSetName='Access4')][Switch]$Access4,
[Parameter(ParameterSetName='Access4')][Switch]$Access4Choice1,
[Parameter(ParameterSetName='Access4')][Switch]$Access4Choice2,
)
[CmdletBinding(DefaultParameterSetName='Default')]
Param
(
    [Parameter(Mandatory=$true,
    ValueFromPipelineByPropertyName=$true,
    Position=0)][string[]]
    $user,
    [switch]$Access1,
    [switch]$Access2,
    [switch]$Access3,
    [ValidateSet("Access4Choice1", "Access4Choice2", "Access4Choice3")]
    [string]$Access4
)