Public/Network/Get-WebServerInfo.ps1

function Get-WebServerInfo {
    <#
    .SYNOPSIS
        Check HTTP header for serverinfo.
    .PARAMETER Uri
        Uri to retrieve HTTP server information for.
    .EXAMPLE
        !webserverinfo http://uri
    #>

    [cmdletbinding()]
    param(
        [parameter(Mandatory)]
        [Alias('WebServer')]
        [string]$Uri
    )

    try {
        $httpResponse = Invoke-WebRequest -UseBasicParsing -Uri $Uri
        if ($httpResponse.Headers.server.count -gt 0) {
            $response = $httpResponse.Headers.server -join ' '
        } else {
            $errorMessage = 'No Server Info'
        }
    } catch [System.Net.WebException] {
        switch ($_.Exception.Response.StatusCode) {
            'BadRequest' {
                $errorMessage = 'Server Error'
            }
            'InternalServerError' {
                $errorMessage = 'Server Error 500'
            }
            default {
                $errorMessage = "Server Error: $($_.Exception)"
            }
        }
    } catch {
        Write-Debug $_.Exception
        $errorMessage = "Received a general error: $($_.Exception)"
    } finally {
        if ($errorMessage) {
            Write-Error "$errorMessage`n:("
        }
        if ($response) {
            $response
        }
    }
}