functions/internal/Get-WebResponse.ps1

<#
.SYNOPSIS
     Get a the summary response from a URL
.DESCRIPTION
    Makes a HTTP request to the URL and returns the StatusCode, StatusDescription and Headers.
    Avoids downloading the content from the URL
.EXAMPLE
    Get-WebResponse "http://bing.com"
.INPUTS
    $Url = URL to access
.OUTPUTS
    Headers
    StatusCode
    StatusDescription
.NOTES
 
#>

function Get-WebResponse {
    [CmdletBinding()]
    param (
        [string] $Url
    )

    Write-Host "Create WebRequest for $url and Get response"
    $Result = @{}
    Try {
        Write-Verbose "Create WebRequest for $url and Get response"
        $Response = $null
        $Response = WebRequest-GetResponse $url
        $Result.Headers = $Response.Headers
        $result.ContentLength = $response.ContentLength
        $Result.StatusCode = $Response.StatusCode 
        $Result.StatusDescription = $Response.StatusDescription  
    }
    Catch {
        Write-Verbose "Response failed $_"
        $Result.StatusCode = 500
        $Result.StatusDescription = $_.Exception.Message
    }
    Finally {
        if ($null -ne $Response -and $Response -is [System.Net.HttpWebResponse]) { $Response.Dispose(); }
    }
    return [PSCustomObject]$Result

}
Write-Host "GetWebResponse"