我有以下参数输入和用户可以输入的三个选项:
Param(
[Parameter(Mandatory=$true)]
[ValidateSet('View','Add','Remove')]
[String]$Command,
[Parameter(Mandatory=$false)]
[String]$UserID
)
如果$UserID
是“添加”或“删除”,我该怎么做才能输入$Command
,如果“查看”是命令则不是必须的?
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 []