Powershellを使ったWindowsUpdateの実施

PSWindowsUpdateモジュールを使ってPowerShellでWindowsUpdateを実施する方法を調査した。モジュールの概要、コマンドの利用方法およびオプション機能、実際の利用の流れをまとめていく。

今回の検証はAzure VM(Windows Server 2022)で検証を行った。検証環境のスペックは以下の通り。

  • OSエディション:Windows Server 2022
  • バージョン:Datacenter
  • SKU:Standard B2s (2vcpu、4 GiBメモリ)
  • ディスク: OSディスク(128GB Standard SSD) / 一時ディスク(8GB)

PSWindowsUpdateの概要とインストール方法

PSWindowsUpdateの概要

PowerShellでのWindowsUpdateを実行するには、個別で新しくPowerShellモジュールをインストールする必要がある。モジュール名はPSWindowsUpdateという。詳細はPowerShell Garellyにて確認いただきたい。

PSWindowsUpdateは文字通り、Windows UpdateをPowerShellで行うためのクライアントモジュールである。モジュールにはWindows Update管理に使用するコマンドレットが一式含まれている。

2023年12月現在、最新バージョンは2.2.0.3となっている。求められるPowerShellの最小バージョンは5.1.0.0だ。

バージョン1.6台から2.0台にバージョンアップされた際に、同梱されているコマンドレットの体系が変更されたようだ(e.g. Get-WUList → Get-WindowsUpdate)。念のため確認したが、最新のバージョンでも以前のコマンドレットを実行すること自体は可能であった。以下、新旧コマンドレットの名称マッピングをPowerShell Galleryから抜粋したものだ。

PSWindowsUpdateのインストール方法

PSWindowsUpdateはデプロイ直後のWindows環境にはインストールされていないため、以下の流れでインストールを実施する。

PowerShellを管理者権限で起動する。

Get-InstalledModuleでPSWindowsUpdateがインストールされていないことを確認する。

Get-InstalledModule

Install-ModuleコマンドレットでPSWindowsUpdateモジュールをインストールする。

-Versionオプションでバージョンを詳細に指定できるが、何も指定しない場合、最新バージョンのものがインストールされる。また、インストール時にYes/Noを確認されるため、確認が不要な場合は、-Forceオプションを指定するといい。

# yes/no確認アリ
Install-Module -Name PSWindowsUpdate
# -Forceオプション yes/no確認ナシ
Install-Module -Name PSWindowsUpdate -Force

結果、以下の通りモジュールがインストールされる。

PSWindowsUpdateに含まれるコマンドレットの使用方法

インストールされたモジュールのコマンドレットを実際に使用してみる。

Get-WindowsUpdate

現在利用可能なアップデートを一覧で表示するコマンドだ。PowerShellを管理者権限で起動し、コマンドレットを入力する。

Get-WindowsUpdate

以下の通り、適用可能な更新プログラムが一覧で表示される。

Get-WindowsUpdateは、-?オプションでhelpを閲覧することができる。Get-WindowsUpdateには20を超えるオプションが存在するが、すべての意味の解説はここでは割愛する。

[-AcceptAll <SwitchParameter>]
[-AutoReboot <SwitchParameter>]
[-AutoSelectOnly <SwitchParameter>]
[-AutoSelectOnWebSites <SwitchParameter>]
[-BrowseOnly <SwitchParameter>]
[-Category <string[]>] [-CategoryIDs <string[]>]
[-ComputerName <string[]>]
[-Criteria <string>]
[-Debuger <SwitchParameter>]
[-DeploymentAction <string>]
[-Download <SwitchParameter>]
[-ForceDownload <SwitchParameter>]
[-ForceInstall <SwitchParameter>]
[-Hide <SwitchParameter>]
[-IgnoreReboot <SwitchParameter>]
[-IgnoreRebootRequired <SwitchParameter>]
[-IgnoreUserInput <SwitchParameter>]
[-Install <SwitchParameter>]
[-IsAssigned <SwitchParameter>]
[-IsHidden <SwitchParameter>]
[-IsInstalled <SwitchParameter>]
[-IsPresent <SwitchParameter>]
[-KBArticleID <string[]>]
[-MaxSize <long>]
[-MinSize <long>]
[-NotCategory <string[]>]
[-NotKBArticleID <string[]>]
[-NotSeverity <string[]>]
[-NotTitle <string>]
[-NotUpdateID <string[]>]
[-PSWUSettings <Hashtable>]
[-RecurseCycle <int>]
[-RevisionNumber <int>]
[-RootCategories <string[]>]
[-ScheduleJob <DateTime>]
[-ScheduleReboot <DateTime>]
[-SendHistory <SwitchParameter>]
[-SendReport <SwitchParameter>]
[-Severity <string[]>]
[-ShowPreSearchCriteria <SwitchParameter>]
[-Title <string>]
[-UpdateID <string[]>]
[-UpdateType <string>]
[-WindowsUpdate <SwitchParameter>]
[-WithHidden <SwitchParameter>]
[<CommonParameters>]

次は実際に更新のインストールを行ってみる。

Install-WindowsUpdate

アップデートの更新にはInstall-WindowsUpdateコマンドレットを利用する。PowerShellを管理者権限で起動し、コマンドレットを入力する。

Install-WindowsUpdate

インストール可否を聞かれるので、Yes /Noを選択する。

実行結果のResult列からインストールが成功したことが確認できる。

次は、これまでインストールされた更新プログラムを一覧履歴で取得してみる

Get-WUHistory

Get-WUHistoryコマンドレットで過去にインストール実施された更新プログラムを取得する。

管理者権限でPowerShellを開き、以下の通りコマンドを入力する。

Get-WUHistory

一覧形式で結果が返ってくる。

出力結果をパイプラインでフォーマットするなどすればもう少し見やすく成形できそうだ。

Get-WUHistoryは、成功した更新プログラムだけでなく、中断・失敗したものも履歴として残して表示してくれるようだ。(別コンピュータで取得した履歴)

他にも様々なコマンドレットがインストールされているので、業務に役立てていきたい。

コメント

タイトルとURLをコピーしました