UpgradeWizard/Invoke-TFSAPIUW.ps1

function Invoke-TFSAPIUW
{
    Param(
    [Parameter(Mandatory=$true)]
    [string]$Url,    
    [Parameter(Mandatory=$false)]
    [string]$HttpMethod = 'Get',
    [Parameter(Mandatory=$false)]
    [string]$HttpContent,
    [Parameter(Mandatory=$false)]
    [switch]$GetContents,    
    [Parameter(Mandatory=$false)]
    [string]$NoRaw
    )

    $Headers = Create-HttpHeaders

    if ($Url.Substring(0,1) -eq '/')
    {
        $Url = $Url.Substring(1)
    }
    
    if ($Url.Substring(0,4) -ne 'http')
    {
        $TFSUrl = '{0}{1}' -f (Get-TFSConfigKeyValue 'collectionUrl'), $Url
    }
    else
    {
        $TFSUrl = $Url
    }

    $TempPath = (Join-Path $env:TEMP ([System.Guid]::NewGuid().ToString() + ".TXT"))

    try
    {
        switch ($HttpMethod)
        {
            'Get'
            {
                if ($GetContents)
                {
                    Invoke-RestMethod -Method Get -Headers $Headers -Uri $TFSUrl -OutFile $TempPath
                    if($NoRaw -eq '')
                     {$Result = Get-Content $TempPath -Raw}
                    else
                     {$Result = Get-Content $TempPath}
                    [io.file]::Delete($TempPath)
                    $Result
                }
                else
                {
                    Invoke-RestMethod -Method Get -Headers $Headers -Uri $TFSUrl
                }
            }
            'Put'
            {
                Invoke-RestMethod -Method Put -Headers $Headers -Uri $TFSUrl -Body $HttpContent
            }
        }
    }
    catch
    {
        'WebServiceError'
    }
}

Export-ModuleMember -Function Invoke-TFSAPIUW