Я написал сценарий 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
)
Результат 'Get-Help script.ps1'
Так что параметр C - G выглядит нормально. Но я не знаю, как написать условие для A и B.
Есть ли у вас какие-либо идеи?