パッチ管理は、ITインフラ管理の重要な側面であり、Windowsワークステーションのバックアップと同様です。適切なパッチ管理ソリューションを使用することで、最新のソフトウェアの更新プログラムやパッチをテストまたはインストールしてシステムを強化することができます。パッチは、完全なソフトウェアリリース間の既存の問題の一時的な修正と見なされます。効果的なパッチ管理が行われると、システムの脆弱性を迅速に対処し、潜在的な脅威を軽減することができます。
Windowsは独自のパッチ管理ソリューションであるWindows Updateを提供しています。ただし、多くのIT管理者はパッチ管理プロセスが複雑で時間がかかると感じています。さらに、システムの更新は、しばしば営業時間中に自動的に開始されるため、プロダクションのワークフローに影響を与えることがあります。PowerShellのコマンドレットを使用することで、Windowsの更新を自動化し、労力と時間を節約することができます。
このブログ記事では、PowerShellを使用してWindowsの更新をインストールする方法と、パッチ管理プロセスを自動化するための便利なPowerShellコマンドのリストを紹介しています。パッチの適用により、システムに影響を与えるバグや脆弱性のリスクを軽減することができます。
PSWindowsUpdateとは何ですか?
Windowsのパッチ管理プロセスをスムーズかつ簡単にするには、Michal Gajdaによって開発されたPSWindowsUpdateモジュールを使用することができます。このモジュールはパブリックに利用可能であり、PowerShellギャラリーから無料でダウンロードできます。主な要件は、コンピュータがVistaまたはWindows Server 2008以降のWindows OSバージョンを実行している必要があります。また、PowerShell 2.0以降を使用する必要があります。
PSWindowsUpdateを使用すると、コンピュータに利用可能なWindowsの更新プログラムを特定することができます。さらに、このモジュールを使用すると、さまざまなWindowsサーバーとワークステーションでWindowsの更新プログラムを一元管理することができます。これにより、どの更新プログラムをインストール、削除、または非表示にするかをリモートで制御することができます。
PowerShellでWindowsの更新プログラムを自動化する方法
以下では、PSWindowsUpdateの設定プロセスについて説明し、モジュールのダウンロードとインストール方法、およびWindowsの更新プログラムを自動化するのに役立つコマンドの確認方法について説明します。
PSWindowsUpdateのインストール方法
Windowsのパッチ管理を効果的に自動化するには、まずPSWindowsUpdateモジュールをコンピュータにインストールする必要があります。このためには、昇格されたPowerShellプロンプトを開き、次のコマンドを入力します:
Install-Module -Name PSWindowsUpdate
このコマンドを実行した後、PSGalleryから指定されたモジュールをインストールするかどうかを尋ねられます。続行してすべての変更を受け入れる場合は、はいを選択してください。
モジュールをインストールしたら、他のコンピュータにリモートでアクセスできるようにする必要があります。これにより、リモートコンピュータにWindowsの更新プログラムをインストールすることができ、最小限の時間と労力で済ませることができます。PSWindowsUpdateモジュールをリモートマシンで使用するためには、モジュールをコンピュータに保存してネットワーク上で共有する必要があります。
他のサーバーがこのモジュールをインポートして展開できる場合、自動化されたWindowsパッチ管理を設定することができます。このためには、次のコマンドレットを実行する必要があります:
Save-Module -Name PSWindowsUpdate -Path
ここでは、–Pathパラメーターを定義して、PSWindowsUpdateモジュールを保存する場所を指定する必要があります。
PSWindowsUpdateの使用方法
次のステップでは、このモジュールを使用してPowerShellコマンドレットでWindowsの更新を自動化する方法を学びます。これは、GUIのないServer Coreマシンでパッチ管理プロセスを実行する必要があるIT管理者にとって大きな利点です。これらのコマンドレットを使用することで、管理の複雑さを最小限に抑え、プロセスをより簡単でエラーの少ないものにすることができます。
利用可能なWindowsアップデートの完全なリストを取得するには、次のPowerShellコマンドを実行してください:
Get-WindowsUpdate
以下のスクリーンショットが画面に表示されます:
この情報により、どのソフトウェアやアプリケーションを更新する必要があるかが明確になります。その後、以下のコマンドを入力してすべての更新をインストールできます。また、–AutoReboot パラメータを追加することで、更新がインストールされた後、システムが自動的に再起動することを確認できます。
Get-WUInstall -AcceptAll –AutoReboot
(生産フローを中断しないために再起動を開始しない場合は、次のコマンドレットを実行できます:
Get-WUInstall -AcceptAll –IgnoreReboot
画面には、パッチ管理プロセスの進行状況、更新の完全なリスト、および現在のステータスが表示されます。
インストールプロセスが完了すると、PowerShellコンソールに次のメッセージが表示されます:「再起動が必要ですが、手動で行ってください」。したがって、システムを再起動する必要がありますが、自分のスケジュールに最適なタイミングで行うことができます。
特定の更新のみをダウンロードする場合は、PowerShellコマンドレットに–KBArticleID パラメータを追加してください。正しいパッチをダウンロードするために、KB記事の番号を指定することを忘れないでください。たとえば、Windows Malicious Software Removal Tool x64 とWindows Defender Antivirusのセキュリティインテリジェンスアップデートをインストールしたい場合、適切なPowerShellコマンドは以下のようになります:
Get-WUInstall -KBArticleID KB890830、KB2267602 -AcceptAll
このコマンドを実行した後、コンピューターにはこれらの更新プログラムのうち2つだけがインストールされます。
PSWindowsUpdate コマンドの概要
PSWindowsUpdate モジュールでどのような PowerShell コマンドレットが機能するかを知りたい場合は、次のコマンドを入力して Enter キーを押してください。
Get-Command -Module PSWindowsUpdate
ここでは、モジュールのコマンドの完全なリストが表示されます。
これらのコマンドの動作方法について説明しましょう。
1. Get-WUHistory cmdlet は、最新の更新プログラムの履歴を表示することができます。このコマンドを実行すると、同様の出力が画面に表示されます。
2. 次のコマンドレットは Get-WUInstallerStatus で、Windows インストーラー サービスの状態を確認できます。ここでは、インストーラーが正常に動作しているかどうかを確認できます。この操作の出力は次のようになります。
3. Get-WURebootStatus コマンドレットを実行すると、特定の更新プログラムが完全に適用されるためにシステムを再起動する必要があるかどうかを確認できます。
4. Get-WUServiceManager コマンドレットを使用すると、Windows 更新プログラムのソースを確認できます。
最後の列には更新のソースが示されています(例:Windows Update、DCat Flighting Prodなど)。
5. コンピュータにインストールしないように特定の更新をリストから非表示にすることができます。そのためには、Hide-WindowsUpdateコマンドを実行する必要があります。非表示にしたいKB記事のIDを指定することができます。以下の例は、KB2267602の更新をリストから非表示にする方法を示しています:
$HideList = "KB2267602"
Hide-WindowsUpdate -KBArticleID $HideList –Hide
変更を行う前に、選択内容の確認を求められます。KB記事を非表示にするには、Yを入力してください。
ただし、非表示にした更新のリストを取得したい場合は、以下のコマンドレットを実行できます。
ステータス列では、Hという文字が表示されると、更新が正常に非表示にされたことを示しています。したがって、次回Get-WUInstallコマンドを実行する際には、選択した更新が自動的に利用可能な更新の一覧から除外されます。
変更を元に戻す場合は、PowerShellコンソールで次のコマンドレットを使用できます:
Hide-WindowsUpdate -KBArticleID $HideList -Hide:$false
ご覧のように、アップデートのステータスにはもはやHの文字が含まれなくなり、このWindowsのアップデートは非表示ではなくなり、コンピュータにダウンロードされるようになります。
6. 別の設定オプションとして、コンピュータにインストールされている更新プログラムを削除することもできます。そのためには、Remove-WindowsUpdateコマンドレットを使用し、コンピュータからアンインストールしたいKB記事のIDを入力します。例:
Remove-WindowsUpdate -KBArticleID KB4519573 –IgnoreReboot
–IgnoreRebootパラメータを追加することで、コンピュータが自動的に再起動しないようにします。アップデートがアンインストールされたら、後でマシンを再起動できます。
7. 最後に、Get-WUList cmdletを使用してリモートマシンで利用可能なWindowsアップデートをスキャンできます。
Get-WUList –ComputerName Server5
このcmdletを使用するには、リモートコンピュータにPSWindowsUpdateモジュールをインストールする必要があります。これにより、1つの画面から複数のマシンのWindowsアップデートを自動化できます。PSWindowsUpdateを使用すると、パッチ管理プロセスを簡単かつ効率的に実行できます。
さらに、システムのパッチ適用中にIT管理者が経験するかもしれない管理のオーバーヘッドを削減できます。
まとめ
PSWindowsUpdateモジュールは、パッチ管理プロセスをより簡単かつ効率的にするために開発されました。アップデートの自動インストールにより、システムが定期的に更新されることを確認し、システムの障害やセキュリティ侵害のリスクを最小化できます。パッチは、プログラム内で発見された問題や脆弱性を解決するために主に開発されています。ただし、定期的なパッチ管理では、全体の製品環境の広範な保護を保証することはできません。
そのため、物理的、仮想的、およびクラウド
Source:
https://www.nakivo.com/blog/automate-windows-updates-using-powershell-short-overview/