我有以下参数输入和用户可以键入的三个选择:
Param(
[Parameter(Mandatory=$true)]
[ValidateSet('View','Add','Remove')]
[String]$Command,
[Parameter(Mandatory=$false)]
[String]$UserID
)
如果$UserID
是“添加”或“删除”,如何强制输入$Command
,而如果命令是“查看”,则不是强制输入?
答案 0 :(得分:1)
在AFAICS上,您需要针对所要查询的内容使用动态参数(例如,参见here)。就个人而言,尽管如此,我还是建议使用不同的(静态)参数集:
[CmdletBinding(DefaultParameterSetName='View')]
Param(
[Parameter(ParameterSetName='Add', Mandatory=$true)]
[Switch]$Add,
[Parameter(ParameterSetName='Remove', Mandatory=$true)]
[Switch]$Remove,
[Parameter(ParameterSetName='View', Mandatory=$true)]
[Switch]$View,
[Parameter(ParameterSetName='Add', Mandatory=$true)]
[Parameter(ParameterSetName='Remove', Mandatory=$true)]
[Parameter(ParameterSetName='View', Mandatory=$false)]
[String]$UserID
)
switch ($PSCmdlet.ParameterSetName) {
'Add' { ... }
'Remove' { ... }
'View' { ... }
}
用法:
PS C:\> test.ps1 -? test.ps1 -View [-UserID ] [] test.ps1 -Add -UserID [] test.ps1 -Remove -UserID []