代码之家  ›  专栏  ›  技术社区  ›  Tyler S

Powershell脚本服务器ping输出

  •  0
  • Tyler S  · 技术社区  · 6 年前

    我已经有一段时间没有使用powershell了,但仍然了解基本知识。我试图创建一个脚本,通过检查主机名IP地址来输出csv文件。如果IP地址与主机名匹配正确,则会输出YES。如果IP与主机名不符,它会输出NO。我在这里搜索过,也在其他网站上搜索过,没有找到。这是我的。任何帮助都将不胜感激。感谢您建立了一个伟大的社区!:

    $names = Get-content "hnames.txt"
    
    foreach ($name in $names){
      if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue){
        Write-Host "$name,up"
      }
      else{+
        Write-Host "$name,down"
      }
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   StaceyGirl    6 年前

    我会这样做:

    # example data saved in .\compinfo.csv:
    hname,ip
    comp1,192.168.1.10
    comp2,192.168.1.11
    
    # importing the example data
    $compinfo = import-csv .\compinfo.csv
    
    $lookupData = foreach($comp in $compinfo)
    {
        $nslkup = [System.Net.DNS]::GetHostEntry($comp.hname)
        $ping = (Test-Connection -ComputerName $comp.hname -Count 1 -ErrorAction SilentlyContinue)
        if($ping)
        {
            $status = "up"
        }
        else
        {
            $status = "down"
        }
        if($nslkup.AddressList.IPAddressToString -eq $comp.ip)
        {
            $ipgood = $true
        }
        else
        {
            $ipgood = $false
        }
        [pscustomobject]@{
            computerName = $comp.hname
            expectedIp = $comp.ip
            status = $status
            goodIp = $ipgood
            dnsName = $nslkup.hostname
        }
    } 
    
    $lookupData | export-csv .\lookups.csv -NoTypeInformation