Привязка командлета() Не будет выполняться в задаче Powershell конвейера Azure

#powershell #azure-devops #azure-pipelines #cmdlet #azure-pipelines-tasks

Вопрос:

У меня есть сценарий powershell, который отлично выполняется при запуске из командной строки Powershell. Однако мне нужно включить этот сценарий в задачу powershell Azure Pipeline (классическую), но он просто не запускается и постоянно выдает ошибку в методе привязки командлетов.

Сразу ниже приведен фрагмент строк кода, который терпит неудачу, а ниже-скриншот ошибки, которую я получаю.

 [CmdletBinding()]
Param(
    [Parameter(Mandatory = $false, HelpMsg = "The environment short codes array. Defaults to 'dev', 'qa', 'sit', 'uat' amp; 'pre' ")]
    [string[]] $Environments = @('dev', 'qa', 'sit', 'uat', 'pre', 'prod')
)
 

введите описание изображения здесь

Есть идеи, как я могу обойти эту проблему?

Ответ №1:

     [Parameter(Mandatory = $false, HelpMsg = "The environment short codes array. Defaults to 'dev', 'qa', 'sit', 'uat' amp; 'pre' ")]
    [string[]] $Environments = @('dev', 'qa', 'sit', 'uat', 'pre', 'prod') ) ```
 

Свойство атрибута параметра, указанное HelpMsg в объекте атрибута параметра в классе ParameterAttributeClass, отсутствует. Вы можете обновить свойство pipline вместо HelpMsg HelpMessage этого, как показано ниже, которое работало в локальной среде.

 [CmdletBinding()]
Param(
    [Parameter(
        Mandatory = $false,
    HelpMessage= "The environment short codes array. Defaults to 'dev', 'qa', 'sit', 'uat' amp; 'pre'"
)]
[string[]] $Environments = @('dev', 'qa', 'sit', 'uat', 'pre', 'prod')
)
 

С помощью объекта ParameterAttribute можно задать следующие свойства:

 HelpMessage                     Property   string HelpMessage {get;set;}
HelpMessageBaseName             Property   string HelpMessageBaseName {get;set;}
HelpMessageResourceId           Property   string HelpMessageResourceId {get;set;}
Mandatory                       Property   bool Mandatory {get;set;}
ParameterSetName                Property   string ParameterSetName {get;set;}
Position                        Property   int Position {get;set;}
ValueFromPipeline               Property   bool ValueFromPipeline {get;set;}
ValueFromPipelineByPropertyName Property   bool ValueFromPipelineByPropertyName {get;set;}
ValueFromRemainingArguments     Property   bool ValueFromRemainingArguments {get;set;}
 

Вот справочная документация Azure , в которой обсуждается каждое свойство атрибута ParameterAttribute с примером примера.