function convert-idn($domain,$coding) { $idn = new-object System.Globalization.IdnMapping if ($coding -eq "ascii") { $idn.GetAscii($domain) } elseif ($coding -eq "unicode") { $idn.GetUnicode($domain) } } function get-whoisvalues { param( [CmdLetBinding()] [parameter(mandatory=$true)] [validatenotnullorempty()] $whoisinput, $formattedName ) begin { remove-variable properties -ErrorAction SilentlyContinue } process { $properties = @{site=$formattedName} #$properties = @{} Write-Verbose -Message "Starting verbose..." $newNsLoop = 1 write-verbose -Message "Input is: $($input.count) lines" write-verbose -Message "Input: $($input)" write-verbose -Message "Input: $($input.gettype())" foreach ($line in $whoisinput) { if ($line -like "state:*") { $properties.state = $line.split(":")[-1].trimstart(" ") } elseif ($line -like "domain:*" -or $line -like "Domain Name:*") { $properties.domain = $line.split(":")[-1].trimstart(" ") } elseif ($line -like "holder:*" -or $line -like "Registrant Organization:*") { $properties.holder = $line.split(":")[-1].trimstart(" ") } elseif ( $line -like "created:*" -or $line -like "Creation Date:*") { $properties.created = $line.split(":")[1].trimstart(" ") } elseif ($line -like "modified:*" -or $line -like "Updated Date:*") { $properties.modified = $line.split(":")[1].trimstart(" ") } elseif ($line -like "expires:*" -or $line -like "Registrar Registration Expiration Date:*" -or $line -like "Registry Expiry Date:*") { $properties.expires = $line.split(":")[1].trimstart(" ") } elseif ($line -like "nserver:*" -or $line -like "Name Server:*") { if ($newNsLoop -eq 1) { $properties.nsserver1 = $line.split(":")[-1].trimstart(" ") $newNsLoop++ } elseif ($newNsLoop -eq 2) { $properties.nsserver2 = $line.split(":")[-1].trimstart(" ") $newNsLoop++ } elseif ($newNsLoop -eq 3) { $properties.nnsserver3 = $line.split(":")[-1].trimstart(" ") } else { write-output "Couldnt match ns"} } elseif ($line -like "status:*" -or $line -like "Domain Status:") { $properties.status = $line.split(":")[-1].trimstart(" ") } elseif ($line -like "transferred:*") { $properties.transferred = $line.split(":")[-1].trimstart(" ") } elseif ($line.ToLower() -like "dnssec:*") { $properties.dnssec = $line.split(":")[-1].trimstart(" ") } elseif ($line.ToLower() -like "registrar whois server:*") { $properties.whois = $line.split(":")[-1].trimstart(" ") } elseif ($line.ToLower() -like "registrar:*") { $properties.registrar = $line.split(":")[-1].trimstart(" ") } }#end foreach #$properties.site=$formattedName Write-Verbose "Properties has $($properties.count)" $tempObject = new-object psobject -Property $properties return $tempObject } } function ping-ripe { param( $baseUrl = 'http://rest.db.ripe.net/search.json?query-string=', $ip = '81.170.175.179' ) $url = "$($baseUrl)$($ip)" $result = Invoke-RestMethod -uri $url $values = $result.objects.object.attributes |select @{name='Attribute';expression={$_.attribute|where-object {$_.name -like 'descr'}}} $outputObject = $attributeObject = @() foreach ($value in $values) { $tempObject = new-object psobject -Property @{value=$value.attribute.value} $attributeObject += $tempObject } return $outputObject += new-object psobject -Property @{input=$ip;value=$($attributeObject.value -join ";")} } function ping-arin { param( $baseUrl = "http://whois.arin.net/rest/ip/", $ip ) $url = "$($baseUrl)$ip" $headers = @{"Accept"="application/json"} $result = Invoke-RestMethod -uri $url -Headers $headers $outputObject = new-object psobject -Property @{input=$ip;value=$result.net.orgRef.'@name'} return $outputObject }