AzDevOps.psm1
# .ExternalHelp AzDevOps-help.xml Write-Verbose 'Importing from [D:\CODE\projects\Azure-Devops-PowerShell-Module\AzDevOps\AzDevOps\AzDevOps]' # .ConnectOrganization function Connect-Organization { [CmdletBinding( HelpURI = 'https://github.com/Azure-Devops-PowerShell-Module/core/blob/master/docs/Connect-AdoOrganization.md#connect-adoorganization', PositionalBinding = $true)] [OutputType([String])] param ( [Parameter(Mandatory = $true)] [string]$Orgname, [Parameter(Mandatory = $true)] [string]$PAT, [Parameter(Mandatory = $false)] [ValidateSet('5.1', '7.1-preview.4')] [string]$ApiVersion = '7.1-preview.4' ) begin { Write-Verbose "ConnectOrganization : Begin Processing"; Write-Verbose " Orgname : $($Orgname)"; Write-Verbose " ApieVersion : $($ApiVersion)"; try { $ErrorActionPreference = 'Stop'; $Error.Clear(); $azDevOpsHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($PAT)")) }; $azDevOpsOrg = "https://dev.azure.com/$($Orgname)/"; $uriProjects = $azDevOpsOrg + "_apis/projects?api-version=$($ApiVersion)"; $Result = Invoke-AdoEndpoint -Uri ([System.Uri]::new($uriProjects)) -Method get -Headers $azDevOpsHeader -Verbose:$VerbosePreference; if ($Result.GetType().Name -ne 'String') { Set-Variable -Name azDevOpsHeader -Value $azDevOpsHeader -Scope Global; Set-Variable -Name azDevOpsOrg -Value $azDevOpsOrg -Scope Global; Set-Variable -Name azDevOpsConnected -Value $true -Scope Global; return "Connected to $($azDevOpsOrg)" } } catch { throw $_; } } } # .InvokeEndpoint function Invoke-Endpoint { [CmdletBinding( HelpURI = 'https://github.com/Azure-Devops-PowerShell-Module/build/blob/master/docs/Invoke-AdoEndpoint.md#invoke-adoendpoint', PositionalBinding = $true)] [OutputType([Object])] param ( [Parameter(Mandatory = $true)] [System.Uri]$Uri, [Parameter(Mandatory = $true)] [validateset('GET', 'PATCH', 'POST', 'PUT', 'DELETE')] [string]$Method, [Parameter(Mandatory = $false)] [hashtable]$Headers = $Global:azDevOpsHeader, [Parameter(Mandatory = $false)] [string]$ContentType, [Parameter(Mandatory = $false)] [string]$Body ) begin { Write-Verbose "InvokeEndpoint : Begin Processing"; Write-Verbose " Uri : $($Uri.AbsoluteUri)"; Write-Verbose " Method : $($Method)"; Write-Verbose " Headers : $($Headers)"; try { $ErrorActionPreference = 'Stop'; $Error.Clear(); # # Are we connected # switch ($Method) { "POST" { return (Invoke-RestMethod -Uri $Uri.AbsoluteUri -Method $Method -Headers $Headers -ContentType $ContentType -Body $Body -Verbose:$VerbosePreference); } "PUT" { return (Invoke-RestMethod -Uri $Uri.AbsoluteUri -Method $Method -Headers $Headers -ContentType $ContentType -Body $Body -Verbose:$VerbosePreference); } "PATCH" { return (Invoke-RestMethod -Uri $Uri.AbsoluteUri -Method $Method -Headers $Headers -ContentType $ContentType -Body $Body -Verbose:$VerbosePreference); } default { return (Invoke-RestMethod -Uri $Uri.AbsoluteUri -Method $Method -Headers $Headers -Verbose:$VerbosePreference); } } else { } } catch { throw $_; } } } |