Windows Server 2012 R2 EssentialsやWHS2011では、更新プログラムが最新状態かどうかを通知する機能はありますが、最新かどうかの通知だけのため詳細が分かりません。
そこで、PowerShellを用いて全てのデバイスに適用されている更新プログラムを一度に取得するための簡単なWindows PowerShell スクリプトをご紹介。
スクリプトの実行条件がありますので、条件に合致された方でメリットがある、と感じた方は是非使ってみてください。また、改造してみてください。
利用条件
利用条件は下記の通りです。- WssCmdlets モジュールが導入されている環境
- Windows Server 2012 R2 Essentials
- サーバーの役割「Windows Server Essentials エクスペリエンス」を追加したWS2012 R2(StandardやDataCenter)
- Windows Server 2012 R2 Essentialsのドメイン環境に参加しているクライアント デバイス
※Windows Server Essentials Connector ソフトウェアを事前にインストール済み - RPC による通信が可能な状態(TCP 135:MS EPMAP等)
RPC サーバーを利用できません? - Ask the Network & AD Support Team
スクリプト
今回はWSE 2012 R2を使用し、サーバ上からスクリプトを実行します。※PowerShellは管理者権限で起動してください。
Get-WssComputer | foreach {Get-HotFix -ComputerName $_.devicename}スクリプトを実行すると、ダッシュボード上に登録されているコンピュータ全てに対しGet-HotFix コマンドレットが実行され、結果が表示されます。
直近の更新日でソートしたい場合は、上記スクリプトの最後に下記を付けます。
Get-WssComputer | foreach {Get-HotFix -ComputerName $_.devicename} | Sort InstalledOn –Desendingその他に、期間指定や特定の更新プログラムのみ表示する、なども出来ます。
今回のスクリプトは2つのコマンドレットから構成されています。
- Get-WssComputer コマンドレット
Get-WssComputer コマンドレットは、Windows Server Essentials 専用のモジュール「WssCmdlets」に組み込まれています。
WSE 2012 R2に登録されている全てのコンピュータ情報を取得・表示するコマンドレットです。 - Get-HotFix コマンドレット
デバイスに適用されている更新プログラムを取得します。
-ComputerName パレメータを指定する事でリモート先の更新プログラムを取得します。
このパラメータは、WinRMの設定に依存しません。
詳細は後ほど。
注意点
よくありがちな点ですが、PRCを使う場合、実行結果が失敗する!という場合があります。RPC サーバーを利用できません? - Ask the Network & AD Support Team上記リンクにおいて説明されている通り、TCP 135番が遮断されているため「PRC サーバーを利用できません」のエラー メッセージが表示される場合があります。
そのため、クライアントPCのファイアウォールの設定が必要な場合があります。
サーバ上のスクリプト 実行エラー メッセージ
Get-HotFix : RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA)
発生場所 行:1 文字:1
+ get-hotfix -ComputerName クライアント名
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-HotFix], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Microsoft.PowerShell.Commands.GetHotFixComma
nd
クライアントのファイアウォールの遮断メッセージ(ESET Smart Security v7)
YYYY/MM/DD HH:MM:SS
通信はルールによって遮断されました
WSE 2012 R2 IP Address:xxxxx
Client IP Address:135
TCP
内向きのRPC要求を遮断
C:\Windows\System32\svchost.exe
NT AUTHORITY\NETWORK SERVICE
ファイアウォール 設定サンプル
TCP 135を許可するESET Smart Security v7 ファイアウォールの設定サンプルを載せておきます。- 方向:内向き
- アクション:許可
- プロトコル:TCP
- リモート IPアドレス:WSE 2012 R2のIPアドレス
- リモート ポート:全て
- ローカル IPアドレス:*
- ローカル IPアドレス:135(EPMAP:End Point Mapper)
- アプリケーション:C:\Windows\System32\svchost.exe