找回密码
 加入
搜索
查看: 4392|回复: 6

[AU3基础] [已解决]WMI获取网卡信息DNS只填写一个出错!

  [复制链接]
发表于 2011-6-6 22:10:24 | 显示全部楼层 |阅读模式
本帖最后由 clang 于 2011-6-7 00:56 编辑

使用WMI获取网卡信息,当DNS只填写主DNS时,使用$objItems.DNSServerSearchOrder(1)获取备用DNS信息出错,XP下备用DNS显示乱码,Win7下则程序报错退出,请问有什么办法屏蔽错误让脚本继续执行?谢谢了


代码:
Global Const $wbemFlagReturnImmediately = 0x10
Global Const $wbemFlagForwardOnly = 0x20
Global Const $strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled != 0", "WQL",$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
                If IsObj($colItems) then
                        $i = 1
                        For $objItem In $colItems
                                
                                If @error = -1 Then ContinueLoop
                                $strIPAddress = $objItem.IPAddress(0)
                                $strIPSubnet = $objItem.IPSubnet(0)
                                $dns1= $objItem.DNSServerSearchOrder(0)
                                $dns2= $objItem.DNSServerSearchOrder(1)
                                
                                MsgBox(0,"", "[网卡" & $i & "]" & @crlf & "网卡型号=" &  $objItem.Description & @crlf & "网卡IP=" &  $strIPAddress & @crlf & "网卡掩码=" &  $strIPSubnet & @crlf & "网卡网关=" &  $objItem.DefaultIPGateway(0) & @crlf & "网卡主DNS=" &  $dns1 & @crlf & "网卡备DNS=" &  $dns2 & @crlf & "网卡地址=" &  $objItem.MACAddress)                        
                                $i = $i + 1
                        Next
                Endif
把所有DNS都写到一行了,有兴趣的可以自己改,更改后的代码:
Global Const $wbemFlagReturnImmediately = 0x10
Global Const $wbemFlagForwardOnly = 0x20
Global Const $strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled != 0", "WQL",$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
                If IsObj($colItems) then
                        $i = 1
                        For $objItem In $colItems
                                
                                If @error = -1 Then ContinueLoop
                                $strIPAddress = $objItem.IPAddress(0)
                                $strIPSubnet = $objItem.IPSubnet(0)
                                $dnsnum = UBound($objItem.DNSServerSearchOrder)-1
                                        $sss= ""
                                        ;MsgBox(0,"","网卡型号=" &  $objItem.Description & @crlf & $dnsnum)
                                        For $i=0 To $dnsnum
                                                $strdns = $objItem.DNSServerSearchOrder($i)
                                                $sss = $sss & $strdns & "/"
                                                $dns = StringTrimRight($sss, 1)
                                        Next
                                
                                MsgBox(0,"", "[网卡" & $i & "]" & @crlf & "网卡型号=" &  $objItem.Description & @crlf & "网卡IP=" &  $strIPAddress & @crlf & "网卡掩码=" &  $strIPSubnet & @crlf & "网卡网关=" &  $objItem.DefaultIPGateway(0) & @crlf & "网卡DNS=" &  $dns & @crlf & "网卡地址=" &  $objItem.MACAddress)                        
                                $i = $i + 1
                        Next
                Endif

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-6-6 23:08:07 | 显示全部楼层
加个if else判断下$dns2
 楼主| 发表于 2011-6-6 23:09:37 | 显示全部楼层
加个if else判断下$dns2
sunafter 发表于 2011-6-6 23:08



    一样报错!
发表于 2011-6-6 23:54:36 | 显示全部楼层
本帖最后由 amnesiac 于 2011-6-6 23:58 编辑

遇到同样的问题, 一同求教
发表于 2011-6-7 10:34:37 | 显示全部楼层
学习学习!!
发表于 2011-6-8 16:34:43 | 显示全部楼层
在:
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")

下边加:
If @error Then
    MsgBox(0, "test", "Error Getting an active Object. Error code: " & Hex(@error, 8))
    Exit
EndIf

测试一下吧。。。。
发表于 2011-6-8 16:45:51 | 显示全部楼层
可以将获取弄成设置吗?我很需要这个~~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 04:20 , Processed in 0.084494 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表