環境
OS:Windows 7 Professional SP1
解説
$Sessionに入るのは、IUpdateSession Interface
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa386854(v=vs.85).aspx
のインスタンス。
$Searcherに入るのは、IUpdateSearcher Interface
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa386515(v=vs.85).aspx
のインスタンス。
$Resultsに入るのは、ISearchResult Interface
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa386077(v=vs.85).aspx
のインスタンス。
$Results.Updatesメソッドは、IUpdateCollection Interfaceを返す。
IUpdateCollection InterfaceはIUpdate Interfaceのコレクション。
IUpdateCollection Interfaceの詳細は次のURL。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa386107(v=vs.85).aspx
$Resultに入るのは、IUpdate Interface
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa386099(v=vs.85).aspx
のインスタンス。
コード
# COMオブジェクトの作成。
$Session = New-Object -ComObject Microsoft.Update.Session
# 更新ファイルを探索するオブジェクトを作成。
$Searcher = $Session.CreateUpdateSearcher()
# 更新ファイルを探索。(未インストールの更新ファイルを探索)
# $Results = $Searcher.Search("IsInstalled = 0 And Type = 'software'")
$Results = $Searcher.Search("IsInstalled = 0")
Write-Output "================================"
Write-Output "===== 未インストールの更新 ====="
Write-Output "================================"
foreach ($Result in $Results.Updates) {
Write-Output $Result.Title
}
# 更新ファイルを探索。(インストール済みの更新ファイルを探索)
$Results = $Searcher.Search("IsInstalled = 1")
Write-Output "============================"
Write-Output "===== インストール済み ====="
Write-Output "============================"
foreach ($Result in $Results.Updates) {
Write-Output $Result.Title
}