【问题标题】:VSTS Task Group Powershell ParameterVSTS 任务组 Powershell 参数
【发布时间】:2018-03-23 10:41:42
【问题描述】:

我使用带有四个参数的 Azure Powershell 任务内联脚本创建了 VSTS 任务组。我已将此任务组添加到发布定义并配置参数。当我尝试释放它失败并出现以下错误

2018-03-23T10:28:42.2811600Z ##[错误]在 C:\Users\buildguest\AppData\Local\Temp\6e927620-8956-47d6-b926-00d9177a4c26.ps1:2 字符:9 + [String] 容器服务, + ~ 参数声明是一个逗号分隔的变量名列表,带有可选的初始化表达式。

在 C:\Users\buildguest\AppData\Local\Temp\6e927620-8956-47d6-b926-00d9177a4c26.ps1:2 字符:9 + [String] 容器服务, + ~ 函数参数列表中缺少')'。

这是 Azure Powershell 脚本

 Param(  
[String] $(apiManagementRg),   
[String] $(apiManagementName),     
[String] $(swaggerUrl),     
[String] $(basePath),   
[String] $(apiId)
)

$ApiMgmtContext = New-AzureRmApiManagementContext -ResourceGroupName $(apiManagementRg) -ServiceName $(apiManagementName)
Import-AzureRmApiManagementApi -Context $ApiMgmtContext -SpecificationFormat "Swagger" -SpecificationUrl $(swaggerUrl) -Path $(basePath) -ApiId $(apiId)

发布定义截图 Release Definition

【问题讨论】:

  • 请告诉我们您如何将参数传递给内联脚本。
  • 您也可以在这里创建问题:github.com/Microsoft/vsts-tasks/issues
  • 您还应该澄清它是否适用于任务组之外
  • @MartinBrandl 我已经编辑了我的问题并附上了发布定义截图
  • @bryanmac 是的。如果在 Release 定义中添加 Azure powershell 任务并添加这些脚本并将参数替换为实际值。

标签: powershell azure-devops


【解决方案1】:

主要是PowerShell脚本语法错误造成的。

根据您的脚本,$(apiManagementRg)$(apiManagementName)$(swaggerUrl)$(basePath)$(apiId) 似乎是您的发布定义中定义的变量。

要将发布定义中的用户定义变量用于 Powershell 脚本参数,您应该在 Script Arguments 中指定用户定义变量,以将值传递给您的 PowerShell 参数。

详细步骤如下:

  • 删除您创建的任务组。
  • 使用 Azure PowerShell 任务重新创建任务组,如下所示:

    内联脚本:

    Param(  
    [String] $Rg,   
    [String] $Name,     
    [String] $Url,     
    [String] $path,   
    [String] $apiId
    )
    
    $ApiMgmtContext = New-AzureRmApiManagementContext -ResourceGroupName $Rg -ServiceName $Name
    Import-AzureRmApiManagementApi -Context $ApiMgmtContext -SpecificationFormat "Swagger" -SpecificationUrl $url -Path $path -ApiId $apiId
    

    脚本参数:

    -Rg "$(apiManagementRg)" -Name "$(apiManagementName)" -Url "$(swaggerUrl)" -path "$(basePath)" -apiId "$(apiId)"
    

【讨论】:

  • 有v2版本使用args的例子吗?
  • 我也想看看。似乎无法使其与 v2 版本一起使用。事实上,构建失败并显示:“术语 'Param' 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 2019-02-13
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多