簡體   English   中英

檢查多個服務器ip地址多個nics powershell

[英]check mulitple servers ip address multiple nics powershell

我管理着大量服務器,我們設置了服務器,您可以在其中按服務器名稱(DNS記錄)進行ping操作。有些服務器還具有多個nic。 因此,我需要的是一個可以對多個服務器執行ping操作的腳本,它將返回該服務器的每個nic的ip地址。如果可以將其導出到csv,那也很好。

這應該可以幫助您:

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

您可能需要針對多個網絡接口進行一些更改

在這里,這對我有用,我用它來從服務器檢索所有IPv4地址。 請記住,此測試可以先嘗試對其進行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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM