Таким образом, основываясь на предоставленном вами коде, я могу видеть четыре параметра в вашем скрипте / командлете ( Расширенные параметры работают в любом случае одинаково, для простоты я предполагаю, что это скрипт для этого ответа) .
- Имя пользователя
- 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.