Как сделать параметры обязательными в PowerShell? - PullRequest
33 голосов
/ 23 августа 2011

Как сделать параметры обязательными в PowerShell?

Ответы [ 2 ]

40 голосов
/ 23 августа 2011

Вы указываете его в атрибуте над каждым параметром следующим образом:

function Do-Something{
    [CmdletBinding()]
    param(
        [Parameter(Position=0,mandatory=$true)]
        [string] $aMandatoryParam,
        [Parameter(Position=1,mandatory=$true)]
        [string] $anotherMandatoryParam)

    process{
       ...
    }
}
15 голосов
/ 17 февраля 2015

Чтобы сделать параметр обязательным, добавьте «Mandatory = $ true» в описание параметра. Чтобы сделать параметр необязательным, просто не указывайте «Mandatory».

Этот код работает как для скрипта, так и для параметров функции:

[CmdletBinding()]
param(
  [Parameter(Mandatory=$true)]
  [String]$aMandatoryParameter,

  [String]$nonMandatoryParameter,

  [Parameter(Mandatory=$true)]
  [String]$anotherMandatoryParameter

)

Убедитесь, что оператор "param" является первым (за исключением комментариев и пустых строк) в скрипте или в функции.

Вы можете использовать командлет «Get-Help» для проверки правильности определения параметров:

PS C:\> get-help Script.ps1 -full
[...]
PARAMETERS
    -aMandatoryParameter <String>

        Required?                    true
        Position?                    1
        Default value
        Accept pipeline input?       false
        Accept wildcard characters?

    -NonMandatoryParameter <String>

        Required?                    false
        Position?                    2
        Default value
        Accept pipeline input?       false
        Accept wildcard characters?

    -anotherMandatoryParameter <String>

        Required?                    true
        Position?                    3
        Default value
        Accept pipeline input?       false
        Accept wildcard characters?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...