PowerShell: Разрешить список IP адресов в DNS имена
Написал небольшой PowerShell скрипт, который по CSV файлу содержащему список IP адресов, возвращает список состоящий из IP адреса и соответствующему ему DNS имени. На вход скрипта подается файл, содержащий в одной из колонок (или состоящей только из одной колонки) с названием колонки IP, например:
IP
77.88.8.1
77.88.8.2
8.8.4.4
8.8.8.8
666.6.6.6
255.255.255.255
Результат скрипта может быть выведен на экран, либо в новый CSV файл. Результат скрипта будет выглядеть следующим образом:"IP","DNS"
"77.88.8.1","secondary.dns.yandex.ru"
"77.88.8.2","secondary.safe.dns.yandex.ru"
"8.8.4.4","google-public-dns-b.google.com"
"8.8.8.8","google-public-dns-a.google.com"
"666.6.6.6","No such host is known"
"255.255.255.255","No such host is known"
Для IP адресов, для которых не нашлось PTR записи, будет выведен текст: "No such host is known"$listIP = @()
# Получаем список IP адресов из CSV файла
$listIP = Import-Csv "c:\temp\Process\ListIP.csv"
#$listIP # проверка импортированных данных
$ListIPandDNS = @()
# в Цикле разрешаем IP в DNS имя
foreach ($ip in $listIP)
{
$DNS = $null
try
{
$DNS = [System.Net.Dns]::gethostentry($ip.IP.Trim()) # разрешаем IP в DNS имя, удалив лишние пробелы
}
catch
{
Write-Host "For IP: " $ip.IP "Error: " $_.Exception.Message | fl
$Exception = $_.Exception.Message
$ErrorMessage = (($Exception -split ': ') -replace '"')[1]
}
$IPandDNS = New-Object System.Object
$IPandDNS | Add-Member -MemberType NoteProperty -Name 'IP' -Value $ip.IP.Trim()
If ($DNS)
{
$IPandDNS | Add-Member -MemberType NoteProperty -Name 'DNS' -Value $DNS.HostName
}
else
{
$IPandDNS | Add-Member -MemberType NoteProperty -Name 'DNS' -Value $ErrorMessage
}
$ListIPandDNS += $IPandDNS
}
$ListIPandDNS # Вывод на экран результата
$ListIPandDNS | Export-Csv -Path c:\temp\Process\ListIPandDNS.csv -Encoding UTF8 -Delimiter "," -NoTypeInformation # Вывод в CSV файл результата
В случае же, когда требуется выполнить обратную задачу, по списку серверов определить их IP адрес, можно использовать командлет:[System.Net.Dns]::GetHostAddresses(“DNSname“)
Похожие статьи:
04 февраль 2021, Четверг
Как запустить Adobe Flash Player
01 декабрь 2020, Вторник
PowerShell: Сгенерировать список доступных внешних (белых) IP адресов
04 декабрь 2020, Пятница
PowerShell: Получить список DNS имен по списку IP адресов (и наоборот)
25 май 2020, Понедельник
Nginx: Ограничить доступ к каталогам сайта по IP адресам
05 февраль 2020, Среда
Пустые VMDK диски виртуальной машины VMware
Комментарии: