VBscript以定位NIC的特定IP并更改其DNS设置

时间:2015-03-05 04:56:43

标签: vbscript dns

我目前的任务是整理一个脚本,该脚本将更改15,000台服务器的DNS设置。但是,除了当前的DNS IP之外,这些NIC没有共同的唯一标识。我的问题,是否有可能以某种方式让我的脚本执行ip​​fonfig / all然后如果其中一个NIC的报告返回当前的DNS设置,则针对新更新的设置定位该NIC?

我当前正在使用以下脚本,直到我意识到某些NIC不会被调用" Production"。欢迎任何建议! (powershell不是一个选项,因为我们可能会针对一些非常旧的服务器)

Dim strDns1
Dim strDns2

strDns1 = "10.10.10.10"
strDns2 = "10.10.10.10"

Set objShell = WScript.CreateObject("Wscript.Shell")
objShell.Run "netsh interface ip set dns name=""Production"" static "& strDns1, 0, True
objShell.Run "netsh interface ip add dns name=""Production"" addr="& strDns2, 0, True
Set objShell = Nothing
WScript.Quit

2 个答案:

答案 0 :(得分:0)

您可以使用如下脚本执行ip​​config查询:

Set wso = CreateObject("WScript.Shell") 

Set execo = wso.Exec("ipconfig /all")
Set stdout = execo.StdOut
While Not stdout.AtEndOfStream
    cmdOutput = cmdOutput & VbCrLf  & stdout.ReadLine
Wend

wscript.echo cmdOutput

主要问题是这只是一个字符串,所以你必须自己解析它,这很烦人,可能容易出错。

我宁愿建议你看一下wmi课程

Win32_NetworkAdapterConfiguration

有很多关于网络连接的信息。只有这个WMI类的警告是,它将许多值存储在数组中而不是字符串中,因此您不能轻易地查询所有内容。选择要查询的东西,这是一个像DNSDomain这样的字符串,或者只是处理脚本中的逻辑。

答案 1 :(得分:0)

我同意 Syberdoor ,你应该使用Wmi Class

  

Win32_NetworkAdapterConfiguration的

此代码为您提供了一些信息:

Call ListDNSInfo()
'********************************************************************
Sub ListDNSInfo()
    Dim ComputerName,IPConfigSet,IPConfig,BailObtenu,BailExpirant
    ComputerName="."
    On error resume next 
    set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & ComputerName).ExecQuery _ 
    ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE") 
    If Err.Number <> 0 Then 
        wscript.echo " - non accessible -" 
    Else 
        for each IPConfig in IPConfigSet 
            BailObtenu = IPConfig.DHCPLeaseObtained
            BailExpirant = IPConfig.DHCPLeaseExpires
'---- Convertion des date et heure d'obtention et d'expiration des baux DHCP en un format lisible par l'utilisateur. ----
            BailObtenu = mid(BailObtenu, 7, 2) & "/" & mid(BailObtenu, 5, 2) & "/" & mid(BailObtenu, 1, 4) & " - " & mid(BailObtenu, 9, 2)& ":" & mid(BailObtenu, 11, 2)& ":" & mid(BailObtenu, 13, 2)
            BailExpirant = mid(BailExpirant, 7, 2) & "/" & mid(BailExpirant, 5, 2) & "/" & mid(BailExpirant, 1, 4) & " - " & mid(BailExpirant, 9, 2)& ":" & mid(BailExpirant, 11, 2)& ":" & mid(BailExpirant, 13, 2)

            MsgBox " Configuration réseau de l'ordinateur " & ComputerName & vbcrlf & vbcrlf & _ 
            "Nom Machine " & vbtab & " : " & IPConfig.DNSHostName & vbcrlf & _ 
            "Carte active" & vbtab & " : " & IPConfig.Description & vbcrlf & _ 
            "Adresse MAC " & vbtab & " : " & IPConfig.MACAddress & vbcrlf & _ 
            "DHCP Activé" & vbtab & " : " & IPConfig.DHCPEnabled & vbcrlf & _
            "Adresse IP " & vbtab & " : " & IPConfig.IPAddress(0) & vbcrlf & _
            "Masque " & vbtab & vbtab & " : " & IPConfig.IPSubnet(0) & vbcrlf & _
            "Passerelle     " & vbtab & " : " & IPConfig.DefaultIPGateway(0) & vbcrlf & _   
            "Serveur DHCP " & vbtab & " : " & IPConfig.DHCPServer & vbcrlf & vbcrlf & _
            "Serveur DNS " & vbtab & " : " & IPConfig.DNSServerSearchOrder(0) & vbcrlf & _
            "             " & vbtab & vbtab & " : " & IPConfig.DNSServerSearchOrder(1) & vbcrlf & _
            "Serveur WINS " & vbtab & " : " & IPConfig.WINSPrimaryServer(0) & vbcrlf & _
            "             " & vbtab & vbtab & " : " & IPConfig.WINSSecondaryServer(0) & vbcrlf & vbcrlf & _
            " Bail obtenu " & vbtab & " : " & BailObtenu & vbcrlf & _
            " Bail expirant " & vbtab & " : " & BailExpirant _                    
            ,VbInformation,"Configuration réseau de l'ordinateur " 
        Next 
    End If
End Sub