簡體   English   中英

Azure devops rest api 結果使用 powershell 腳本循環

[英]Azure devops rest api result looping using powershell script

我正在編寫腳本,我想為組織中的所有 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更改$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM