Импортировать список IP-адресов, разрешить их имена хостов, экспортировать IP и имена хостов в электронную таблицу - PullRequest
1 голос
/ 28 февраля 2020

Завершите Noob PowerShell здесь. Я пытаюсь сделать следующее:

  1. Импортировать список IP-адресов из текстового файла.
  2. Получить имя хоста каждого IP-адреса. Если это невозможно, укажите причину ошибки.
  3. Экспортируйте IP-адрес и имя хоста (или ошибку) построчно в CSV.

Я пытался использовать следующий сценарий, однако Я не знаю, что это за IP-адрес, поскольку есть некоторые ошибки:

get-content .\dnsip.txt | ForEach-Object {([system.net.dns]::GetHostByAddress($_)).hostname

Может кто-нибудь помочь мне написать сценарий, который будет делать это?

Спасибо!

1 Ответ

3 голосов
/ 28 февраля 2020

Вы можете сделать следующее:

Get-Content .\dnsip.txt | ForEach-Object {
    $obj = "" | Select-Object IPAddress,Hostname
    try { 
        $obj.Hostname = ([system.net.dns]::GetHostByAddress($_)).hostname
    } catch { 
        $obj.Hostname = 'Unknown Host'
    } 
    $obj.IPAddress = $_
    $obj
} | Export-Csv -Path Output.csv -NoType

Объяснение:

Во время каждой итерации создается новый объект $obj с двумя свойствами, IPAddress и Hostname, устанавливаются как пустые строки. Блок try {} используется, чтобы попытаться получить значение Hostname, используя ваш метод. Если это удастся, Hostname будет присвоено значение, возвращаемое командой. Если это вызывает исключение, оно будет перехвачено блоком catch {}. В стороне catch {} свойству Hostname присваивается значение Unknown Host. Затем IPAddress назначается текущий обработанный элемент ($_) из Get-Content.

Все пользовательские объекты экспортируются в Output.csv через Export-Csv. Переключатель -NoType предотвращает печать информации о типе данных в верхней части файла CSV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...