【问题标题】:.vbs script to change Connection Specific DNS suffix.vbs 脚本更改连接特定的 DNS 后缀
【发布时间】:2014-11-04 08:25:26
【问题描述】:

我正在寻找一种方法,让这个 .vbs 文件为已知名称为 LAN 的以太网适配器添加连接特定的 DNS 后缀

代码形成了一个小的 shell 脚本:

  1. 更改主 DNS 后缀
  2. 刷新 DNS
  3. 检查 IP 详细信息以确保一切正常
  4. 更改启动类型或服务
  5. 启动上述服务
  6. Ping 已知服务器以确保网络连接

似乎找不到任何可行的代码来完成第一步。目前我有:

 'add dns

Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Policies\Microsoft\Windows NT\DNSClient"
oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
strValueName = "AppendToMultiLabelName"
'Enabled
strValue = "mysuffix.com"
oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue


'flush dns

set shell = createobject("wscript.shell") 
shell.run("ipconfig /flushdns")
Wscript.echo "DNS Flushed."


'check DNS

Set objShell = CreateObject("WScript.Shell")
Set objScriptExec = objShell.Exec("ipconfig /all")
strIpConfig = objScriptExec.StdOut.ReadAll
WScript.Echo strIpConfig


'start McAfee

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colServiceList = objWMIService.ExecQuery _
    ("Select * from Win32_Service where Name = 'enterceptAgent'")

For Each objService in colServiceList
    If objService.State = "Stopped" Then
        objService.StartService()
        Wscript.Sleep 5000
        Wscript.Echo "McAfee Started"
    Else
        Wscript.Echo "McAfee already running"
        Wscript.Sleep 5000
    End If
    errReturnCode = objService.ChangeStartMode("automatic")   
Next

'network test

set shell = createobject("wscript.shell") 
shell.run("ping pmo2 -t")

干杯

【问题讨论】:

  • 恕我直言,Primary DNS Suffix 设置至少有两个注册表位置;我不确定它的偏好(对SuperUser 的猜测):键HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Paramaters,值DomainSearchList;和键HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient ,值NV PrimaryDnsSuffix。任何注册表操作都可能需要重新启动才能应用...
  • 感谢 JosefZ,我发现要操作的密钥在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Adapters 但需要选择正确的 GUID,这意味着手动操作比手动操作更容易有一个脚本,但我会考虑你的建议

标签: vbscript dns cmd command


【解决方案1】:

试试这个(配置到正确的 GUID,参见objNetCard.SettingID 属性):

option explicit
'On Error Resume Next
On Error GoTo 0
Dim strResult: strResult = Wscript.ScriptName

Dim strComputer, objWMIService, colNetCards, objNetCard
strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

Set colNetCards = objWMIService.ExecQuery _ 
    ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True") 

For Each objNetCard in colNetCards
  strResult = strResult _
    & vbNewLine & objNetCard.Caption & vbTab & "'" & objNetCard.DNSDomain & "'" & vbTab & CBool( IsEmpty( objNetCard.DNSDomain)) & vbTab & CBool( IsNull( objNetCard.DNSDomain))
  strResult = strResult _
    & vbNewLine & objNetCard.SetDNSDomain("mysuffix.com") 
''    strResult = strResult & vbNewLine & objNetCard.SetDNSSuffixSearchOrder("mysuffix.com") 

Next 
'strResult = strResult & vbNewLine

Wscript.Echo strResult

SetDNSDomain method return codes

【讨论】:

    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多