Helpers/Helpers.ps1
Function Get-TfsRestClient { [CmdletBinding()] [OutputType('Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase')] Param ( [Parameter(Mandatory=$true, Position=0)] [string] $Type, [Parameter()] [object] $Collection ) Process { return _GetRestClient @PSBoundParameters } } <# .SYNOPSIS Short description .DESCRIPTION Long description .EXAMPLE PS C:> <example usage> Explanation of what the example does .INPUTS Inputs (if any) .OUTPUTS Output (if any) .NOTES General notes #> Function Invoke-TfsRestApi { [CmdletBinding()] Param ( [Parameter(Position=0, Mandatory=$true, ParameterSetName="Library call")] [Alias("Name")] [Alias("API")] [string] $Operation, [Parameter(ParameterSetName="Library call")] [Alias("Client")] [Alias("Type")] [string] $ClientType, [Parameter(ParameterSetName="Library call")] [object[]] $ArgumentList, [Parameter(ParameterSetName="Library call")] [string] $ErrorMessage, [Parameter(ParameterSetName="Library call")] [object] $Collection, [Parameter()] [switch] $AsTask ) End { $tpc = Get-TfsTeamProjectCollection -Collection $Collection; if (-not $tpc -or ($tpc.Count -ne 1)) {throw "Invalid or non-existent team project collection $Collection."} $client = _GetRestClient $ClientType -Collection $tpc $task = $client.$Operation.Invoke($ArgumentList) if ($AsTask) { return $task } $result = $task.Result; if($task.IsFaulted) { throw $Message + ": $($task.Exception.InnerExceptions | ForEach-Object {$_.ToString()})" } return $result } } |