我正在开发一个包含多个参数集的函数,其中一些是强制性的,一些是可选的。
这只是一个例子,但想象一下以下情况:
从 AD 组中添加或删除用户或计算机的功能(由于某种原因,您需要区分用户和计算机)。
请记住这只是一个例子。在这种情况下,添加/删除单个内容会容易得多[string]
参数与一个ValidateSet()
,但这不是重点。
所以你有 4 个参数集:
Param
(
[Parameter(ParameterSetName = 'Add', Mandatory = $true)][switch] $Add,
[Parameter(ParameterSetName = 'Remove', Mandatory = $true)][switch] $Remove,
[Parameter(ParameterSetName = 'User', Mandatory = $true)][switch] $User,
[Parameter(ParameterSetName = 'Computer', Mandatory = $true)][switch] $Computer
)
现在的问题是你只能使用四个参数之一,而不是(添加或删除)和(用户或计算机)
我知道每个参数可以使用多个参数集,但我看不到强制它具有两个始终强制的参数集的方法。实际上,您必须始终指定“添加”或“删除”以及“用户”或“计算机”。
如何才能做到这一点?
您需要为这些不同的组合定义多个参数集。
尝试这个:
Function TestParamSet {
[CmdletBinding()]
Param
(
[Parameter(ParameterSetName = 'AddUser', Mandatory = $true)]
[Parameter(ParameterSetName = 'AddComputer', Mandatory = $true)]
[switch] $Add,
[Parameter(ParameterSetName = 'RemoveUser', Mandatory = $true)]
[Parameter(ParameterSetName = 'RemoveComputer', Mandatory = $true)]
[switch] $Remove,
[Parameter(ParameterSetName = 'AddUser', Mandatory = $true)]
[Parameter(ParameterSetName = 'RemoveUser', Mandatory = $true)]
[switch] $User,
[Parameter(ParameterSetName = 'AddComputer', Mandatory = $true)]
[Parameter(ParameterSetName = 'RemoveComputer', Mandatory = $true)]
[switch] $Computer
)
Process {
#Do Nothing
}
}
并且,当您获得有关此功能的帮助时,您会看到以下内容:
PS C:\> Get-Help TestParamSet
NAME
TestParamSet
SYNTAX
TestParamSet -Add -Computer [<CommonParameters>]
TestParamSet -Add -User [<CommonParameters>]
TestParamSet -Remove -Computer [<CommonParameters>]
TestParamSet -Remove -User [<CommonParameters>]
ALIASES
None
REMARKS
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)