Один параметр аргумента с позицией, равной 1 или без значения аргумента? - PullRequest
2 голосов
/ 27 февраля 2020

Я наткнулся на функцию с одним параметром, и есть две вещи, которые я не понимаю просто потому, что в документации их нет.

Вот функция:

function Some-Function
{
    [CmdletBinding()]
    param (
        [Parameter(Mandatory,
        Position = 1, ValueFromPipeline)]
        [string] $Input
    )
}

Вопрос 1:

Поскольку это функция с одним параметром, почему Position установлено в 1? что это обозначает? Я не вижу здесь никакого смысла, что не так со значением по умолчанию Position = 0?

Вопрос 2:

ValueFromPipeline и Mandatory аргументы не установлены никакие значения ie, = $true или = $false каково значение по умолчанию этих аргументов, если не установлено значение?

Я не могу найти нигде в документации, чтобы объяснить это, и ни один из примеров на документах не похож на этот.

1 Ответ

1 голос
/ 27 февраля 2020

Поскольку это функция с одним параметром, почему для Position задано значение 1?

В этом случае вообще нет необходимости устанавливать свойство Position.

  • Хотя это хорошее соглашение для запуска Position свойств с 0, это не является технически необходимым - все, что имеет значение, это относительно упорядочение всех параметров с Position атрибутами.

  • При отсутствии любых Position свойств, это порядок объявлений параметров (кроме [switch] параметров), что неявно определяет их позиционное упорядочение, ЗА ИСКЛЮЧЕНИЕМ, если вы используете [CmdletBinding(PositionalBinding=$false)], в этом случае имеют значение только явные Position свойства.

Примечание. Присутствие [CmdletBinding(PositionalBinding=$false)] или хотя бы в одном атрибуте [Parameter(Position=...)] неявно переключает значение по умолчанию на непозиционный : то есть все параметры, которые явно не указывают Position, становятся непозиционными , м после этого им могут быть переданы аргументы только в том случае, если им предшествует имя параметра (например, -foo bar вместо просто bar).


ValueFromPipeline и Mandatory аргументы не установлены к любому значению

В PowerShell v3 + , опуская значение свойства атрибута по умолчанию $true, в интересах краткости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...