【问题标题】:Azure devops rest api result looping using powershell scriptAzure devops rest api 结果循环使用 powershell 脚本
【发布时间】:2020-10-13 00:36:38
【问题描述】:

我正在编写脚本,我想为组织中所有 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 的项目?

【问题讨论】:

    标签: powershell foreach azure-devops-rest-api


    【解决方案1】:

    您需要将$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:

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/export-csv?view=powershell-7

    【讨论】:

    • 你能帮我获取组织的所有项目吗?我的组织有 250 个项目,但我的脚本只显示 100 个项目?
    • 我注意到您为此查询打开了一个新案例 (stackoverflow.com/questions/64344163/…),您可以在这种情况下查看答案。由于您的原始问题已解决,您可以Accept my reply as an Answer,这可能对阅读此主题的其他社区成员有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 2020-11-26
    • 2021-01-31
    • 1970-01-01
    • 2021-06-23
    • 2022-07-17
    • 1970-01-01
    相关资源
    最近更新 更多