面倒な“Windows 10の更新”をスクリプト化できる新たな選択肢(その2):企業ユーザーに贈るWindows 10への乗り換え案内(30)
前回は、Windows Updateのスクリプトを使用した自動化に利用できる汎用的な方法と、Windows 10 バージョン1607およびWindows Server 2016で利用可能な新しいWMIプロバイダーについて説明しました。今回は、Windows 10 バージョン1709からの新機能を紹介します。
さらに新しい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)。
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:利用可能な更新プログラムのダウンロードとインストールを実行します。
例えば、利用可能な更新プログラムを確認し、検出されたらダウンロードとインストールを行って、再起動が必要であれば再起動するということを、次の3行のコマンドラインで記述できます(画面3)。
$updates = Start-WUScan if ($updates.Count -gt 0) {Install-WUUpdates -Updates $updates} else {Write-Host "No update"} if (Get-WUIsPendingReboot) {Restart-Computer}
前回は、レガシーな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)。
このように、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.
関連記事
- Microsoft、業務PC自動セットアップツール「Windows AutoPilot」を提供
Microsoftは「Windows 10 Fall Creators Update」で、IT管理者向けに組織内へのPC展開と管理を容易にする一連の新機能「Windows AutoPilot」を提供する。 - Windows 10 Fall Creators Updateに搭載される「次世代」のセキュリティ機能
Microsoftが「Windows 10 Fall Creators Update」に搭載する次世代セキュリティ機能を紹介。「Windows Defender ATP」に含まれるツールを大幅に拡充することを明らかにした。 - 「Windows 10 Fall Creators Update」に搭載される新機能まとめ
マイクロソフトはWindowsの次期大型アップデート「Windows 10 Fall Creators Update」を2017年後半にリリースすると発表。Windows MRやiOS/Androidも包括したマルチプラットフォーム対応など、コンシューマー/技術者それぞれに向けた新機能を多数リリースする。 - Windows 10 Creators Updateがやってきた!――確実にアップグレードする方法を再確認
2017年4月6日(日本時間、以下同)、Windows 10の最新バージョンである「Windows 10 Creators Update」が正式にリリースされ、利用可能になりました。4月12日からはWindows Updateを通じた配布が段階的に始まります。