Public/Network/Get-NetASInfo.ps1
function Get-NetASInfo { <# .SYNOPSIS Check HTTP header for server information. .PARAMETER IPAddress IP address to retrieve network AS information for. .EXAMPLE !netasinfo IPAddress #> [cmdletbinding()] param( [parameter(Mandatory)] [Alias('IP')] [string]$IPAddress ) try { $httpResponse = Invoke-WebRequest -UseBasicParsing -Uri "https://stat.ripe.net/data/searchcomplete/data.json?resource=$($IPAddress)" if ($httpResponse) { $jsonResponse = $httpResponse | ConvertFrom-Json if ($null -ne $jsonResponse.data.categories) { if ($jsonResponse.data.categories.suggestions.count -gt 0) { foreach ($row in $jsonResponse.data.categories.suggestions) { if ($row.value -like 'AS*') { $asCode = $row.value } } } else { $asCode = $jsonResponse.data.categories.suggestions.value } if ($asCode) { $asInfoResponse = Invoke-WebRequest -UseBasicParsing -Uri "https://stat.ripe.net/data/as-overview/data.json?resource=$($asCode)" $jsonAsInfo = $asInfoResponse | ConvertFrom-Json $response = "$asCode $($jsonAsInfo.data.holder)" } else { $errorMessage = 'Not Data Found' } } else { $errorMessage = 'Not Data Found' } } } 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 = "Receive a general error: $($_.Exception)" } finally { if ($errorMessage) { Write-Error "$errorMessage`n:(" } if ($response) { $response } } } |