プロジェクト:継続的に追加されているログ ファイルがあります。このログ ファイルには、場合によってはエラー (エラーには常に "インポートできません" と一意の ID が含まれます) が追加されます。このエラーがログ ファイルに追加されたときに、電子メールでアラートを受け取る必要があります。
プロジェクトの現在のステータス: Select-String を使用してログ ファイルをスキャンするスクリプト (15 分ごとに実行するようにスケジュールされています) があり、このエラーが見つかった場合は、alert-(Get という名前の別のテキスト ファイルに追加されます。 -日付).txt. PS スクリプトの最後に、alert.txt ファイルがメールで送信されます。
問題:新しいログ ファイルが毎日作成されるため、スクリプトはそのファイルのみをスキャンします。問題は、エラーが見つかると、その後のすべてのスキャンで、既に認識しているエラーのアラートが送信されることです。後続のアラートには新しいエラーのみが含まれるようにします。
問題を解決するための現在の試み ログ ファイル内のサンプル エラーは次のようになります。
1/29/2015 13:38:45 1/29/2015 13:38:45 Sales Order User Import Unable to import OHDR_2785_228038_01292015.txt due to required files missing. Files are being removed from current directory to suspense directory.
ログ ファイル内のエラーの一意の ID を抽出する手段をスクリプトに追加しました。この場合は 2785 です。この ID とその他のエラー ID は、oldAlerts.txt という名前の別のテキスト ファイルに追加されます。したがって、内容は次のようになります。
2785
1182
1353
1555
Select-String の結果からこれらの行を除外する方法をスクリプトに追加したいと考えています。これまでの私の選択文字列は次のとおりです。
Get-ChildItem \txtforerp\Import\Log | Where{$_.LastWriteTime -gt (Get-Date)-$ts -AND $_.LastWriteTime -lt (Get-Date)} | select-string -Pattern "Unable to import" | Out-File $path\"$alert.txt"
oldAlert.txt ファイルの ID をフィルターとして使用して、新しいエラーのみがアラートに追加されるようにする方法を教えてください。私の方法がベスト プラクティスでない場合は、他の方法を使用してもかまいません。