powershell - Azure Pipeline:Powershell 任务动态变量询问任务组参数
问题描述
我正在尝试获取最新的测试结果 id 以在 azure devops 中附加我的屏幕截图。我添加了一个 powershell 脚本任务,
脚本中的一些变量使用是动态的,天蓝色要求我将它们放入任务组参数中,
我刚刚添加了 123 作为默认值,但此任务因此失败。
脚本:
$AzureDevOpsPAT = "123"
$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($AzureDevOpsPAT)")) }
$UriOrga = "https://dev.azure.com/{org}/{proj}/"
$uriAccount = $UriOrga + "_apis/test/runs?api-version=6.0"
$response = Invoke-RestMethod -Uri $uriAccount -Headers $AzureDevOpsAuthenicationHeader -Method Get
$testRunsIdSorted = $response.value | sort-object id -Descending
$result = Invoke-RestMethod -Uri https://dev.azure.com/{org}/{proj}/_apis/test/runs/$($testRunsIdSorted[0].id)?api-version=6.0 -Headers $AzureDevOpsAuthenicationHeader -Method Get
Write-Host "results = $($result | ConvertTo-Json -Depth 100)"
Write-Host "##vso[task.setvariable variable=runId]$($result.id | ConvertTo-Json -Depth 100)"
如何在 powershell 中定义变量?
解决方案
看起来您正在将 Powershell $变量访问器添加到任务组参数。您还将一些脚本包装在$()中,这将告诉管道您正在尝试访问任务组变量。这是不正确的。$()管道语法用于访问管道变量,而不是本地 powershell 变量。
例如,这是正确的语法:
Write-Host "$(AzureDevOpsPAT)"
您需要更新参数以使用命名变量而不是 Powershell 变量名称。
我已经更新了您的脚本并更正了变量的使用:
$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$(AzureDevOpsPAT)")) }
$UriOrga = "https://dev.azure.com/{org}/{proj}/"
$uriAccount = $UriOrga + "_apis/test/runs?api-version=6.0"
$response = Invoke-RestMethod -Uri $uriAccount -Headers $AzureDevOpsAuthenicationHeader -Method Get
$testRunsIdSorted = $response.value | sort-object id -Descending
$result = Invoke-RestMethod -Uri https://dev.azure.com/{org}/{proj}/_apis/test/runs/$testRunsIdSorted[0].id?api-version=6.0 -Headers $AzureDevOpsAuthenicationHeader -Method Get
$results = $result | ConvertTo-Json -Depth 100
Write-Host "results = $results"
Write-Host "##vso[task.setvariable variable=runId]$result.id"
请注意,在替换当前内容后,您需要返回任务组属性并重置 PAT 的默认值。之后,您需要更新管道以在使用此任务时设置AzureDevOpsPAT参数。
推荐阅读
- java - 如何将 MySQL 数据库中的数据以特定格式导出到 .flr 或 .pl 文件中
- mysql - 子选择的 MySQL 排名 - 按组排列的前 N 个结果
- go - 如何模拟 gRPC api 以使用 golang 进行集成测试
- android - Android Kotlin 按整理器排序
- python - 如何创建两个保存的张量流网络的张量流网络?
- r - 如何过滤带有条件的数据框?
- java - Node.PROPAGATE 在 AQS 中的实际作用是什么?
- compare - 将每个工作表的数据源或单元格值与另一个电子表格 ejs 进行比较
- android - Android 7+ 中 ar_IL 的 WebView 问题?
- r - 使用包`settings`设置和重置R选项中的scipen和数字