2016-04-13 1 views
0

Я пытаюсь добавить IP-адрес к этому скрипту, было бы идеально, если бы я мог заставить это работать. Любая помощь приветствуется. Входные файлы имеют имена хостов, и мне нравится получать IP-адрес в csv, пожалуйста.Получение IP-адреса при использовании Test-Connection

$servers = Get-content "servers.txt" 
$collection = $() 
foreach ($server in $servers) 
{ 
    $status = @{ "ServerName" = $server; "TimeStamp" = (Get-Date -f s);"IP" = what to put here? } 
    if (Test-Connection $server -Count 1 -ea 0 -Quiet) 
    { 
     $status["Results"] = "Up" 
    } 
    else 
    { 
     $status["Results"] = "Down" 
    } 
    New-Object -TypeName PSObject -Property $status -OutVariable serverStatus 
    $collection += $serverStatus 

} 
$collection | Export-Csv -LiteralPath .\ServerStatus.csv -NoTypeInformation 

ответ

3

Использование -Quiet подавит информацию, которую вы ищете. Удалите тишину и вместо этого запишите результаты в переменную, которую вы можете запросить как для успеха, так и для ipaddress.

$status = @{ "ServerName" = $server; "TimeStamp" = (Get-Date -f s)} 
$result = Test-Connection $server -Count 1 -ErrorAction SilentlyContinue 
if ($result) 
{ 
    $status.Results = "Up" 
    $status.IP = ($result.IPV4Address).IPAddressToString 
} 
else 
{ 
    $status.Results = "Down" 
    $status.IP = "N/A" 
} 

Я не уверен, приведет ли эта логика к вводящей в заблуждение информации, но я буду играть с ней на всякий случай.

Если вы уже сделали переход на IPv6, то вы можете быть более заинтересованы в ($result.IPV6Address).IPAddressToString

+1

также '($ result.IPV6Address) .IPAddressToString' тоже работает, если ваши серверы перешли к новой конфигурации IP :) – krousemw

+0

СПАСИБО ВАС !!!! Это отлично поработало. – Steve

+0

Могу ли я добавить NSLOOKUP к этому для тех, которые не удалось? – Steve