【发布时间】:2020-07-14 00:52:49
【问题描述】:
我写了一个带有一些参数的 powershell 脚本,但我不知道如何获得类似的语法
script.ps1 [A|B] C [D]
script.ps1 [A|B] C E F
script.ps1 [A|B] C G
目标:
- A 或 B 或两者都通过了
- C 始终是强制性的
- 如果没有传递其他参数,则使用第一个参数集 -> D 不是强制性的
- 如果传递了 E,则 F 是强制性的,反之亦然(第二个参数集)
- G 被传递(第三个参数集)
我的脚本是这样的
[CmdLetbinding(DefaultParameterSetName='ParamSet1')]
Param(
[Parameter(Mandatory=$true)][String]$A,
[Parameter(Mandatory=$false)][System.Net.IPAddress[]]$B,
[Parameter(Mandatory=$true)][String]$C,
[Parameter(Mandatory=$false, ParameterSetName="ParamSet1")][Int32]$D=120,
[Parameter(Mandatory=$true, ParameterSetName="ParamSet2")][String]$E,
[Parameter(Mandatory=$true, ParameterSetName="ParamSet2")][String]$F,
[Parameter(Mandatory=$true, ParameterSetName="ParamSet3")][Switch]$G
)
Result of 'Get-Help script.ps1'
所以参数 C - G 看起来不错。但是我不知道A和B的条件怎么写。
你有什么想法吗?
【问题讨论】:
标签: powershell parameters parameter-sets