Преобразовать результат цикла for в таблицу
Я не могу преобразовать следующий цикл for в таблицу:
for ($i=1; $i -le 10; $i++)
{
$ErrorActionPreference= 'silentlycontinue'
Write-Progress -PercentComplete ((100*$i)/255) -Activity "Gathering IP's"
nslookup("192.168.2." + $i) | Format-Table
}
Единственное, что происходит, это то, что для каждого адреса, который недоступен, он показывает имя маршрутизатора /ip:
Server: easy.box.local
Address: 192.168.2.1
Name: easy.box.local
Address: 192.168.2.1
Server: easy.box.local
Address: 192.168.2.1
Я хочу отсортировать его как таблицу, чтобы сделать ее более удобной и удобной для просмотра
2 ответа
Если вы работаете на компьютере с Windows 8 или более поздней версией, вы можете использовать [System.Net.Dns]::Resolve (обратите внимание, что в случае неудачного поиска в качестве имени хоста будет указан IP-адрес)
for ($i=1; $i -le 10; $i++) {
Write-Progress -PercentComplete ((100*$i)/255) -Activity "Gathering IP's"
[System.Net.Dns]::Resolve("192.168.2." + $i) | Select HostName,AddressList
}
Вы можете использовать регулярные выражения, чтобы получить информацию и создать новый объект, который сделает ее сортируемой:
$ErrorActionPreference= 'silentlycontinue'
for ($i=1; $i -le 10; $i++)
{
Write-Progress -PercentComplete ((100*$i)/255) -Activity "Gathering IP's"
$nsLookupResult = nslookup("192.168.2." + $i)
[PSCustomObject]@{
Server = [regex]::Match($nsLookupResult,'Server:\s+(\S+)').Groups[1].Value
Address = [regex]::Match($nsLookupResult,'Address:\s+(\S+)').Groups[1].Value
}
}
Выход:
Server Address
------ -------
easy.box.loca 192.168.150.254
easy.box.loca 192.168.150.254
easy.box.loca 192.168.150.254
easy.box.loca 192.168.150.254
easy.box.loca 192.168.150.254
easy.box.loca 192.168.150.254
easy.box.loca 192.168.150.254
easy.box.loca 192.168.150.254
easy.box.loca 192.168.150.254
easy.box.loca 192.168.150.254
Примечание. Там может быть встроенный командлет PowerShell, который сделает это устаревшим.
Примечание 2: Вам нужно только установить $ErrorActionPreference
однажды вот почему я установил это вне цикла for.