Functions/New-AzDoTask.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
Function New-AzDoTask { <# .SYNOPSIS Creates a work item of the type Task .DESCRIPTION Creates a work item of the type Task .EXAMPLE New-AzDoTask -PersonalAccessToken $PAT -Organisation $Organisation -Project $Project -TaskTitle "Test Task" -Board $Board -Description "Test Description" .PARAMETER PersonalAccessToken This is your personal access token from Azuree Devops. .PARAMETER OrganizationName The name of your Azure Devops Organisation .PARAMETER ProjectName The name of your Azure Devops Project or Team .PARAMETER Title The title of the task .PARAMETER Board The name of your Azure Devops Board you want to add the item to .PARAMETER AssignedTo This is the person the item is assigned to. .PARAMETER Description The content of the description field. Lines can be broken by adding <br> .INPUTS Input is from command line or called from a script. .OUTPUTS This will output the logfile. .NOTES Version: 1.1 Author: Lars Panzerbjørn Creation Date: 2020.07.31 Purpose/Change: Initial script development #> [CmdletBinding(SupportsShouldProcess=$True,ConfirmImpact='Low')] param ( [Parameter(Mandatory)] [Alias('PAT')] [string]$PersonalAccessToken, [Parameter(Mandatory)] [Alias('Company')] [string]$Organisation, [Parameter(Mandatory)] [Alias('TeamName')] [string]$Project, [Parameter(Mandatory)] [Alias('Title')] [string]$TaskTitle, [Parameter()][string]$Board, [Parameter()][string]$AssignedTo, [Parameter()][string]$Description, [Parameter(Mandatory)] [string]$ParentItemID ) BEGIN { Write-Verbose "Beginning $($MyInvocation.Mycommand)" $JsonContentType = 'application/json-patch+json' $BaseUri = "https://dev.azure.com/$($Organisation)/" $Uri = $BaseUri + "$Project/_apis/wit/workitems/`$Task?api-version=6.0" $Token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PersonalAccessToken)")) $Header = @{Authorization = 'Basic ' + $Token;accept=$JsonContentType} } PROCESS { Write-Verbose "Processing $($MyInvocation.Mycommand)" $Body = @([pscustomobject]@{ op = "add" path = '/fields/System.Title' from = $Null value = $TaskTitle } ) IF ($Board){$BoardValue = $Board} ELSE {$BoardValue = (Get-AzDoUserStoryWorkItem -Organisation $Organisation -WorkItemID $ParentID -PersonalAccessToken $PersonalAccessToken -Project $Project).Fields.'System.AreaPath'} $Body += @([pscustomobject]@{ op = "add" path = '/fields/System.AreaPath' value = $BoardValue } ) IF ($AssignedTo){$AssignedToValue = $AssignedTo} ELSE {$AssignedToValue = (Get-AzDoUserStoryWorkItem -Organisation $Organisation -WorkItemID $ParentID -PersonalAccessToken $PersonalAccessToken -Project $Project).Fields.'System.Assignedto'.displayName} $Body += @([pscustomobject]@{ op = "add" path = '/fields/System.AssignedTo' value = $AssignedToValue } ) IF ($Description) { $Body += @([pscustomobject]@{ op = "add" path = '/fields/System.Description' value = $Description } ) } $Body = ConvertTo-Json $Body $Body $Result = Invoke-RestMethod -Uri $uri -Method POST -Headers $Header -ContentType "application/json-patch+json" -Body $Body IF (($ParentItemID) -and ($Result.id)){ Link-AzDoItems -PersonalAccessToken $PersonalAccessToken -Organisation $Organisation -Project $Project -ParentItemID $ParentItemID -ChildItemID $Result.id -Verbose } } END { Write-Verbose "Ending $($MyInvocation.Mycommand)" #$Body $Result } } |