WhatIsMyIP.psm1


<#
.Synopsis
   Get External IP address
.DESCRIPTION
   Get External IP address using free ipfy.org API.
.EXAMPLE
   PS C:\> Get-PublicIP
0.0.0.1
.EXAMPLE
   PS C:\> whatismyip -ComputerName Host01.domain.local
0.0.0.2
#>

function Get-PublicIP
{
    [CmdletBinding(SupportsShouldProcess=$true, 
                  PositionalBinding=$false,
                  ConfirmImpact='Medium')]
    [Alias('whatismyip','Get-ExternalIP')]
    Param
    (
        # Computer Name
        [Parameter(ValueFromPipeline=$true,
                   ValueFromPipelineByPropertyName=$true)]
        [ValidateNotNull()]
        [ValidateNotNullOrEmpty()]
        [Alias("hostname")] 
        $ComputerName=$null
    )

    Begin
    {
    }
    Process
    {
        if ($pscmdlet.ShouldProcess("computer $ComputerName"))
        {
            if($ComputerName -eq $null){
                $IPObj = Invoke-RestMethod -Uri 'https://api.ipify.org?format=json'
                $ExternalIP=$IPObj.IP
                $ExternalIP
            }else{
                $IPObj = Invoke-Command -ComputerName $ComputerName -ScriptBlock {Invoke-RestMethod -Uri 'https://api.ipify.org?format=json'}
                $ExternalIP=$IPObj.IP
                $ExternalIP
                
            }
        }
    }
    End
    {
    }
}