shell 使用API _/api/projects仅按名称获取一些Azure devops项目

lo8azlld  于 2023-02-13  发布在  Shell
关注(0)|答案(1)|浏览(147)

我正在创建一个脚本,用于从我的azuredevops项目中获取不同类型的信息,例如项目名称、存储库、管道、任务等。我已经完美地完成了所有这些工作,但现在我只需要获取某些项目,因为我的azuredevops中有一些项目不需要从其中获取信息。因为它们是可能"不活动"或根本不活动的项目。我需要你的信息。我想,也许通过异常或将名称保存在数组中并对其进行迭代会有所帮助,但这是我第一次编写脚本,我很难理解如何在powershell。我还看到有一个方法叫做"where",但我认为使用它会更复杂。我留下了我的代码调用api来获取项目。任何想法都会很有帮助。
我想获取的一些项目的名称:EANall,教育测试,机会1。

function projectsGet() {
$apiProjects="$Organization/_apis/projects?continuationToken=$ContinuationToken&$apiVersion"
$projects = @()
do {
    $response = Invoke-WebRequest -Uri $projectsUri -Method Get -UseDefaultCredentials
    $ContinuationToken=$response.Headers.'x-ms-continuationtoken'
    $projectsData = $response.Content | ConvertFrom-Json
    $projectsData.value | ForEach-Object {
        $projectName=$_.name
        $projectUni="$Organization/$projectName"
        $projects+=$projectUni
    }
    $apiProjects="$Organization/_apis/projects?continuationToken=$ContinuationToken&$apiVersion"
} while ($null -ne $ContinuationToken)
return $projects

}
我发现了一个非常简单的方法,但我认为它是错误的,因为它只适用于特定的项目,即在进入ForEach-Object后放置一个IF,然后放置"if($_. name-eq "EANAII")"然后执行以下操作...这是一个非常简单的方法,但我的Azure DevOps中有70多个项目,其中30个我不想展示。如果您有什么有用的想法,我会很感激的。

qacovj5a

qacovj5a1#

foreach($count in $nameProjectsActi){
            if($_.name -eq $count){
                $projectName=$_.name
                $projectUri="$DevopsServer/$projectName"
                $projectsList+=$projectUri
            }
        }

嗯,一个非常手动的解决方案是向数组中添加您想要获取的所有项目的名称,并在获取所有项目的过程中检查它,验证它是否等于在foreach中获取的名称。

相关问题