Как использовать параметры PowerShell - PullRequest
2 голосов
/ 26 февраля 2020

Наверное, самый основной вопрос c. Но я не слишком много кодирую, и я пытаюсь выполнить этот сценарий PowerShell с моими параметрами, но я даже не уверен, куда их поместить. Например, в приведенном ниже примере, если я хочу указать свое имя пользователя, куда его поместить? Должен ли я изменить параметр «$ UserName» на $ Mydesiredusername. Или я должен поместить свое имя пользователя рядом с именем переменной, например, пару значений ключа, например, «$ UserName, myusername»?

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

    [Parameter(Mandatory=$true)]
    $BaseBranch, 

    [Parameter(Mandatory=$true)]
    $Branches,

    [Parameter(Mandatory=$true)]
    $FilePath,

1 Ответ

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

Таким образом, основываясь на предоставленном вами коде, я могу видеть четыре параметра в вашем скрипте / командлете ( Расширенные параметры работают в любом случае одинаково, для простоты я предполагаю, что это скрипт для этого ответа) .

  • Имя пользователя
  • BaseBranch
  • Ветви
  • FilePath

Они вызываются так:

./Script.ps1 -UserName 'username' -BaseBranch 'branchName' -Branches 'branchNames' -FilePath '\path\to\file.ext'

Если вы хотите, чтобы для этого параметра было предоставлено значение по умолчанию, присвойте переменной параметра значение. Это значение используется только в том случае, если пользователь, вызывающий скрипт, не предоставляет значение параметра. Например:

$UserName = 'defaultUserName',

Расширенные параметры - это, в основном, обычные переменные, которые имеют специальные правила присваивания (которые можно настраивать с помощью атрибутов параметров), поскольку они предоставляются при вызове сценария или функции.

Кроме того, когда у вас есть параметр с назначенным значением по умолчанию, вам не нужно делать параметр обязательным.


Кроме того, рассмотрите возможность присвоения параметру -Branches типа [string[]], например this:

[string[]]$Branches,

Это позволит вам более удобно вызывать параметр, и вам не придется анализировать строку в вашем скрипте. Обратите внимание, что вы можете указать один или несколько элементов:

./Script.ps1 -Branches branch1, branch2, branchX
./Script.ps1 -Branches branchX

Вместо:

./Script.ps1 -Branches 'branch1,branch2,branchX'

Хотя любой из этих подходов будет работать, синтаксический анализ строк может иметь свой собственный набор проблем ( например, экранирование разделителя, если оно встречается внутри значения), и предоставление нескольких значений параметру в виде массива - это идиоматический подход c в PowerShell.

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