用vbs实现确定是否安装了某个特定的补丁

问:
您好,脚本专家!如何使用脚本来确定是否安装了某个特定的补丁?

-- GM

答:
您好,GM。您知道,不久以前这个问题可能被我们“不小心”扔进了废纸篓并且假装从未看到。为什么?嗯,以前的时候,我们获得关于补丁、快速修复和其他更新的信息的唯一方法就是使用 WMI 类 Win32_QuickFixEngineering。这样挺好的,但是由于各种原因,Win32_QuickFixEngineering 偶尔会丢失确实已经安装了的补丁;更糟糕的是,在 Windows 2000 计算机上,Win32_QuickFixEngineering 有时会处于待命状态,而不返回任何信息。(如何解决这一问题?当然是指通过安装补丁来解决。)无论如何都不能算一件好事。

但是,那些日子都过去了。现在,多亏具有重大改进的新 Windows Update 服务,要确定计算机上已安装了和尚未安装哪些更新非常容易。例如,以下脚本可以告诉我们计算机上是否已安装了补丁 Security Update for Windows XP (KB899587):

Set objSession = CreateObject("Microsoft.Update.Session")
Set objSearcher = objSession.CreateUpdateSearcher
Set objResults = objSearcher.Search("Type='Software'")
Set colUpdates = objResults.Updates

For i = 0 to colUpdates.Count - 1
    If colUpdates.Item(i).Title = _
        "Security Update for Windows XP (KB899587)" Then
        If colUpdates.Item(i).IsInstalled <> 0 Then
            Wscript.Echo "This update is installed."
            Wscript.Quit
        Else
            Wscript.Echo "This update is not installed."
            Wscript.Quit
        End If
    End If
Next

Wscript.Echo "This update is not installed."

我们将不详细介绍每一行代码,解释 Windows Update 服务的详细情况有点超出了本专栏的范围。如果您想了解有关 Windows Update(尤其是诸如 Microsoft.Update.Session 之类的对象)的详细信息,请参阅我们的“脚本故事”专栏中的我要得到你,我的美人…并且我们也要管理 Windows Update 啦!

但是,我们会发现,尽管有 Search 方法,但我们并不是真的搜索某个具体的更新。搜索意味着只去查找所需的项,其精确度是极低的。因此我们不能真的那样做。相反,我们在此要做的是返回所有更新的集合,然后筛选整个集合,查找标题为 Security Update for Windows XP (KB899587) 的更新。最终结果是一样的,但是我们达到这一最终结果的过程稍有不同。

不,没有什么不同。就您想了解的内容而言。

那么,我们在此采用的过程是什么?嗯,首先使用下面四行代码来检索本地计算机的更新集合:

Set objSession = CreateObject("Microsoft.Update.Session")
Set objSearcher = objSession.CreateUpdateSearcherSet 
objResults = objSearcher.Search("Type='Software'")
Set colUpdates = objResults.Updates

注意:是的,此脚本可针对远程计算机运行。有关详细信息,请参阅脚本故事专栏。

检索该集合之后,设置一个 For Next 循环以遍历所有项。在该循环内,使用下面一行代码来确定更新的“标题”是否为 Security Update for Windows XP (KB899587):

If colUpdates.Item(i).Title = _
    "Security Update for Windows XP (KB899587)" Then

我们假定“标题”是Security Update for Windows XP (KB899587)。在这种情况下,接下来要检查 IsInstalled 属性的值。如果 IsInstalled 等于 0,则表示实际没有安装该更新(可能安装失败了,也可能安装了该更新但后来又删除了)。如果 IsInstalled 不等于 0,则表示已经安装了该更新。检查该值,然后回显相应的消息:

If colUpdates.Item(i).IsInstalled <> 0 Then
    Wscript.Echo "This update is installed."
    Wscript.Quit
Else
    Wscript.Echo "This update is not installed."
    Wscript.Quit
End If

您会发现,回显消息之后,我们就会终止该脚本。为什么?嗯,更新标题是唯一的:既然我们已经找到了要查找的更新,就无需继续遍历剩下的集合了。因此,我们也就终止了脚本,并回到我们的生活中。

如果“标题”不是Security Update for Windows XP (KB899587) 怎么办?在这种情况下,我们只要进入下一轮循环并检查集合中的下一项即可。如果我们确实再也找不到具有指定标题的更新,则最终会退出该循环,然后执行最后一行代码,仅报告没有安装该更新。

(0)

相关推荐

  • 用vbs实现确定是否安装了某个特定的补丁

    问: 您好,脚本专家!如何使用脚本来确定是否安装了某个特定的补丁? -- GM 答: 您好,GM.您知道,不久以前这个问题可能被我们"不小心"扔进了废纸篓并且假装从未看到.为什么?嗯,以前的时候,我们获得关于补丁.快速修复和其他更新的信息的唯一方法就是使用 WMI 类 Win32_QuickFixEngineering.这样挺好的,但是由于各种原因,Win32_QuickFixEngineering 偶尔会丢失确实已经安装了的补丁:更糟糕的是,在 Windows 2000 计算机上,W

  • 写个设置命令的VBS脚本代码

    复制代码 代码如下: '作者:刘先勇 (Eric Liu) '将以下代码复制并保存为"系统命令.VBS",并运行安装. '安装成功后,可通过在程序.文件或文件夹上点右键->发送到->系统命令来设置一个命令,然后在运行中就可以输入该命令打开文件了. '脚本运行一次后在右键菜单中增加从这里运行CMD的快捷方式,还增加查找目标文件快捷方式 'On Error Resume Next If (lcase(right(wscript.fullname,11))<>&quo

  • Sql server 2005安装时ASP.Net版本注册要求警告的解决方法

    在安装SQL Server 2005 时出现ASP.Net版本注册要求(警告),提示找不到ASP.Net 在 Microsoft Internet 信息服务(IIS)中的版本注册信息. 首先在确认安装了IIS,并且安装了IIS的ASP.Net组件,位置在[Internet 信息服务]--[万维网服务]--[应用程序开发 在安装SQL Server 2005 时出现ASP.Net版本注册要求(警告),提示找不到ASP.Net 在 Microsoft Internet 信息服务(IIS)中的版本注册

  • 无法找到脚本文件adsutil.vbs的解决方法

    adsutil.vbs是什么,详细请参阅adsutil.vbs脚本基本用法. adsutil.vbs是Windows 2003的IIS服务自带的基于命令行下的IIS管理脚本,windows 2003使用IIS6.0,现在的IIS7.0.7.5默认是不安装这个IIS6脚本工具的,找不到adsutil.vbs,那是因为安装IIS的时候没有勾选这个组件. 打开或关闭windows功能,在[Internet信息服务]里勾选[IIS 6脚本工具]这个组件安装即可. 然后对应的文件就出来了.

  • PyCharm2022激活码破解补丁一键安装免费分享(2022年持续更新)

    最近在网上找了很多关于PyCharm的激活方法,大部分都需要手动修改文件,对于我这种“小小白”来说有点儿复杂,下面分享一个不需要手动修改文件,一键安装Pycharm激活补丁的方法 一.PyCharm激活码与激活方式 先分享一个PyCharm2021,PyCharm2022都可用的激活码,需要配合下面的补丁使用 1OOG7EX2FA-eyJsaWNlbnNlSWQiOiIxT09HN0VYMkZBIiwibGljZW5zZWVOYW1lIjoiZ2FyZmlzaCB0YWNoeW9uIiwiYXN

  • pycharm2022.1最新永久激活码破解补丁一键安装教程免费分享(2022持续更新)

    pycharm2022.1.x版激活码,适用所用pycharm 2022与2021版,使用下面的Pycharm激活补丁一键安装脚本更简单方便 一.pycharm2022.1最新永久激活码 先分享一个最新的pycharm2022.1可用的激活码(永久),pycharm2021也可以使用,永久激活pycharm2022需要配合下面的补丁使用 1OOG7EX2FA-eyJsaWNlbnNlSWQiOiIxT09HN0VYMkZBIiwibGljZW5zZWVOYW1lIjoiZ2FyZmlzaCB0Y

  • 实现Win 2000系统补丁的快速安装

    现在Windows2000系统技术上越来越成熟,相应的Server Pack也升级到了4.0版本.目前Windows 2000的补丁有二十多个,如果每个补丁都手工安装,那工作量可不少.本文就如何快速安装补丁作一个简单介绍. 譬如安装SP4时,传统的安装方法很简单,直接双击SP4文件名,按照提示一步一步进行,但这样很麻烦.这里向大家介绍一下更简便的方法: 1.点"开始→运行",输入CMD,切换到命令行方式. 2.进入到SP4文件所在目录,输入"SP4文件名/?",就会

  • 常用软件的静默安装方法介绍

    有时我们在安装程序的时候,希望是静默安装的,不显示下一步下一步,这编访问来教大家如何来操作,现在常用的制作安装程序的软件有,  Microsoft Windows Installer  , Windows 补丁包 , InstallShield  ,  InstallShield with MSI  ,  WISE Installer  , Inno Setup , NullSoft Installation System  等. 软件的安装采取全自动或半自动的方式进行. 一.Microsoft

  • 教你如何静默安装ORACLE

    由于本次的实验我是将上次的虚拟机直接拷贝过来,然后将里面图形化界面安装好了的oracle给删除,再次重新安装,所以这里要修改一些配置. 首先修改的是我们的IP地址 # system-config-network 完成后我们修改一下hosts文件,将里面的ip地址给修改一下 # vi /etc/hosts 接着我们删除上次安装过的ORACLE文件 # cd $ORACLE_BASE # ls # rm -rf * 进入root:rm -rf /etc/ora* 还是在安装前进行配置. 接下来进行静

  • WMware redhat 5 oracle 11g 安装方法

    1.安装Oracle11g所需要的补丁包,安装光盘上全有,进入光盘的Server目录:(最好通过oracle的官方文档来确定需要安装哪些包) 2.修改用户验证选项 修改/etc/pam.d/login文件加上如下参数 session required pam_limits.so 3.修改用户配置文件 修改/etc/profile文件加入如下参数: if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; th

随机推荐