Вы можете сделать следующее:
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.