用于导出sprint PBI的Powershell函数/脚本[关闭]

问题描述 投票:0回答:1

我想使用powershell脚本导出VSTS中的所有PBI。我们正在使用Azure Devops进行Sprint管理。以下是我要执行的任务。

对VSTS进行身份验证在VSTS中查询特定队列下的PBI列表-检索有用的字段-标题,分配给,州,地区,迭代,优先级,工作量-检索链接的工作(向上或向下)可根据分配给可按州过滤

有人可以帮我使用Powershell脚本吗?

powershell powershell-2.0 powershell-3.0 powershell-4.0 azure-powershell
1个回答
0
投票

[有时,某人可能只是为您准备了一些东西,但并非正常情况。有点像我要在这里开始的工作。

示例:

使用此的简单快速搜索:

PowerShell 'export vsts PBI'

当然,您会获得很多列表,如下所示,您可以根据需要进行调整:

[Export Visual Studio Team Services Work Items Using PowerShell加上作者的示例代码。

function Export-VSTSWorkItem  
{  
<#  
.SYNOPSIS  
    A PowerShell function to export Visual Studio Team Servies work items.   
.DESCRIPTION  
    A PowerShell function to export Visual Studio Team Servies work items.   
.EXAMPLE  
    PS C:\> Export-VSTSWorkItem -Instance 'Fabrikam' -Token "PAT" -WorkItemType Bug  
    Yields all the bugs in from the work items table.  
.EXAMPLE  
    PS C:\> Export-VSTSWorkItem -Instance 'Fabrikam' -Token "PAT" -WorkItemType Task  
    Yields all the task in from the work items table.  
.EXAMPLE  
    PS C:\> Export-VSTSWorkItem -Instance 'Fabrikam' -Token "PAT" -WorkItemType Epic  
    Yields all the epic in from the work items table.  
.EXAMPLE  
    PS C:\> Export-VSTSWorkItem -Instance 'Fabrikam' -Token "PAT" -WorkItemType Epic -ExportAs Csv  
    Exports information as csv  
.EXAMPLE  
    PS C:\> Export-VSTSWorkItem -Instance 'Fabrikam' -Token "PAT" -WorkItemType Epic -ExportAs FancyHtml  
    Exports information as a fancy html  
.NOTES  
    @ChendrayanV  
#>  
    [CmdletBinding()]  
    param (  
        # Visual Studio Team Services Account Name  
        [Parameter(Mandatory)]  
        $Instance,  

        # Create a Personal Access Token  
        [Parameter(Mandatory)]  
        $Token,  

        # Opt the Work Items Type. (Modify as required)  
        [Parameter(Mandatory)]  
        [ValidateSet('Bug', 'Task', 'Epic', 'Feature')]  
        $WorkItemType,  

        # Export in your favorite format.  
        [Parameter()]  
        [ValidateSet('Csv', 'HTML', 'FancyHTML')]  
        $ExportAs  
    )  

    begin  
    {  
    }  

    process  
    {  
        $Authentication = (":$Token")  
        $Authentication = [System.Text.Encoding]::ASCII.GetBytes($Authentication)  
        $Authentication = [System.Convert]::ToBase64String($Authentication)  
        switch ($WorkItemType)  
        {  
            "Bug"  
            {  
                $Body = @{  
                    Query = "Select * from WorkItems WHERE [System.WorkItemType] = '$WorkItemType'"  
                } | ConvertTo-Json  
            }  
            "Task"  
            {  
                $Body = @{  
                    Query = "Select * from WorkItems WHERE [System.WorkItemType] = '$WorkItemType'"  
                } | ConvertTo-Json  
            }  
            "Epic"  
            {  
                $Body = @{  
                    Query = "Select * from WorkItems WHERE [System.WorkItemType] = '$WorkItemType'"  
                } | ConvertTo-Json  
            }  
            "Feature"  
            {  
                $Body = @{  
                    Query = "Select * from WorkItems WHERE [System.WorkItemType] = '$WorkItemType'"  
                } | ConvertTo-Json  
            }  
        }  
        $RestParams = @{  
            Uri         = "https://$Instance.visualstudio.com/DefaultCollection/_apis/wit/wiql?api-version=1.0"  
            Method      = "Post"  
            ContentType = "application/json"  
            Headers     = @{  
                Authorization = ("Basic {0}" -f $Authentication)  
            }  
            Body        = $Body  
        }  
        try  
        {  
            $Id = (Invoke-RestMethod @RestParams).workitems.id -join ","  
            if ($Id -ne $null)  
            {  
                $Fields = @('System.Id', 'System.Title', 'System.AssignedTo',   
                    'System.State', 'System.CreatedBy', 'System.WorkItemType') -join ","  
                $RestParams["Uri"] = "https://$Instance.visualstudio.com/DefaultCollection/_apis/wit/WorkItems?ids=$Id&fields=$Fields&api-version=1"  
                $RestParams["Method"] = "Get"  
                $RestParams.Remove("Body")  
                $Result = Invoke-RestMethod @RestParams  
                if (! $PSBoundParameters['ExportAs'])  
                {  
                    ($Result.value.fields)  
                }  
            }  
            else  
            {  
                Write-Warning "No Items are available in $WorkItemType"  
            }  

            switch ($ExportAs)  
            {  
                'csv'  
                {  
                    $Result.value.fields | Export-Csv .\WITReport.csv -NoTypeInformation   
                }  
                'HTML'  
                {  
                    $Result.value.fields | Export-Csv .\WITReport.html -NoTypeInformation   
                }  
                'FancyHTML'  
                {  
                    Add-Content  ".\style.CSS"  -Value " body {   
                    font-family:Calibri;   
                    font-size:10pt;   
                    }   
                    th {    
                    background-color:black;   
                    color:white;   
                    }   
                    td {   
                    background-color:#19fff0;   
                    color:black;}"  
                    $Result.value.fields | ConvertTo-Html -CssUri .\Style.css | Out-File .\Report.html  
                }  
            }  
        }  
        catch  
        {  
            $_.Exception.Message   
        }  
    }  

    end  
    {  
    }  
} 

此外,请务必检查MSDN上的DevOps API documentation以及类似...的项目

'There is no option available to export the backlog items and bugs to excel'

您需要在VSTS帐户中安装Open in Excel扩展名(https://marketplace.visualstudio.com/items?itemName=blueprint.vsts-open-work-items-in-excel),然后创建一个查询,该查询可以搜索您的积压项目和所需的错误。

© www.soinside.com 2019 - 2024. All rights reserved.