検索
連載

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

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

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「企業ユーザーに贈る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.

ページトップに戻る