Как потребовать ввод аргументов только для первых 3 параметров и сделать последний параметр по умолчанию? - PullRequest
0 голосов
/ 10 мая 2019

В моем скрипте есть механизм переключения и, как видно,

Add, RemoveRole и RemoveMmember

Я хотел бы, чтобы они требовали ввода $ROLE и $MEMBER, что я знаю, как делать с условным оператором if, и выходил бы, если ничего не введено. однако это будет означать, что View, который не требуется вводить, обходит это требование ввода.

[CmdletBinding()]
Param(
    [Parameter(ParameterSetName='Add', Mandatory=$true)]
    [Switch]$Add,

    [Parameter(ParameterSetName='RemoveRole', Mandatory=$true)]
    [Switch]$RemoveRole,

    [Parameter(ParameterSetName='RemoveMember', Mandatory=$true)]
    [Switch]$RemoveMember,

    [Parameter(ParameterSetName='View', Mandatory=$true)]
    [Switch]$View,

    [Parameter(ParameterSetName='Add', Mandatory=$true)]
    [Parameter(ParameterSetName='RemoveRole', Mandatory=$true)]
    [Parameter(ParameterSetName='RemoveMember', Mandatory=$true)]
    [Parameter(ParameterSetName='View', Mandatory=$false)]

    $ROLE = (Read-Host -prompt "Role"),
    $MEMBER = (Read-Host -prompt "Member")
)

Как я могу сделать так, чтобы вход был необходим для первых 3 вариантов, а для просмотра - нет? Кроме того, как я могу сделать Просмотр выбора параметров по умолчанию, если ни один из вариантов не введен пользователем?

1 Ответ

1 голос
/ 10 мая 2019

Настройка параметра по умолчанию с указанием:

[CmdletBinding(DefaultParameterSetName='View')]


Вы можете попробовать код ниже:

[CmdletBinding(DefaultParameterSetName='View')]
Param(
    [Parameter(ParameterSetName='Add', Mandatory=$true)]
    [Switch]$Add,

    [Parameter(ParameterSetName='RemoveRole', Mandatory=$true)]
    [Switch]$RemoveRole,

    [Parameter(ParameterSetName='RemoveMember', Mandatory=$true)]
    [Switch]$RemoveMember,

    [Parameter(ParameterSetName='View', Mandatory=$false)]
    [Switch]$View
)

if ($Add -or $RemoveRole -or $RemoveMember) {
    $ROLE = (Read-Host -prompt "Role")
    $MEMBER = (Read-Host -prompt "Member")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...