面倒な“Windows 10の更新”をスクリプト化できる新たな選択肢(その2)企業ユーザーに贈るWindows 10への乗り換え案内(30)

前回は、Windows Updateのスクリプトを使用した自動化に利用できる汎用的な方法と、Windows 10 バージョン1607およびWindows Server 2016で利用可能な新しいWMIプロバイダーについて説明しました。今回は、Windows 10 バージョン1709からの新機能を紹介します。

» 2018年08月22日 05時00分 公開
[山市良テクニカルライター]
「企業ユーザーに贈るWindows 10への乗り換え案内」のインデックス

企業ユーザーに贈るWindows 10への乗り換え案内

さらに新しいWindows Update WMIプロバイダー(バージョン1709以降)

 前回(第29回)、Windows 10 バージョン1607およびWindows Server 2016では、新たに「Windows Update WMI」プロバイダー(WMI名前空間root/Windows/MicrosoftUpdate)が実装され、このWMIプロバイダーのCIM(Common Information Model)クラス「MSFT_WUOperationsSession」とそのメソッドを使用して、更新プログラムの確認やダウンロードとインストール、更新履歴の確認ができることを紹介しました。

 例えば、Windows PowerShellで次のようなコマンドラインを実行すれば、更新プログラムの確認、ダウンロードとインストールまでの処理を実行することができます。

$ci = New-CimInstance -Namespace root/Microsoft/Windows/WindowsUpdate -ClassName MSFT_WUOperationsSession
$result = $ci | Invoke-CimMethod -MethodName ScanForUpdates -Arguments @{SearchCriteria="IsInstalled=0";OnlineScan=$true}
$result.Updates
Invoke-CimMethod -InputObject $ci -MethodName ApplyApplicableUpdates

 前回は、この新しいCIMクラス「MSFT_WUOperationsSession」が一代限り、つまりWindows 10 バージョン1703以降で利用できなくなったことを指摘しました。

 Windows 10 バージョン1709およびWindows Server, version 1709では、さらに改善されたCIMクラス「MSFT_WUOperations」が追加され、Windows 10 バージョン1803以降でも引き続き利用可能になっています。例えば、さらに新しいCIMクラス「MSFT_WUOperations」では、上記の処理は次のように記述できます。

$cm = Invoke-CimMethod -Namespace root/Microsoft/Windows/WindowsUpdate-ClassName MSFT_WUOperations -MethodName ScanForUpdates -Arguments@{SearchCriteria="IsInstalled=0"}
$cm.Updates
$result = Invoke-CimMethod -Namespace root/Microsoft/Windows/WindowsUpdate -ClassName MSFT_WUOperations -MethodName InstallUpdates -Arguments @{Updates = $cm.Updates}

 詳しいことは説明しませんが、最後のコマンドラインが再起動の要否を返す($result.RebootRequiredがTrueまたはFalse)ことに注目してください。以前のCIMクラス「MSFT_WUOperationsSession」では、再起動の要否を判断できませんでした。これは大きな改善点です(画面1)。

画面1 画面1 Windows 10 バージョン1709以降で利用可能になったCIMクラス「MSFT_WUOperations」による更新の確認とインストール

WindowsUpdateProviderモジュール(バージョン1709以降)

 Windows 10 バージョン1709およびWindows Server, version 1709以降で利用可能な新しいCIMクラス「MSFT_WUOperations」のコマンドラインの例については、これ以上説明しません。なぜなら、これらのOSではCIMクラス「MSFT_WUOperations」を使用したWindows PowerShell用の「WindowsUpdateProvider」モジュールが標準搭載されており、こちらを使用した方が簡単だからです(画面2)。

  • Get-WUAVersion:前回説明したCIMクラス「MSFT_WUSettings」の「GetWUAVersion」メソッドと同じく、Windows Updateエージェントのバージョンとして、Windows UpdateクライアントAPI「C:\Windows\System32\wuapi.dll」のファイルバージョンを返します。前回も指摘しましたが、Windowsでは慣例的にWindows Updateエージェントのバイナリ「C:\Windows\System32\wuaueng.dll」のファイルバージョンをWindows Updateエージェントのバージョンとしてきました。「wuapi.dll」と「wuaueng.dll」のファイルバージョンは一致することもありますが、必ずしも同じというわけではありません。その点に注意が必要かもしれません。
  • Get-WUIsPendingReboot:現在、Windows Updateで保留中の再起動がある場合は「True」、ない場合は「False」を返します。
  • Get-WULastInstallationDate:Windows Updateの最終チェック日時を返します。
  • Get-WULastScanSuccessDate:最後に更新プログラムのインストールに成功した日時を返します。
  • Start-WUScan:利用可能な更新プログラムの確認を開始します。
  • Install-WUUpdates:利用可能な更新プログラムのダウンロードとインストールを実行します。

画面2 画面2 CIMクラス「MSFT_WUOperations」を利用するWindowsUpdateProviderモジュールのコマンドレット

 例えば、利用可能な更新プログラムを確認し、検出されたらダウンロードとインストールを行って、再起動が必要であれば再起動するということを、次の3行のコマンドラインで記述できます(画面3)。

$updates = Start-WUScan
if ($updates.Count -gt 0) {Install-WUUpdates -Updates $updates} else {Write-Host "No update"}
if (Get-WUIsPendingReboot) {Restart-Computer}
画面3 画面3 たった3行のコマンドラインで更新プログラムの確認、ダウンロードとインストール、再起動を自動化できる(これらを1行で書くことも可能)

 前回は、レガシーなWindows Update Agent(WUA)APIを使用するサンプルスクリプト「WUA_SearchUpdateInstall.vbs」が、新しいバージョンのWindows 10(少なくともバージョン1709以降で確認)において、毎月第二火曜日(日本ではその翌日の水曜日)以外にリリースされる「累積更新プログラム」を検出しないことを指摘しました。

 これは「Start-WUScan」コマンドレットも同様のようです。Start-WUScanコマンドレットは、2018年6月末時点でWindows 10 バージョン1803向けに2018年6月27日に提供された累積更新プログラム「KB4284848」を検出しませんでしたが、「設定」アプリからWindows Updateを実行すると検出され、インストールされました(画面4)。

画面4 画面4 「Start-WUScan」コマンドレットは、毎月第二火曜日(日本ではその翌日)以外にリリースされる累積更新プログラムを検出しないようだ

 このように、Windows 10 バージョン1709以降の新しいCIMクラス「MSFT_WUOpearations」とWindows PowerShell用「WindowsUpdateProvier」モジュールは、Windows Updateのスクリプト化を簡単にする可能性を秘めていますが、現状、公開情報が少ない上、コマンドレットのヘルプも極めて簡単なものしかありません。一代限りだったCIMクラス「MSFT_WUOpearationsSession」の例もあります。現時点では、汎用的に利用でき、実績もあるWUA APIを利用するのが安心かもしれません。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

「Windows 7」サポート終了 対策ナビ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。