◆PSファイルの中身
# ローカルマシン上有効なタスクを取得し、指定ファイルに書き込む
$OutPut = "C:\BatFolder\TaskResultchecker\tasklist.csv"
$OutPut2 = "C:\BatFolder\TaskResultchecker\temp.txt"
Function gettasks()
{
"HOST,TASKNAME,RUNTIME,RESULT" | Out-File $output -encoding default
$Tasks = schtasks.exe /query /V /FO CSV | ConvertFrom-Csv | Where { $_."ユーザーとして実行" -Like "(特定アカウントでの実行されるタスクをフィルタ)" }
ForEach ($Task in $Tasks) {
If ($Task."実行するタスク" -match "TaskResultchecker"){
#自分のタスクは除く
continue
}
$HostName = $Task."ホスト名"
$BeforeRunTime = $Task."前回の実行時刻"
$TaskName = $Task."タスク名".SubString(1)
$BeforeResult = $Task."前回の結果"
"$HostName,$TaskName,$BeforeRunTime,$BeforeResult" | Out-File $OutPut -append -encoding default
}
}
# -----------------------------
# 実行結果、戻り値1以上の場合メール送信
# -----------------------------
$now = Get-Date -F F
#システムよりデータ抽出処理
gettasks
$task1 = ""
$task1 = Get-Content $OutPut | ConvertFrom-CSV | where {$_.RESULT -gt 0}
if($task1 -ne $null){
$task2 = Get-Content $OutPut | ConvertFrom-CSV | where {$_.RESULT -gt 0} > $OutPut2
# メール送信処理開始
$subject = "タスク実行異常"
$body = "確認時刻 --" + $now
$body = $body + [String]::Join("`r`n",(Get-Content $OutPut2))
# メール情報。宛先は;で複数指定可能
$smtp = "(smtpサーバIPアドレス Or ホスト名)" #SMTPサーバ(必須項目)
$from = "(送信元アドレス)" #送信元(必須項目)
# New-Opjectコマンドレットで.NETクラスをインスタンス化。
$mail = New-Object Net.Mail.MailMessage
$mail.From = $from
$mail.ReplyTo = $replyTo
$mail.Subject = $subject
$mail.Body = $body
# エンコーディング。System.Text.Encodingの静的メンバにアクセスするため::を用いている。
$mail.SubjectEncoding = [Text.Encoding]::GetEncoding("csISO2022JP")
$mail.BodyEncoding = [Text.Encoding]::GetEncoding("csISO2022JP")
# To設定。複数設定可能。
#$mail.To.Add("宛先")
$mail.To.Add("宛先メールアドレス")
#CC設定(必要があれば)
# $mail.CC.Add("CC")
# ReplyTo設定。設定なしも可。
#if($replyTo -ne ""){ $mail.ReplyTo = $replyTo }
# 添付ファイル
$temp = New-Object Net.Mail.Attachment($OutPut)
$mail.Attachments.Add($temp);
# New-Opjectコマンドレットで.NETクラスをインスタンス化。
$sc = New-Object Net.Mail.SmtpClient($smtp)
# 送信。
$sc.Send($mail)
$mail.Dispose()
Remove-Item $OutPut2
}
#if($task1 -eq $null)
# {
# exit
# }
#else
# {
# }
◆PSファイルをキックするためのBATファイル
powershell.exe -executionPolicy RemoteSigned -F C:\BatFolder\TaskResultchecker\schmoniter.ps1
0 件のコメント:
コメントを投稿