2016-12-05 6 views
1

Я не могу преобразовать следующий цикл в таблице:Conver результат для цикла к столу

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 

Я хочу, чтобы отсортировать его, как стол, чтобы сделать его более удобно и более видимыми

+0

Для другого подход, попробуйте «Get-NetIPAddress -IPAddress 192.168.2. * | Format-Table» –

ответ

1

Если вы на 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 
} 
+0

Это на самом деле довольно аккуратно! Большое спасибо за ответ –

1

Вы можете использовать регулярное выражение для СОР б информацию и создать новый объект, который сделает его сортировкой:

$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.

+0

спасибо за ответ, но если вы протестируете свой скрипт, вы заметите, что он всегда будет выводить те же ip-запросы, если поиск был успешным или нет –

+0

Thats Результат от nslookup –