Windows Updateの手動操作に煩わしさを感じたことはありませんか?
特に複数台のPCやサーバーを管理している場合、更新作業は思った以上に時間を取られます。
そこで活用したいのが、PowerShellスクリプトによるWindows Updateの自動管理です。
本記事では、Windows PowerShellを使って、更新の確認・インストール・再起動の制御まで一連の流れを自動化する方法をわかりやすく解説します。
業務効率化や管理の一元化を目指す方にとって、実践的な内容になっています。
PowerShellでWindows Updateを管理するには?
Windowsには標準で自動更新機能がありますが、細かい制御や一括管理には不向きです。
PowerShellを使えば、更新の取得から適用までをコマンドベースで柔軟に制御できます。
Windows UpdateをPowerShellで扱うには、次の2つの方法があります。
Windows Update Module
(PSWindowsUpdate
モジュール)を利用する- WMI(Windows Management Instrumentation)経由で制御する(限定的)
実務で多用されるのは、PSWindowsUpdate
モジュールです。
以下から、モジュールのインストール方法と使い方について詳しく見ていきましょう。
PSWindowsUpdateモジュールをインストールする方法
まず最初に、PowerShellでWindows Updateを制御するためのモジュールをインストールします。
Install-Module -Name PSWindowsUpdate -Force
注意点
- PowerShellを管理者権限で実行してください。
- 初回実行時にリポジトリの信頼確認を求められるので、
Y
を入力。
更新プログラムを確認する
モジュールのインストールができたら、まずは更新プログラムの確認から行います。
Get-WindowsUpdate
このコマンドを実行すると、現在のシステムにインストールされていない更新プログラムの一覧が表示されます。
オプション例
-MicrosoftUpdate
:Microsoft Update(Officeなど)を含めてチェック-Category SecurityUpdates
:セキュリティ更新のみに絞る
更新プログラムをインストールする
確認した更新プログラムをインストールするには、以下のようにします。
Install-WindowsUpdate -AcceptAll -AutoReboot
よく使われるオプション
-AcceptAll
:すべての更新を自動で承諾-IgnoreReboot
:インストール後に再起動しない-AutoReboot
:必要であれば自動で再起動
特定の更新プログラムを除外したい場合
インストール対象から特定のKB番号を除外したい場合は以下のように記述します。
Get-WindowsUpdate | Where-Object {$_.KB -notmatch "KB5006670"} | Install-WindowsUpdate -AcceptAll -AutoReboot
更新履歴を確認する
過去に適用されたWindows Updateの履歴を確認することも可能です。
Get-WUHistory
このコマンドは、成功/失敗に関わらずすべての履歴を一覧表示してくれます。
スケジュール化して定期的に実行するには
PowerShellスクリプトを定期実行するには「タスクスケジューラ」との組み合わせが便利です。
例:毎週水曜日の午前3時に自動更新スクリプトを実行
- スクリプト(例:
UpdateScript.ps1
)を保存 - タスクスケジューラを開く
- 新しいタスクを作成し、トリガーとアクションを設定
- 「操作」タブにて次のように登録:
Program/script: powershell.exe
Add arguments: -ExecutionPolicy Bypass -File "C:\Scripts\UpdateScript.ps1"
スクリプト全体の例
以下は、一般的な更新処理を行うPowerShellスクリプトの例です。
# Windows Update スクリプト
Import-Module PSWindowsUpdate
# Microsoft Updateも含めて確認
Get-WindowsUpdate -MicrosoftUpdate
# すべてインストールして再起動
Install-WindowsUpdate -AcceptAll -AutoReboot
注意点とベストプラクティス
- テスト環境で事前検証してから本番環境に適用する
- 自動再起動が業務に影響しないタイミングでスケジュールを組む
- スクリプトのログ出力を行うとトラブル時に役立つ
Install-WindowsUpdate -AcceptAll -AutoReboot | Out-File "C:\Logs\update_log_$(Get-Date -Format yyyyMMdd).txt"
まとめ
PowerShellを活用することで、Windows Updateの手動作業を効率的に自動化できます。
特に複数台の管理を行う管理者にとっては、作業時間の大幅な削減とトラブル対応の迅速化が期待できます。
今回紹介したPSWindowsUpdate
モジュールは、無料で使える非常にパワフルなツールです。
ぜひスクリプトをカスタマイズし、自社環境や家庭のPC管理にも活用してみてください。