McAfeeのDatバージョンとWindowsUpdateの最終更新日を毎月報告せよ、と会社からのありがたーいお達し。
 いまどき、「力技でやるんかい」って突っ込みはうちの会社には通用しない。
 これまでは某H社の馬鹿高いツールを使っていたのだが、よっぽど評判が悪いのか待てど暮らせどWindows8には対応してこない。
 ActiveDirectoryでも入れてちょっとしたツールでも作って情報収集すれば一発なのだが、何があっても(目先の)節約至上主義の会社なので力技をこよなく好む。
 とりあえず自分だけは楽をしようとスクリプトを書いてみた。
     |     | 001002
 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 件のコメント:
コメントを投稿