2014年3月11日火曜日

◆WindowsUpdate情報、McAfee情報

McAfeeのDatバージョンとWindowsUpdateの最終更新日を毎月報告せよ、と会社からのありがたーいお達し。

いまどき、「力技でやるんかい」って突っ込みはうちの会社には通用しない。

これまでは某H社の馬鹿高いツールを使っていたのだが、よっぽど評判が悪いのか待てど暮らせどWindows8には対応してこない。

ActiveDirectoryでも入れてちょっとしたツールでも作って情報収集すれば一発なのだが、何があっても(目先の)節約至上主義の会社なので力技をこよなく好む。

とりあえず自分だけは楽をしようとスクリプトを書いてみた。

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030

param(
  $mailFrom,
  $mailTo
)
$path = 
"hklm:SOFTWARE\Network Associates\ePolicy Orchestrator\Application Plugins\VIRUSCAN8800"

$prop = Get-ItemProperty -Path $path
#-----
$Session = New-Object -ComObject Microsoft.Update.Session 
$Searcher = $Session.CreateUpdateSearcher() 
$current = $Searcher.QueryHistory(1,1) | select -ExpandProperty date

#-----
$mess1 = "McAfee Datバージョンは 【{0}】 です。" -f $prop.DATVersion
$mess2 = "WindowsUpdate最終適用日は 【{0}】 です。" -f $current

#-----
if($mailFrom -and $mailTo){
  Send-MailMessage    -To $mailTo
                                    `
                     
-From $mailFrom
                                `
                     
-Subject "報告レポート"
                          `
                     
-SmtpServer "hoge.ccc.co.jp"
                  `
                     
-Body "`r`n$mess1`r`n$mess2"
                   `
                     
-Encoding  ([System.Text.Encoding]::
Default)
}

else{
  Add-Type -AssemblyName System.Windows.Forms
  [WIndows.Forms.MessageBox]::Show("$mess1`r`n$mess2") | Out-Null
}

McAfeeのDatバージョンについてはレジストリに持っている値を使ってみました。(確実かどうかは判りません)

WindowsUpdateについては、きっとやり方が色々あるのでしょうが、今回は以下のサイトを参考にしました。
Hey, Scripting Guy! コンピューターに追加されたすべての更新プログラムの一覧を取得する方法はありますか

12行目の「QueryHistory」メソッドで履歴の開始位置と件数を指定する様なので最新の1件を取得してみました。

そのまま実行すると結果をメッセージボックス表示、パラメータを指定するとメール送信としてみました。

------

WindowsUpdateの日付については「Get-HotFix」なんてコマンドレットがあるので、そちらのほうがきっと簡単ですよね・・・。

0 件のコメント:

コメントを投稿