powershell - Azure devops rest api 结果循环使用 powershell 脚本
问题描述
我正在编写脚本,我想为组织中的所有 azure devops 项目的测试计划生成 csv 报告
我有下面的脚本,它首先生成所选组织中所有项目的名称,我想在这个脚本中循环,它可以从我的列表中一个一个地获取项目名称并执行测试计划 api 并生成输出,我可以将其保存在 csv 文件中。
$connectionToken = ""
$BaseUrl = "https://dev.azure.com/{organization_name}/_apis/projects?api-versions=5.0"
$base64AuthInfo=
[System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$ProjectInfo = Invoke-RestMethod -Uri $BaseUrl -Headers @{authorization = "Basic $base64AuthInfo"} -
Method Get
$ProjectDetails = $ProjectInfo | ConvertTo-Json -Depth 100
$Projectname = $ProjectInfo.value.name
This gives me list of all projects like -
a
b
c
d
现在我想在下面的api中一一通过这些项目-
TastPlanApi = "https://dev.azure.com/{orgName}/{ProjectName}/_apis/test/plans?api-version=5.0"
$TestplanInfo = Invoke-RestMethod -Uri $TestplanApi -Headers @{authorization = "Basic
$base64AuthInfo"} - Method Get
如果我提供硬编码的项目名称,那么它会给我所需的值,例如 -
a
value count
---- -----
{} 0
有什么办法可以将所有项目一起打印并保存在 csv 文件中,其中包含项目名称、值和计数/也只有值不是 0 的项目?
解决方案
您需要更改$Projectname
为[string[]]$Projectname
, 然后使用ForEach
语句。示例代码如下:
[string[]]$Projectname = $ProjectInfo.value.name
ForEach ($project in $Projectname){
$TestPlanApi = "https://dev.azure.com/{org}/$project/_apis/test/plans?api-version=5.0"
$TestplanInfo = Invoke-RestMethod -Uri $TestPlanApi -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get
if (-NOT ($TestplanInfo.count -eq 0)){
$testplanvalue = $TestplanInfo.value.name
$testplancount = $TestplanInfo.count
}
}
然后你需要做的是将$project
, $testplanvalue
,导出$testplancount
到 csv:
推荐阅读
- informix - 坏主块'/dev/chunk1317'?
- python - 将文件作为输入传递给程序并使用 python 中的 sh 库存储其输出
- python - 计算cnn后全连接层的形状
- node.js - NodeJS - 使用带有 Promise 的 Multer 上传
- android - Android Google Map Marker 未正确重新定位
- c++ - 调用 execvp 两次会导致第二个 execvp 使用第一个 execvp 的参数
- maven - 构建jar文件后maven项目不起作用
- java - 每次尝试执行此操作时都会失败
- javascript - Javascript:onmouseover 和 onmouseout 图像不透明度更改
- c# - C#如何将这些代码行中的0和1识别为num 1和num2?