| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
为什么我在试图确定一个 IP 地址时得到了一个错误?
为什么我在试图确定一个 IP 地址时得到了一个错误?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-23 19:28:16
问:

嗨,Scripting Guy!我试图在一台计算机上确定 IP 地址,但是我总是得到 类型不匹配 错误。您知道是为什么吗?

-- AQ, Jacksonville, FL

答:

你好,AQ.实际上,我们的确 知道您为什么会得到一个“类型不匹配”错误,在使用 WMI 的 Win32_NetworkAdapterConfiguration 类的时候,这是一个常见错误。在您的脚本中,最有可能引起问题的一行代码是:

Wscript.Echo "IP Address:" & objItem.IPAddress

那么,究竟是什么问题呢?好,IPAddress 属性实际以数组形式进行存储;这就是为什么可以向单个网络适配器分配多个 IP 地址的原因。您将 IPAddress 当作一个字符串或者一个数值型变量加以使用,而实际并不是这样,数组是一个完全不同的数据类型。因此会出现“类型不匹配”错误。运行下面这个脚本,你可以得到同样的错误,这个脚本试图用“dog”乘以“cat”:

A = "dog" B = "cat" C = A * B

那现在我们知道问题所在了,解决办法是什么呢?办法实际很简单:只需要对 IPAddress 数组进行循环处理,并且显示找到的所有值就可以了。顺便说一句,大多数时候每个网络适配器只有一个 IP 地址,但是这并没有关系:无论是 1 个 IP 地址,100 个 IP 地址,或者是 0 个 IP 地址,都需要使用一个 For Each 循环,找出数组中的所有项目。您的脚本可以简化为以下的代码:

strComputer = "."

Set objWMIService = GetObject _

    ("winmgmts://" & strComputer & "/root/cimv2")

Set colItems = objWMIService.ExecQuery _

    ("Select * From Win32_NetworkAdapterConfiguration " & _

        "Where IPEnabled = True")

For Each objItem in colItems

    Wscript.Echo "Caption: " & objItem.Caption

    For Each objAddress in objItem.IPAddress

        Wscript.Echo "IP Address: " & objAddress

    Next

Next

再奉送一个您没有问到的问题:我们怎么知道 IPAddress 以数组形式存储呢?嗯,“类型不匹配”错误为我们提供了一个好的线索,然后我们打开 Wbemtest 并找到 Win32_NetworkAdapterConfiguration 类,确认了这一点。正如您看到的下面这幅屏幕截图,的确是以数组形式存储的:

Hey, Scripting Guy!

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    深入浅出地讲解什么是子
    什么是协议检查器(Prot
    构筑Linux防火墙之什么是
    IIS5.0为什么不能正常解
    IIS5.0为什么不能正常解
    您到底需要什么 关注防火
    什么是sniffer和如何防止
    我们为什么需要防火墙?
    什么都能“拍”一美国妇
    什么都能“拍”一美国妇

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览