問:
您好,指令碼專家!如何使用指令碼來確定是否安裝了某個特定的補丁?
-- gm
答: 您好,gm。您知道,不久以前這個問題可能被我們「不小心」扔進了廢紙簍並且假裝從未看到。為什麼?嗯,以前的時候,我們獲得關於補丁、快速修復和其他更新的資訊的唯一方法就是使用 wmi 類 win32_quickfixengineering。這樣挺好的,但是由於各種原因,win32_quickfixengineering 偶爾會丟失確實已經安裝了的補丁;更糟糕的是,在 windows 2000 計算機上,win32_quickfixengineering 有時會處於待命狀態,而不返回任何資訊。(如何解決這一問題?當然是指通過安裝補丁來解決。)無論如何都不能算一件好事。
但是,那些日子都過去了。現在,多虧具有重大改進的新 windows update 服務,要確定計算機上已安裝了和尚未安裝哪些更新非常容易。例如,以下指令碼可以告訴我們計算機上是否已安裝了補丁 security update for windows xp (kb899587):
set objsession = createobje程式設計客棧ct("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) 的更新。最終結果是一樣的,但是我們達到這一最終結果的過程稍有不同。
不,沒有什麼不同。就您想了解的內容而言。
那麼,我們在此採用的過程是什麼?嗯,首先使用下面四www.cppcns.com行**來檢索本地計算機的更新集合:
set objsession www.cppcns.com= 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) 怎麼辦?在這種情況下,我們只要進入下一輪迴圈並檢查集合中的下一項即可。如果我們確實再也找不到具有指定標題的更新,則最終會退出該迴圈,然後執行最後一行**,僅報告沒有安裝該更新。
本文標題: 用vbs實現確定是否安裝了某個特定的補丁
本文位址: /ruanjian/vb/36140.html
graph確定是否有迴圈
演算法 先獲取點的列表,索引對應點的順序,值對應能通向的節點的列表 1,2,3 2,4 3,4 給每個點標上標籤,是否當前路線 now 和 該節點對應的鄰節點,用列表與字典表示 for neighbours in adj 遍歷每個節點 建立乙個方法has cycle對每個節點進行遞迴運算,判斷該節點...
js實現根據中的文字值確定是否輸出該行
現在有個需求,對於乙個頁面上的中的文字,對於中class相同的一列進行範圍篩選,是為特定的日期格式和09 29 02 19 40的相隔時間為多少。思想就是找到中的值,寫了乙個getelementsbyclassname n 的方法,根據正規表示式跟文字值判斷,然後寫乙個兩位分隔的方法getnum n...
windows c獲取檔案md5值確定是否改變
在windows下做一些小工具的時候,希望做到根據配置檔案來對pc做一些配置下發的操作 例如改主機名改網路等 這就需要做到每個一段時間檢測配置檔案,並執行相應配置,但是當我們配置檔案沒有修改時,就不需要做配置了,因此需要對配置檔案進行md5檢測判斷檔案是否有改變 此處是獲取檔案的md5值,檔名在ne...