В PSH V2 вы можете сделать это с помощью атрибутов параметров, поместив два параметра в разные наборы параметров.
Набор параметров - это группа параметров, которые объединяются, команда может иметь несколько наборов параметров, и доступен только один. Параметры, не назначенные группе параметров, доступны для всех параметров. Это можно увидеть в стандартных командлетах (без общих параметров):
PS> gcm -syn get-content
Get-Content [-Path] …
Get-Content [-LiteralPath] …
Чтобы добиться этого в скрипте или функции:
- Добавьте
[CmdletBinding]
в качестве первого комментария. (Здесь можно указать набор параметров по умолчанию.)
- В блоке
param
декорировать параметры с атрибутом Parameter
, чтобы указать обязательный параметр и набор параметров.
Таким образом:
[CmdletBinding]
param (
[parameter(mandatory=$true,ParameterSetName='lines')
[int]$Lines,
[parameter(mandatory=$true,ParameterSetName='chars')
[int]$|Chars
)
Для доступа к используемому набору параметров $PSCmdlet
, который дает доступ к той же информации, доступной в командлетах, написанных на C # или VB.