3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(VBScript)WindowsUpdateで非表示の更新プログラムをスクリプトで再表示する

Windows7の環境で、WindowsUpdateの特定の更新プログラムを非表示にしたものの、再表示させる必要が出てきました。
GUIでは出来ますが、エンドユーザーに操作させたくないため、スクリプトを用いバックグラウンドで処理したいと思っています。

調べると、VBScriptで実行できることが判明しました。
MSコミュニティ:Windows Updateで非表示にした更新を再度表示させる方法 にやりたいスクリプトが掲載されてました。
上記サイトでは Title で条件を指定しましたが、WSUSなど使っていて UpdateID がわかっているなら、それを条件に用いることも可能です。(idのほうが間違いがすくないですね..)

Set objSession = CreateObject("Microsoft.Update.Session")
Set objSearcher = objSession.CreateUpdateSearcher

'インストールしていない、ソフトウェアで非表示にしているものを検索
Set objResults = objSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=1")
Set colUpdates = objResults.Updates

For i = 0 to colUpdates.Count - 1
   '条件に一致するものを再表示
   'If colUpdates.Item(i).Title = "Microsoft PowerPoint 2013 (KB3127967) 32 ビット版 の更新プログラム" Then
    Set objIdentity = colUpdates.Item(i).Identity 
    If objIdentity.UpdateID  = "52d231c1-a746-4b86-812c-e885431219c7" Then
        colUpdates.Item(i).IsHidden = 0
    End If
Next

objResults.Updatesで返ってきた検索結果のオブジェクトですが、様々なプロパティがあるので、どんな情報取れるか試してみました。

Set objSession = CreateObject("Microsoft.Update.Session")
Set objSearcher = objSession.CreateUpdateSearcher
'インストールしていない、ソフトウェアで非表示にしているものを検索
Set objResults = objSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=1")
Set colUpdates = objResults.Updates

For i = 0 to colUpdates.Count - 1
    Wscript.Echo "Title: " & colUpdates.Item(i).Title 
    Wscript.Echo "Autoselect on Web sites: " & colUpdates.Item(i).AutoSelectOnWebSites 
    Wscript.Echo "Can require source: " & colUpdates.Item(i).CanRequireSource 
    Wscript.Echo "Deadline: " & colUpdates.Item(i).Deadline 
    Wscript.Echo "Delta compressed content available: " & colUpdates.Item(i).DeltaCompressedContentAvailable 
    Wscript.Echo "Delta compressed content preferred: " & colUpdates.Item(i).DeltaCompressedContentPreferred 
    Wscript.Echo "Description: " & colUpdates.Item(i).Description 
    Wscript.Echo "EULA accepted: " & colUpdates.Item(i).EULAAccepted 
    Wscript.Echo "EULA text: " & colUpdates.Item(i).EULAText 
    Wscript.Echo "Handler ID: " & colUpdates.Item(i).HandlerID 
    Set objIdentity = colUpdates.Item(i).Identity 
    Wscript.Echo "Revision number: " & objIdentity.RevisionNumber 
    Wscript.Echo "Update ID: " & objIdentity.UpdateID 
    Wscript.Echo "Is beta: " & colUpdates.Item(i).IsBeta 
    Wscript.Echo "Is hidden: " & colUpdates.Item(i).IsHidden 
    Wscript.Echo "Is installed: " & colUpdates.Item(i).IsInstalled 
    Wscript.Echo "Is mandatory: " & colUpdates.Item(i).IsMandatory 
    Wscript.Echo "Is uninstallable: " & colUpdates.Item(i).IsUninstallable 
    Wscript.Echo "Last deployment change time: " & colUpdates.Item(i).LastDeploymentChangeTime 
    Wscript.Echo "Maximum download size: " & colUpdates.Item(i).MaxDownloadSize 
    Wscript.Echo "Minimum download size: " & colUpdates.Item(i).MinDownloadSize 
    Wscript.Echo "Microsoft Security Response Center severity: " & colUpdates.Item(i).MsrcSeverity 
    Wscript.Echo "Recommended CPU speed: " &  colUpdates.Item(i).RecommendedCPUSpeed 
    Wscript.Echo "Recommended hard disk space: " & colUpdates.Item(i).RecommendedHardDiskSpace 
    Wscript.Echo "Recommended memory: " & colUpdates.Item(i).RecommendedMemory 
    Wscript.Echo "Release notes: " & colUpdates.Item(i).ReleaseNotes 
    Wscript.Echo "Support URL: " & colUpdates.Item(i).SupportURL 
    Wscript.Echo "Type: " & colUpdates.Item(i).Type 
    Wscript.Echo "Uninstallation notes: " &  colUpdates.Item(i).UninstallationNotes 
    Wscript.Echo "Deployment action: " & colUpdates.Item(i).DeploymentAction 
    Wscript.Echo 
Next

結果はこんな感じです。

cscript "c:\\非表示された更新プログラム情報取得.vbs"
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Title: Microsoft PowerPoint 2013 (KB3127967) 32 ビット版 の更新プログラム
Autoselect on Web sites: True
Can require source: False
Deadline:
Delta compressed content available: False
Delta compressed content preferred: True
Description: Microsoft は Microsoft PowerPoint 2013 32 ビット版 用の更新プログラムをリリースしました。この更新プログラムにより、Microsoft PowerPoint 2013 32 ビット版 に最新の修正が適用されます。さらに、この更新プログラムは、安定性およびパフォーマンスが向上しています。
EULA accepted: True
EULA text:
Handler ID:
Revision number: 200
Update ID: 52d231c1-a746-4b86-812c-e885431219c7
Is beta: False
Is hidden: True
Is installed: False
Is mandatory: False
Is uninstallable: False
Last deployment change time: 2017/02/17
Maximum download size: 51325644
Minimum download size: 0
Microsoft Security Response Center severity:
Recommended CPU speed: 0
Recommended hard disk space: 0
Recommended memory: 0
Release notes:
Support URL: http://support.microsoft.com/?LN=ja
Type: 1
Uninstallation notes: この更新プログラムを削除するには、コントロール パネルで [プログラムの追加と削除] または [プログラム
と機能] を使います。更新プログラム削除の詳細については、KB903771 をご覧ください。
Deployment action: 1

参考:
MSスクリプトセンター:ソフトウェアの更新の検索