主頁(yè) > 知識(shí)庫(kù) > 用vbs實(shí)現(xiàn)確定是否安裝了某個(gè)特定的補(bǔ)丁

用vbs實(shí)現(xiàn)確定是否安裝了某個(gè)特定的補(bǔ)丁

熱門(mén)標(biāo)簽:廣州ai電銷(xiāo)機(jī)器人一般多少錢(qián) 外呼系統(tǒng)免費(fèi)招代理 外呼線(xiàn)路中繼線(xiàn)是什么 合肥高德地圖標(biāo)注 百度地圖標(biāo)注是什么意思 拉薩外呼系統(tǒng)業(yè)務(wù) 深圳外呼系統(tǒng)收費(fèi) 怎么看地圖標(biāo)注 外呼系統(tǒng)telrobot
問(wèn):
您好,腳本專(zhuān)家!如何使用腳本來(lái)確定是否安裝了某個(gè)特定的補(bǔ)???

-- GM

答:
您好,GM。您知道,不久以前這個(gè)問(wèn)題可能被我們“不小心”扔進(jìn)了廢紙簍并且假裝從未看到。為什么?嗯,以前的時(shí)候,我們獲得關(guān)于補(bǔ)丁、快速修復(fù)和其他更新的信息的唯一方法就是使用 WMI 類(lèi) Win32_QuickFixEngineering。這樣挺好的,但是由于各種原因,Win32_QuickFixEngineering 偶爾會(huì)丟失確實(shí)已經(jīng)安裝了的補(bǔ)丁;更糟糕的是,在 Windows 2000 計(jì)算機(jī)上,Win32_QuickFixEngineering 有時(shí)會(huì)處于待命狀態(tài),而不返回任何信息。(如何解決這一問(wèn)題?當(dāng)然是指通過(guò)安裝補(bǔ)丁來(lái)解決。)無(wú)論如何都不能算一件好事。

但是,那些日子都過(guò)去了?,F(xiàn)在,多虧具有重大改進(jìn)的新 Windows Update 服務(wù),要確定計(jì)算機(jī)上已安裝了和尚未安裝哪些更新非常容易。例如,以下腳本可以告訴我們計(jì)算機(jī)上是否已安裝了補(bǔ)丁 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."

我們將不詳細(xì)介紹每一行代碼,解釋 Windows Update 服務(wù)的詳細(xì)情況有點(diǎn)超出了本專(zhuān)欄的范圍。如果您想了解有關(guān) Windows Update(尤其是諸如 Microsoft.Update.Session 之類(lèi)的對(duì)象)的詳細(xì)信息,請(qǐng)參閱我們的“腳本故事”專(zhuān)欄中的我要得到你,我的美人…并且我們也要管理 Windows Update 啦!

但是,我們會(huì)發(fā)現(xiàn),盡管有 Search 方法,但我們并不是真的搜索某個(gè)具體的更新。搜索意味著只去查找所需的項(xiàng),其精確度是極低的。因此我們不能真的那樣做。相反,我們?cè)诖艘龅氖欠祷厮懈碌募?,然后篩選整個(gè)集合,查找標(biāo)題為 Security Update for Windows XP (KB899587) 的更新。最終結(jié)果是一樣的,但是我們達(dá)到這一最終結(jié)果的過(guò)程稍有不同。

不,沒(méi)有什么不同。就您想了解的內(nèi)容而言。

那么,我們?cè)诖瞬捎玫倪^(guò)程是什么?嗯,首先使用下面四行代碼來(lái)檢索本地計(jì)算機(jī)的更新集合:

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

注意:是的,此腳本可針對(duì)遠(yuǎn)程計(jì)算機(jī)運(yùn)行。有關(guān)詳細(xì)信息,請(qǐng)參閱腳本故事專(zhuān)欄。


檢索該集合之后,設(shè)置一個(gè) For Next 循環(huán)以遍歷所有項(xiàng)。在該循環(huán)內(nèi),使用下面一行代碼來(lái)確定更新的“標(biāo)題”是否為 Security Update for Windows XP (KB899587):

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

我們假定“標(biāo)題”是Security Update for Windows XP (KB899587)。在這種情況下,接下來(lái)要檢查 IsInstalled 屬性的值。如果 IsInstalled 等于 0,則表示實(shí)際沒(méi)有安裝該更新(可能安裝失敗了,也可能安裝了該更新但后來(lái)又刪除了)。如果 IsInstalled 不等于 0,則表示已經(jīng)安裝了該更新。檢查該值,然后回顯相應(yīng)的消息:

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

您會(huì)發(fā)現(xiàn),回顯消息之后,我們就會(huì)終止該腳本。為什么?嗯,更新標(biāo)題是唯一的:既然我們已經(jīng)找到了要查找的更新,就無(wú)需繼續(xù)遍歷剩下的集合了。因此,我們也就終止了腳本,并回到我們的生活中。

如果“標(biāo)題”不是Security Update for Windows XP (KB899587) 怎么辦?在這種情況下,我們只要進(jìn)入下一輪循環(huán)并檢查集合中的下一項(xiàng)即可。如果我們確實(shí)再也找不到具有指定標(biāo)題的更新,則最終會(huì)退出該循環(huán),然后執(zhí)行最后一行代碼,僅報(bào)告沒(méi)有安裝該更新。

標(biāo)簽:漳州 臺(tái)灣 玉林 嘉興 延安 廣安 六安 周口

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用vbs實(shí)現(xiàn)確定是否安裝了某個(gè)特定的補(bǔ)丁》,本文關(guān)鍵詞  用,vbs,實(shí)現(xiàn),確定,是否,安,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用vbs實(shí)現(xiàn)確定是否安裝了某個(gè)特定的補(bǔ)丁》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于用vbs實(shí)現(xiàn)確定是否安裝了某個(gè)特定的補(bǔ)丁的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章