| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何验证是否安装了 ADAM?
如何验证是否安装了 ADAM?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 11:07:14
问:

您好,脚本专家!如何验证是否安装了 ADAM?

-- CW

答:

您好,CW。尽管“信任,但也要验证”这句话常会给前总统 Ronald Reagan 赢得赞誉,我们却始终认为这听起来更像是系统管理员会说的话:“您说已经在那台计算机上安装了 ADAM,我当然信任您。我只是需要验证一下是否安装了 ADAM。这完全是两回事。”

那么如何能验证计算机上是否安装了 ADAM(Active Directory 应用程序模式)呢?下面提供了一种方法,它也是通常要归功于前总统 Reagan 的一种脚本解决方案:

strComputer = "."



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



Set colServices = objWMIService.ExecQuery _

    ("Select * from Win32_Service where Name Like '%ADAM_%'")



If colServices.Count = 0 Then

    Wscript.Echo "ADAM is not installed."

Else

    For Each objService in colServices

        Wscript.Echo objService.Name & " -- " & objService.State

    Next

End If

这个脚本所依赖的条件是 ADAM 作为服务运行:如果脚本发现 ADAM 服务的实例,就会知道已经安装了 ADAM。不可否认,这里有一个问题:ADAM 的每个实例都以不同的名称作为独立的服务运行。所幸还有一种简单的方法可以确定是否安装了 ADAM 的任何实例。这也正是我们接下来所要讨论的。

该脚本先是连接到本地计算机上的 WMI 服务;照例,只需将计算机名称赋予变量 strComputer,就可将此脚本修改为可以对远程计算机进行操作。接下来我们遇到了下面这行代码:

Set colServices = objWMIService.ExecQuery _

    ("Select * from Win32_Service where Name Like '%ADAM_%'")

这行代码的作用是使用 Like 运算符返回服务名称中包含字符 ADAM_ 的所有服务。使用 WMI 的 LIKE 运算符时,两个百分号代表“任何内容”。这意味着我们的查询的含义是:“返回 Name 属性中含有字符 ADAM_ 的所有服务。我不关心 ADAM_ 的前面或后面是什么内容;我只关心 Name 中的某处存在字符串 ADAM_。”

这么做的原因何在?嗯,正如我们说明过的,ADAM 的每个实例都作为独立的服务运行;不过,每个服务名称都将以字符 ADAM_ 开头。例如,如果有名为 Fabrikam 的 ADAM 实例,服务名称将是 ADAM_Fabrikam;如果有名为 Contoso 的 ADAM 实例,服务名称将是 ADAM_Contoso。我们对查询进行了相应的构建,以确保这两个实例中的任何一个(或 Name 中有字符 ADAM_ 的任何其他服务)都能作为服务集合的一部分而返回。

注意:当然,您可能在想,“等一下,脚本专家:不是只有 Windows XP 和 Windows Server 2003 才支持 LIKE 运算符吗?如果是在 Windows 2000 上运行 ADAM,该怎么办呢?”是啊,您说的没错:只有 Windows XP 和 Windows Server 2003 才支持 LIKE 运算符。不过,在这里应该不会造成多大的问题,因为 ADAM 本身仅受 Windows XP 和 Windows Server 2003 的支持。由于无法在 Windows 2000 上运行 ADAM,也就不必担心 Windows 2000 计算机上是否安装了 ADAM,一定是没有安装。当然,您将只能在 Windows XP 或 Windows Server 2003 计算机上运行此脚本。但如果您要使用 ADAM 的话,我们认为您将能够找到一台没有太多问题的计算机。

检索服务集合后,我们会遇到以下 If Then Else 代码块:

If colServices.Count = 0 Then

    Wscript.Echo "ADAM is not installed."

Else

    For Each objService in colServices

        Wscript.Echo objService.Name & " -- " & objService.State

    Next

End If

它的作用是检查所返回集合的 Count 属性是否等于 0。Count 会让我们了解集合中项的数目:如果 Count 等于 0,则表明集合中没有项。进而意味着计算机中没有安装 ADAM 的实例,我们将回显那条消息。

如果 Count 大于 0,则表明至少找到了一个 ADAM 实例。在这种情况下,我们建立一个简单的 For Each 循环以遍历所有 ADAM 实例,并且对于每一个实例,都将报告其 Name 和 State(即运行、停止、暂停等)。

这就是您需要做的一切,运行此脚本就行了。您说什么?您不信任我们是什么意思?噢,我们明白了:您确实信任我们,您只是想验证脚本是否的确有效。我们能够理解:这完全是两回事。请试一试,看看会发生什么。

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

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    Microsoft索引服务查询验
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    基于SHA和一次性口令验证
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客

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