A paraméter-készletek és többszörös Parameter-címkék használatával azt is megvalósíthatjuk, hogy bizonyos paraméterek bizonyos esetekben kötelezők legyenek, máskor meg opcionálisak. Az alábbi Format‑PhoneNumber függvényem a telefonszám három lehetséges részéből (országkód, területi kód, helyi szám) képez telefonszámot. Az országkód és a területi kód alaphelyzetben nem kötelező, de ha már használunk országkódot, akkor a területi kód is kötelező:
function Format-PhoneNumber {
[CmdletBinding(DefaultParameterSetName='nemkötelező')]
param
(
[Parameter(ParameterSetName='kötelező')]
$országkód,
[Parameter(Mandatory=$false,ParameterSetName='nemkötelező')]
[Parameter(Mandatory=$true,ParameterSetName='kötelező')]
$területikód,
[Parameter(Mandatory=$true)]
$helyiszám
)
$result = ""
if($országkód){$result = "(+$országkód-$területikód) "}
elseif($területikód){$result = "($területikód) "}
$result += "{0:###-####}" -f $helyiszám
$result
}
Látható, hogy a $területikód paraméternek két Parameter definíciója is van. Ez lehetséges, ha azok különböző ParameterSetName-hez tartoznak. Az alaphelyzet szerinti ParameterSetName a „nemkötelező”, ez akkor lesz érvényes, ha nem használjuk az országkód paramétert. Ilyenkor a területi kód használata opcionális.
PS C:\> Format-PhoneNumber -helyiszám 1234567
123-4567
PS C:\> Format-PhoneNumber -helyiszám 1234567 -területikód 30
(30) 123-4567
Más a helyzet azonban, ha van országkód. Ha nem adok meg területi kódot, akkor a PowerShell bekéri azt:
PS C:\> Format-PhoneNumber -helyiszám 1234567 -területikód 30 -országkód 36
(+36-30) 123-4567
PS C:\> Format-PhoneNumber -helyiszám 1234567 -országkód 36
cmdlet Format-PhoneNumber at command pipeline position 1
Supply values for the following parameters:
területikód: 30
(+36-30) 123-4567