public/Get-PublicIPv4Address.ps1

function Get-PublicIPv4Address {
    param ()
    <#
    .SYNOPSIS
        Get current public IPv4 address
    .DESCRIPTION
        Geez. Do I really need to elaborate on this one?
    .EXAMPLE
        Get-PublicIPv4Address
    .LINK
        https://github.com/Skatterbrainz/helium/blob/master/docs/Get-PublicIPv4Address.md
    #>

    try {
        $response1 = (Invoke-WebRequest -Uri ('http://ipinfo.io/'+(Invoke-WebRequest -uri "http://ifconfig.me/ip").Content)).Content
        $response2 = (Invoke-WebRequest -Uri "api.ipify.org").Content
        if ($response1 -and $response2) {
            $result = $response1 | ConvertFrom-Json
            $result | select-object -Property @{n='ipv4';e={$response2}},@{n='ipv6';e={$_.ip}},@{n='city';e={$_.city}},@{n='region';e={$_.region}},@{n='country';e={$_.country}},@{n='loc';e={$_.loc}},@{n='org';e={$_.org}},@{n='postal';e={$_.postal}},@{n='timezone';e={$_.timezone}}
        } else {
            throw "HTTP response code: $($response.StatusCode)"
        }
    } catch {
        Write-Error $_.Exception.Message
    }
}