gpt4 book ai didi

PowerShell Parameter Sets 允许在特定参数集时进行多项选择

转载 作者:行者123 更新时间:2023-12-04 01:21:02 26 4
gpt4 key购买 nike

我正在尝试在 PowerShell 中创建一个函数,其中有一个特定的参数开关,然后提供其他选择,但只有当此参数与主要参数结合使用时,这些选项才可用。这将用于将用户添加到 AD 组。我仍在学习 ParameterSets 的工作原理。

我想要的是让这样的事情成为可能:

确定:(其中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

能否请您告知如何创建参数集以实现这一点。

基本上我到目前为止所拥有的是(重命名为这个问题的通用名称)

[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,
)

请告知是否需要澄清。

最佳答案

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

[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
)

这将为您提供参数选择: enter image description here

关于PowerShell Parameter Sets 允许在特定参数集时进行多项选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43511747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com