Windows タスクスケジューラのイベントトリガーを利用しWindowsログ内容をメール送信
今回利用するのはWindowsのPowerShellを利用します。
事前に、PowerShellの実行権限設定を行ってください。
[スタート]->[すべてのプログラム]->[アクセサリ]->[Windows PowerShell](管理者権限で実行)
■ポリシーを変更する
PS C:\windows\system32> Set-ExecutionPolicy RemoteSigned
PS C:\windows\system32> Get-ExecutionPolicy
RemoteSigned
PS C:\windows\system32>
■PowerShellスクリプトを用意(test.ps1)
#PowerShellでメール送信
$username = "ore@hoge.com"
$myhost = "192.168.0.160"
$port = 25
$from = "ore@hoge.com"
$recipients = "ore@hoge.com"
$subject = "server log info"
$body = ""
# コマンド参考
# $logArray = Get-EventLog -log System -InstanceId 1073748860 -Newest 1 | Format-List
$logArray = Get-EventLog -log System -InstanceId 1073748860 -Newest 1
$Index = [string] $logArray.Index
$EntryType = [string] $logArray.EntryType
$InstanceId = [string] $logArray.InstanceId
$EventID = [string] $logArray.EventID
$Source = [string] $logArray.Source
$workMessage = [string]$logArray.Message
$ReplacementStrings = [string]$logArray.ReplacementStrings
$body = $EntryType +"`n"+ $EventID +"`n"+ $Source+"`n"+$workMessage+"`n"+$ReplacementStrings
$sc = New-Object Net.Mail.SmtpClient
$sc.Host = $myhost
$sc.Port = $port
$sc.Credentials = New-Object Net.NetworkCredential
$sc.Credentials.UserName = $username
$sc.send($from, $recipients, $subject, $body)
■タスクスケジューラーから起動するバッチファイルを作成(test.bat)
t-ExecutionPolicy RemoteSigned
事前に、PowerShellの実行権限設定を行ってください。
[スタート]->[すべてのプログラム]->[アクセサリ]->[Windows PowerShell](管理者権限で実行)
■ポリシーを変更する
PS C:\windows\system32> Set-ExecutionPolicy RemoteSigned
PS C:\windows\system32> Get-ExecutionPolicy
RemoteSigned
PS C:\windows\system32>
■PowerShellスクリプトを用意(test.ps1)
#PowerShellでメール送信
$username = "ore@hoge.com"
$myhost = "192.168.0.160"
$port = 25
$from = "ore@hoge.com"
$recipients = "ore@hoge.com"
$subject = "server log info"
$body = ""
# コマンド参考
# $logArray = Get-EventLog -log System -InstanceId 1073748860 -Newest 1 | Format-List
$logArray = Get-EventLog -log System -InstanceId 1073748860 -Newest 1
$Index = [string] $logArray.Index
$EntryType = [string] $logArray.EntryType
$InstanceId = [string] $logArray.InstanceId
$EventID = [string] $logArray.EventID
$Source = [string] $logArray.Source
$workMessage = [string]$logArray.Message
$ReplacementStrings = [string]$logArray.ReplacementStrings
$body = $EntryType +"`n"+ $EventID +"`n"+ $Source+"`n"+$workMessage+"`n"+$ReplacementStrings
$sc = New-Object Net.Mail.SmtpClient
$sc.Host = $myhost
$sc.Port = $port
$sc.Credentials = New-Object Net.NetworkCredential
$sc.Credentials.UserName = $username
$sc.send($from, $recipients, $subject, $body)
■タスクスケジューラーから起動するバッチファイルを作成(test.bat)
powershell C:\temp\test.ps1
■タスクスケジューラーに設定
トリガーイベントを設定し、操作でプログラムの開始を指定。
起動するプログラムは、test.bat
設定タブで「新しいインスタンスを並列で実行」にしておく。
トリガーイベントを設定し、操作でプログラムの開始を指定。
起動するプログラムは、test.bat
設定タブで「新しいインスタンスを並列で実行」にしておく。
コメント