【发布时间】:2015-06-19 03:04:38
【问题描述】:
我知道我错过了一些小东西。但是,我忽略了一些东西。我希望脚本在特定路径中查找最新日志文件,并检查日志文件的最后一行,如果它包含特定错误,请通过电子邮件发送通知。它正确地找到了最新的文件,但似乎没有给我最后一行的输出。想想我错过了什么愚蠢的事情?
Set-Location -Path "\\COMPUTER\C$\application\logs"
$latest = Get-ChildItem | Sort-Object LastAccessTime -Descending | Select-Object -First 1
$latest.name
$lastentry = Get-Content $latest | Select-object -last 1
if ($lastentry -like "ERROR: Access violation at address*") {
$strFromAddress = "monitoring@acertaindomain.com"
$strToAddress = "LotsOfPeople@acertaindomain.com"
$strMessageSubject = "Your log has errors"
$strMessageBody = "Bad stuff is happening"
$strSendingServer = "mail.acertaindomain.com"
}
【问题讨论】:
-
日志文件末尾是否有一系列空行?
Get-Content $latest | Where-Object { $_.Trim() -ne '' } | Select-Object -Last 1将获得最后一个非空白行。 -
小心任何尾随换行符。 Get-Content 在换行符处拆分,因此它返回的最后一个条目通常是一个空字符串。
标签: powershell logging