Public/New-JiraIssue.ps1
|
function New-JiraIssue { <# .SYNOPSIS Erstellt ein neues Jira-Issue. .PARAMETER ProjectKey Key des Ziel-Projekts, z.B. "PROJ". .PARAMETER IssueType Name des Issue-Typs, z.B. "Task", "Bug", "Story". .PARAMETER Summary Titel des Issues. .PARAMETER Description Beschreibung als reiner Text. Wird automatisch ins Atlassian Document Format (ADF) umgewandelt. .PARAMETER Fields Zusätzliche/überschreibende Felder als Hashtable, z.B. @{ priority = @{ name = "High" }; labels = @("foo") }. .EXAMPLE New-JiraIssue -ProjectKey "PROJ" -IssueType "Task" -Summary "Neue Aufgabe" -Description "Kurze Beschreibung" .EXAMPLE New-JiraIssue -ProjectKey "PROJ" -IssueType "Bug" -Summary "Fehler XY" -Fields @{ priority = @{ name = "High" } } #> [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [string] $ProjectKey, [Parameter(Mandatory = $true)] [string] $IssueType, [Parameter(Mandatory = $true)] [string] $Summary, [Parameter(Mandatory = $false)] [string] $Description, [Parameter(Mandatory = $false)] [hashtable] $Fields = @{} ) begin { $ErrorActionPreference = "Stop" $FieldPayload = @{ project = @{ key = $ProjectKey } issuetype = @{ name = $IssueType } summary = $Summary } if ($Description) { $FieldPayload.description = ConvertTo-JiraADF -InputText $Description } foreach ($Key in $Fields.Keys) { $FieldPayload[$Key] = $Fields[$Key] } $Payload = @{ fields = $FieldPayload } } process { $response = Invoke-JiraApi -Method Post -Path "/rest/api/3/issue" -Body $Payload } end { return $response } } |