2016-03-31 8 views
0

私はまだPSでかなり緑色で、スクリプトがついています。最終目標は、特定のID(この場合は2)を持つ特定のソースによってイベントがアプリケーションログに記録され、イベントのメッセージに特定の文字列が含まれている場合に電子メールを送信することです。これらのイベントを作成するソースが同じIDで4〜5個のイベントをダンプすることがあり、古いスクリプトが最新のイベントだけを見ているので、一度にダンプされた4つまたは5つのイベントに記録された最後のイベントではない場合は、それを見つけます。だから、イベントID2がログに記録されたときに最後の10個のid2イベントを取り出し、必要な文字列を探して解析します。そして、これは私のためにすべてが壊れているところです。これまでのところ私はテストとして持つ:私もこれを試してみたPowershellスクリプトがイベントログを取得し、メッセージcontais文字列がメールを送信する場合

$eventLogs = Get-EventLog -LogName Application -Source "<source>" -InstanceId 2 -Newest 100 -EntryType Error 
    $eventLogs | ForEach-Object Message 
    if (Message -contains "<string>") 
    { 
    Write-Host "Found One" 
    } 

$eventLogs = Get-EventLog -LogName Application -Source "<source>" -InstanceId 2 -Newest 100 -EntryType Error | ForEach-Object Message 
    foreach ($event in $eventLogs) 
    { 
    if(($eventLogs) -contains "<string>") 
    { 
     write-host "found one" 
    } 
    } 

すべてを無駄に。誰かが私が逃しているものを見て助けることができますか?

+0

[PowerShellと-contains演算子](http://stackoverflow.com/questions/18877580/powershell-and-the-contains-operator) – beatcracker

答えて

0

PowerShellのどこ-オブジェクトに見て、あなただけのリストに割り当てることなく、アイテムを取得するには、コマンドの後にこのような何かを追加することができるはずです。

| Where-Object {$_.Message -like "<string>"} 

PowerShellは反復します結果はGet-EventLogから戻ってきて、それに投げることができるプロパティに基づいてフィルタリングします。

関連する問題