• 检查dns服务器是否可用


    #%windir%system32WindowsPowerShellv1.0powershell.exe D:PSScriptERP_Production_ScriptERPRF_UpdateCheck.ps1
    ############脚本功能说明-2014-10-21############
    #该脚本用来判断当前的DNS服务器是否可用,如果第一个DNS服务器可用,则脚本结束,否则将继续判断其他DNS服务器是否可用,最终将可用DNS服务器设置为第一个
    ###############################################

    #####脚本开始######
    #定义用于判断的域名
    $dname = "www.baidu.com"
    #$dname = "chkdns.idc4"

    #根据是否配置网关查找使用中网卡
    $index = (gwmi Win32_NetworkAdapterConfiguration |?{ $_.DefaultIPGateway -ne $null}).Index
    $dnss = (gwmi Win32_NetworkAdapterConfiguration -filter "index = $index").DNSServerSearchOrder
    $ConnectionID = (gwmi win32_networkadapter -filter "index = $index").NetConnectionID
    #初始化用于存储DNS服务器列表的临时对象
    $dnslists_new = $null
    $dnslists_new = @()

    #如果第一个DNS服务器可用,则脚本中断执行
    $nsresult = nslookup.exe $dname $dnss[0]
    If (!([string]::concat($nsresult)).contains("request timed out"))
    {break}
    Else {
    #记录第一个不可用DNS服务器IP到临时对象
    $dnslist=""|select IP,Status
    $dnslist.IP = $dnss[0]
    $dnslist.Status = "Error"
    $dnslists_new +=$dnslist
    #判断剩余的DNS服务器IP是否可用,并将其记录到临时对象
    foreach ($dns in $dnss[1..$dnss.count])
    {
    If ($dns -ne $null)
    {
    $nsresult = nslookup.exe $dname $dns
    #[string]::concat($nsresult)
    If (!([string]::concat($nsresult)).contains("request timed out"))
    {
    $dnslist=""|select IP,Status
    $dnslist.IP = $dns
    $dnslist.Status = "OK"
    $dnslists_new +=$dnslist
    }
    Else {
    $dnslist=""|select IP,Status
    $dnslist.IP = $dns
    $dnslist.Status = "Error"
    $dnslists_new +=$dnslist
    }
    }
    }
    #$dnslists_new
    #判断当前系统是2003(5),还是2008,在设置DNS服务器的时候所使用的命令不同
    If ((gwmi win32_operatingsystem).version.split(".")[0] -eq 5)
    {
    #查找可用的DNS服务器列表
    [array]$dnslists_ok = $dnslists_new |? {$_.Status -eq "OK"}
    If ($dnslists_ok -ne $null)
    {
    $dnsserver0 = $dnslists_ok[0].IP
    netsh.exe interface ip set dns "$ConnectionID" static $dnsserver0 primary
    $dnslists_ok[1..$dnslists_ok.count] | % { netsh.exe interface ip add dns "$ConnectionID" $_.IP }
    }
    #查找不可用的DNS服务器列表
    $dnslists_new |? {$_.Status -ne "OK"} | % { netsh.exe interface ip add dns "$ConnectionID" $_.IP }
    }
    Else
    {
    #查找可用的DNS服务器列表
    [array]$dnslists_ok = $dnslists_new |? {$_.Status -eq "OK"}
    If ($dnslists_ok -ne $null)
    {
    $dnsserver0 = $dnslists_ok[0].IP
    netsh.exe interface ip set dnsservers "$ConnectionID" static $dnsserver0 primary validate=no
    $dnslists_ok[1..$dnslists_ok.count] | % { netsh.exe interface ip add dnsservers "$ConnectionID" $_.IP validate=no }
    }
    #查找不可用的DNS服务器列表
    $dnslists_new |? {$_.Status -ne "OK"} | % { netsh.exe interface ip add dnsservers "$ConnectionID" $_.IP validate=no }
    }


    }

    #查看当前的DNS服务器列表
    #$dnss=gwmi win32_networkadapter -filter "NetConnectionStatus = 2"|foreach {(gwmi Win32_NetworkAdapterConfiguration -filter "index = $($_.index)").DNSServerSearchOrder}
    #$dnss

  • 相关阅读:
    tomcat虚拟机配置
    日期时分秒毫秒+3位随机数
    springmvc action访问路径不带项目名
    nginx 配置模板
    AES加密
    spring-mvc里的 <mvc:resources> 及静态资源访问
    MySQL——事务(Transaction)
    mysql索引
    < aop:aspect>与< aop:advisor>的区别
    annotation-driven
  • 原文地址:https://www.cnblogs.com/dreamer-fish/p/4032110.html
Copyright © 2020-2023  润新知