2010年11月19日金曜日

◆プロセスの開始終了を監視する(Register-WmiEvent、Get-Event)

#requires -version 2.0
#
# プロセス開始・終了の監視
#

Register-WmiEvent -Class win32_ProcessStartTrace -SourceIdentifier processStarted
Register-WmiEvent -Class win32_ProcessStopTrace -SourceIdentifier processStoped

try{
    While($true){
        $newEvent = Wait-Event
        $pname = $newEvent.SourceEventArgs.NewEvent.ProcessName
        $ptime = $newEvent.TimeGenerated.DateTime
        switch($newEvent.SourceIdentifier){
            "processStarted"{
                Write-Host $ptime $pname "開始";break}
            "processStoped"{
                Write-Host $ptime $pname "終了";break}
        }
       
        Get-Event | Remove-Event
    }
}
catch{
    Write-Warning "以下のエラーが発生しました"
    $error[0]
}
finally{
    #イベントを削除し購読をやめる
    Get-Event | Remove-Event
    Get-EventSubscriber | Unregister-Event
}

20101119174820

Register-WmiEventコマンドレットでイベントを取得するクラスを指定する。
識別名は一意な適当な名前をつける。
Wait-Eventコマンドレットでイベント待ち。

一度発生したイベントはRemoveしないと永遠に降ってくる。

終了するときはCtrl+Cで。

0 件のコメント:

コメントを投稿