2012-01-18 46 views
0

我有以下代码(感谢来自'jon Z'和'manojlds'的输入)处理服务器列表,根据搜索字符串检查每个服务器的错误日志,然后发送一份电子邮件报告,列出错误日志错误和错误日志错误的服务器。PowerShell - 无法使用Count方法

我现在想要做的是做一个计数与错误日志错误和良好的错误日志服务器的数量,并将该信息也放在电子邮件报告。

我会在我的电子邮件报告中的每一个标题是这样的:

以下ň服务器有坏的错误日志:

以下ň服务器都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 

提前感谢! -Keith

+0

我在哪里看不到“count”? – JNK 2012-01-18 20:10:43

+0

我认为他问的是哪里......前两行是你需要计数的地方,但是你还不知道计数。 – JohnL 2012-01-18 20:12:49

回答

4

您可以只创建两个变量:

$goodCount = 0 
$badCount = 0 

然后在循环增量每个视情况而定:

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 2012-01-18 20:36:37

+0

@Keith欢迎您。 – 2012-01-18 20:55:33