2012-03-14 13 views
0

私は大量のサーバを管理しており、servername(DNSレコード)でpingできる場所を設定しています。私のサーバの中には複数のnicsもあります。だから私が必要とするのは、複数のサーバにpingできるスクリプトです。それは、そのサーバの各NICのIPアドレスとともに戻ってくるでしょう。それがCSVにエクスポートできれば、それは素晴らしいものになります。複数のサーバをチェックするip address複数のnics powershell

答えて

0

これはあなたを助ける必要があります。

function PingServer($serverName) 
{ 
    (Test-Connection $serverName -Count 1 -ErrorAction SilentlyContinue).IPV4Address.IPAddressToString 
} 

$servers = "server1.com", "server2.com", "server3.com" 

$hash = @{} 
foreach($server in $servers) 
{ 
    $hash.Add($server, (PingServer $server)) 
} 
$hash.GetEnumerator() | ForEach-Object { New-Object PSObject -Property @{ ServerName = $_.Key; IPAddress = $_.Value } | Select-Object -Property ServerName, IPAddress } | Export-CSV -Path c:\PST\1.csv -NoTypeInformation 

をあなたは、これは私のために動作し、私はAからのすべてのIPv4アドレスを取得するためにそれを使用し、それを複数のネットワーク・インターフェースここ

+0

私は各サーバー名の後に.comが必要ですか?また、どの部分がNICを識別していますか? – BigCAT41

+0

@ BigCAT41異なるNICをpingしたときと同じように追跡するのは簡単ではありません。単一のアドレスから応答を送信します。 '(Test-Connection $ serverName -Count 1 -ErrorAction SilentlyContinue).IPV4Address.IPAddressToString ' –

+0

ありがとうございました。私が本当に心配する必要があるのは、なぜ私がすべてのNICを追跡する必要があるのか​​という異なるIPアドレスです。 – BigCAT41

0

のビットを変更する必要がありますサーバ。このテストでは、情報を取得する前に最初にpingを実行し、WMIを使用して必要なデータを取得します。

#Get NIC IP Addresses 
Function Get-NICIPAddresses 
{ 
    param 
    (
     $ComputerName 
    ) 

    Try 
    { 
     $NICIPInformation = gwmi Win32_NetworkAdapterConfiguration -Filter "IPEnabled=TRUE" -ComputerName $ComputerName -ErrorAction "Stop" 
    } 
    Catch 
    { 
     Write-Host "$($_.exception)" -ForegroundColor Yellow 
     return $Null 
    } 

    return $NICIPInformation 
} 

$Computer = "127.0.0.1" 

if (Test-Connection -Quiet $Computer) 
{ 
    #WMI IP Addresses 
    [array]$IPInformation = Get-NICIPAddresses $Computer 

    #IP Addresses 
    if ($IPInformation.Count -gt 0) 
    { 
     #Array to hold all IP Addresses 
     [array]$IPAddresses = @() 

     #Loop through the IP Addresses, look for all IP addresses that match the AddressFamily "InterNetwork" - AKA IPv4 - http://msdn.microsoft.com/en-us/library/system.net.sockets.addressfamily.aspx 
     foreach ($IPAddressInformation in $IPInformation) 
     { 
      #Use System.Net.IPAddress array to match the IP address values to acutal IP Addresses 
      $IPAddresses += [System.Net.IPAddress[]]$IPAddressInformation.IPAddress | ? {$_.AddressFamily -eq "InterNetwork"} 
     } 

     #Sort the values from smallest to largest IP addresses 
     $IPAddresses = $IPAddresses | % {$_.IPAddressToString} | Sort {"{0:d3}.{1:d3}.{2:d3}.{3:d3}" -f @([int[]]$_.split("."))} 

     #Return string results, or $Null depending upon input. 
     if ($IPAddresses.Count -gt 0) 
     { 
      $IPAddresses = $IPAddresses -Join " ; " 
     } 
     else 
     { 
      $IPAddresses = $Null 
     } 
    } 
    else 
    { 
     $IPAddresses = $Null 
    } 

    #Return NIC info 
    foreach ($NIC in $IPInformation) 
    { 
     $NIC 
    } 

    #Current IPv4 Addresses 
    $IPAddresses 
} 
関連する問題