最新のセキュリティ イベント 4740 について、SMTP 経由でメールを送信するようにセットアップされた小さなスクリプトをドメイン コントローラーに持っています。
スクリプトを手動で実行すると、意図したとおりに実行されます。ただし、スケジュールされたタスクを介して実行するように設定すると、実行されたように見えますが、何も起こりません (電子メールはありません)。
スクリプトは次のとおりです。
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
}
$Event = Get-EventLog -LogName Security -InstanceId 4740 -Newest 5
$MailBody= $Event.Message + "`r`n`t" + $Event.TimeGenerated
$MailSubject= "Security Event 4740 - Detected"
$SmtpClient = New-Object system.net.mail.smtpClient
$SmtpClient.host = "smtp.domain.com"
$MailMessage = New-Object system.net.mail.mailmessage
$MailMessage.from = "fromemail@domain.com"
$MailMessage.To.add("toemail.domain.com")
$MailMessage.IsBodyHtml = 1
$MailMessage.Subject = $MailSubject
$MailMessage.Body = $MailBody
$SmtpClient.Send($MailMessage)
スケジュールされたタスクは次のように設定されます。
RunsAs:LOCAL SYSTEM
Trigger: On event - Log: Security, Event ID: 4740
Action: Start Program - C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Argument: -executionpolicy bypass c:\path\event4740.ps1
私も次のことを試しました:
Trigger: On event - Log: Security, Event ID: 4740
Action: Start Program - C:\path\event4740.ps1
タスク履歴によると、タスクの開始、アクションの開始、作成されたタスク プロセス、アクションの完了、タスクの完了。同じ「問題」でサイト上のいくつかのさまざまなリンクを調べましたが、それらはすべて、私が持っていない何らかの変数を持っているようです. また、言及された解決策のいくつかを、それらが多少関連していると考えて試しましたが、残念ながら何も機能していません. ここに記載されているように、スケジュールされたタスクを削除してリセットしようとしました: http://blogs.technet.com/b/heyscriptingguy/archive/2012/08/11/weekend-scripter-use-the-windows-task-scheduler -to-run-a-windows-powershell-script.aspx
以前にこのタイプのエラーに遭遇した人、またはこの問題を回避する方法を知っている人はいますか?
トラブルシューティング:
スケジュールされたタスクを介して .bat ファイルを呼び出すことにしました。現在の日付/時刻を監視対象フォルダーにエコーする単純なファイルを作成しました。ファイルを手動で実行し、4740 イベントによってトリガーされたタスクを介して実行すると、望ましい結果が得られました。代わりに.ps1ファイルを呼び出すように.batファイルを変更すると、手動で機能しました。4740 イベントによってトリガーされた場合、.bat は実行されなくなりました。