Public/Get-JiraIssue.ps1
|
function Get-JiraIssue { <# .SYNOPSIS Ruft ein einzelnes Issue ab oder sucht Issues per JQL. .PARAMETER IssueKey Key oder ID eines einzelnen Issues, z.B. "PROJ-123". .PARAMETER Jql JQL-Suchausdruck, z.B. "project = PROJ AND status = Open". Paginiert automatisch über alle Treffer. .PARAMETER MaxResults Seitengrösse pro Anfrage bei einer JQL-Suche. Standard: 50. .PARAMETER Fields Einzuschliessende Felder, z.B. "summary","status","assignee". Standard: alle Felder der API. .EXAMPLE Get-JiraIssue -IssueKey "PROJ-123" .EXAMPLE Get-JiraIssue -Jql "project = PROJ AND status = Open" -Fields "summary","status" #> [CmdletBinding(DefaultParameterSetName = "ById")] param ( [Parameter(Mandatory = $true, ParameterSetName = "ById")] [string] $IssueKey, [Parameter(Mandatory = $true, ParameterSetName = "ByQuery")] [string] $Jql, [Parameter(Mandatory = $false, ParameterSetName = "ByQuery")] [int] $MaxResults = 50, [Parameter(Mandatory = $false)] [string[]] $Fields ) begin { $ErrorActionPreference = "Stop" } process { if ($PSCmdlet.ParameterSetName -eq "ById") { $Path = "/rest/api/3/issue/$IssueKey" if ($Fields) { $Path += "?fields=$($Fields -join ',')" } $response = Invoke-JiraApi -Method Get -Path $Path } else { $Results = New-Object System.Collections.Generic.List[object] $NextPageToken = $null do { $Body = @{ jql = $Jql; maxResults = $MaxResults } if ($Fields) { $Body.fields = $Fields } if ($NextPageToken) { $Body.nextPageToken = $NextPageToken } $Page = Invoke-JiraApi -Method Post -Path "/rest/api/3/search/jql" -Body $Body if ($Page.issues) { $Results.AddRange(@($Page.issues)) } $NextPageToken = $Page.nextPageToken } while (-not $Page.isLast) $response = $Results } } end { return $response } } |