SimpleAzureDevOps.psm1
$BaseUrl = $null $Base64Auth = $null $ApiVersion = "6.0" $Headers = $null function Connect-AzureDevOps { [CmdletBinding()] param ( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $ServerURL, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $EmailAddress, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $PAT ) $Script:BaseUrl = "https://vsrm.$($ServerURL)" $Script:Base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $EmailAddress, $PAT))) $Script:Headers = @{ Authorization = "Basic {0}" -f $Base64Auth } return @{ "BaseUrl" = $BaseUrl ; "Base64Auth" = $Base64Auth } } function Get-AzureDevOpsReleaseStatus { [CmdletBinding()] param ( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $ProjectName, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $ReleaseID ) return Invoke-API -Param "$($ProjectName)/_apis/Release/releases/$($ReleaseID)" -Method GET } <# function Get-AzureDevOpsDeploymentGroup { [CmdletBinding()] param ( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $ProjectName, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $ID ) return Invoke-API -Param "$($ProjectName)/_apis/" -Method GET } #> function New-AzureDevOpsRelease { [CmdletBinding()] param ( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $ProjectName, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $DefinitionID ) $body = @{ definitionId = $DefinitionID } return Invoke-API -Param "$($ProjectName)/_apis/Release/releases" -Method POST -Body $body } function Set-APIVersion { [CmdletBinding()] param ( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $Version ) $Script:ApiVersion = $Version } function Invoke-API { [CmdletBinding(DefaultParameterSetName = "Getters")] param ( [Parameter(Mandatory=$true, ParameterSetName = "Getters")] [Parameter(Mandatory=$true, ParameterSetName = "Others")] [ValidateNotNullOrEmpty()] [string] $Param, [Parameter(Mandatory=$true, ParameterSetName = "Others")] [ValidateNotNullOrEmpty()] $Body, [Parameter(Mandatory=$true, ParameterSetName = "Getters")] [Parameter(Mandatory=$true, ParameterSetName = "Others")] [ValidateSet("GET", "POST", "PUT")] [string] $Method ) $requestUri = $Script:BaseUrl + $Param $restMethodParam = @{ Uri = "$($requestUri)?api-version=$($ApiVersion)" Headers = $Script:Headers Method = $Method ContentType = "application/json" } if ($Method -notmatch "GET") { $restMethodParam["Body"] = ($Body | ConvertTo-Json) } $response = Invoke-RestMethod @restMethodParam return $response } |