#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 с примером примера.