WhatsMyIP.ps1
<#PSScriptInfo .VERSION 0.1 .GUID 7e1cc5c5-e76e-4a61-906a-53679cc7c183 .AUTHOR Rowel Balot .COMPANYNAME .COPYRIGHT The IT Blogs .TAGS IP, My IP, Public IP, What's My IP .LICENSEURI .PROJECTURI https://www.theitblogs.com/ .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES Using http://ipinfo.io free API with limit of 1,000 request per day and Dyn DNS as providers. #> <# .DESCRIPTION Get Current Public IP Address #> Param( [Parameter(Mandatory=$false,Position=0)] [ValidateSet("IPINFO","DYNDNS")] [string]$Provider="IPINFO", [Parameter(Mandatory=$false,Position=1)] [switch] $All, [Parameter(Mandatory=$false,Position=2)] [switch] $ToClipBoard ) If ($Provider -eq "DYNDNS") { $ipinfo = ((Invoke-WebRequest -URI "http://checkip.dyndns.org" -TimeoutSec 5) | Select-String "(((\d){1,3}\.){3}(\d){1,3})").Matches.Value $ipinfo = New-Object PSObject -Property @{ IP = $ipinfo} } else { $ipinfo = Invoke-RestMethod http://ipinfo.io/json } if ($ToClipBoard) { $null = [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") [Windows.Forms.Clipboard]::SetText($ipinfo.ip) } $IPInfoOut = New-Object -TypeName psobject $IPInfoOut | Add-Member -NotePropertyName "IP" -NotePropertyValue $ipinfo.ip if($All) { $IPInfoOut | Add-Member -NotePropertyName "Host Name" -NotePropertyValue $ipinfo.hostname $IPInfoOut | Add-Member -NotePropertyName "City" -NotePropertyValue $ipinfo.city $IPInfoOut | Add-Member -NotePropertyName "Region" -NotePropertyValue $ipinfo.region $IPInfoOut | Add-Member -NotePropertyName "Country" -NotePropertyValue $ipinfo.country $IPInfoOut | Add-Member -NotePropertyName "Geo Location" -NotePropertyValue $ipinfo.loc $IPInfoOut | Add-Member -NotePropertyName "Organization" -NotePropertyValue $ipinfo.org $IPInfoOut | Add-Member -NotePropertyName "Zip Code" -NotePropertyValue $ipinfo.postal } Write-Output $IPInfoOut |