AFAICS вам нужны динамические параметры для того, что вы спрашиваете (см., Например, здесь ). Лично я бы рекомендовал использовать различные (статические) наборы параметров, хотя:
[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:\> <b>test.ps1 -?</b>
test.ps1 -View [-UserID ] []
test.ps1 -Add -UserID []
test.ps1 -Remove -UserID []