2012-01-18 8 views
0

サーバーリストを処理し、各サーバーのエラーログを検索文字列と照合してから、次のコードを送信します( 'jon Z'と 'manojlds'エラー・ログとエラー・ログが不良なサーバーをリストした電子メール・レポート。PowerShell - Countメソッドの使用に問題があります

私が今やりたいことは、エラーログとエラーログが悪いサーバーの数のうち、の数がであり、その情報を電子メールレポートにも入れてください。

私は私の電子メールレポートの各見出しにこのようなものを持っているでしょう:

Nのサーバーが不正なエラーログを持っている:

NサーバはOKです:

私はCountメソッドを使用してこれを達成しようとしていましたが、今まで成功していませんでした。 Countメソッドは正しい方法ですか?それで、どうすればいいですか(どこで私のコードに適用しますか)?そうでない場合、最良のアプローチは何ですか?

コード:事前に

$BadServerLogs = "<font style=`"font-family:verdana;font-size:9pt`"><p><b>The following servers have bad error logs:</b></p>" 
$GoodServerLogs = "<font style=`"font-family:verdana;font-size:9pt`"><p><b>The following servers are OK:</b></p>" 

# Use hash table to associate server list to search string array 
$Groups = @{ 
$SERVER_LST_1=$SEARCH_STR_ARRAY_1; 
$SERVER_LST_2=$SEARCH_STR_ARRAY_2; 
$SERVER_LST_3=$SEARCH_STR_ARRAY_3; 
$SERVER_LST_4=$SEARCH_STR_ARRAY_4; 
} 
$StartupErrors = @{} 
$Groups.keys | %{ 
$key = $_ 
gc $key | %{ 
    # Check StartupError.log files for errors 
    $StartupErrors[$_] = Get-ChildItem -Path \\$_\$LOG_PATH -Include StartupError.log -Recurse | Select-String -notmatch $Groups["$key"] 
    If ($StartupErrors[$_]) 
    { 
     $Subject = "StartupError Logs Report: BAD ERROR LOGS!" 
     $BadServerLogs += "<li><a href=`"\\$_\$LOG_PATH\StartupError.log`">$_</a></li>" 
    } 
    Else 
    { 
     $Subject = "StartupError Logs Report: All Logs are Fine" 
     $GoodServerLogs += "<li>$_</li>" 
    } 
} 
} 
# Send email listing servers with bad/good StartupError log files 
Send-MailMessage -Body "$BadServerLogs $GoodServerLogs" -BodyAsHtml -Subject $Subject -SmtpServer $SmtpServer -To $MailTo -From $MailFrom 

ありがとう!ループの増分に続いてそれぞれのケースに応じて

$goodCount = 0 
$badCount = 0 

+0

どこにでも「カウント」は表示されませんか? – JNK

+0

彼はどこに行こうかと尋ねていると思います...最初の2行はあなたがカウントを必要とする場所ですが、カウントはまだ分かりません。 – JohnL

答えて

4

-Keithあなただけの2つの変数を作成することができます

If ($StartupErrors[$_]) 
{ 
    $Subject = "StartupError Logs Report: BAD ERROR LOGS!" 
    $BadServerLogs += "<li><a href=`"\\$_\$LOG_PATH\StartupError.log`">$_</a></li>" 
    $badCount += 1 
} 
Else 
{ 
    $Subject = "StartupError Logs Report: All Logs are Fine" 
    $GoodServerLogs += "<li>$_</li>" 
    $goodCount += 1 
} 

その後、いくつかのHTMLを作成し、それを送信します。

$html = "<h1>The following $badCount servers have bad error logs:</h1>" + $BadServerLogs 
$html += "<h1>The following $goodCount servers are OK:</h1>" + $GoodServerLogs 

Send-MailMessage -Body $html -BodyAsHtml -Subject $Subject -SmtpServer $SmtpServer -To $MailTo -From $MailFrom 
+0

ありがとう、アンディ。それは完璧に働いた! – Keith

+0

@Keithようこそ。 –

関連する問題