用于检测日志文件失败的Powershell脚本

时间:2016-08-23 12:05:23

标签: email powershell

我在服务器上运行perfmon,日志文件进入c:\ perfmon文件夹。 perfmon任务每周重新启动,日志文件随时间收集。该文件夹中可能存在一系列具有不同日期的csv文件日期。

我想编写一个powershell脚本来检查该文件夹,以确保其中存在今天修改日期的文件。如果今天没有,我想要一封FAILED电子邮件,以便我知道看看perfmon的问题。

有没有人写过这样的东西。我在这里尝试了几个脚本,没有一个完全按照我希望的方式工作。这是我到目前为止基于其他脚本的内容。

它有点工作,但它正在检查所有文件并响应所有文件。如果我在过去三天有3个文件,今天没有,我会收到3封电子邮件,说失败。如果我有一个今天和两个较旧的我收到3 OK电子邮件。如果我今天只有一个文件,我会收到一封OK电子邮件。如何将此限制为仅一封电子邮件,以确定失败或成功。两年后该文件夹中可能有50-100个文件,如果今天没有任何文件被修改,我只想要失败。

希望一切都有道理。我担心我的Powershell技能非常弱。

$EmailTech = @{
To = 'a@a.com'
SmtpServer = 'relayserver'
From = 'a@a.com'
}
$CompareDate = (Get-Date).AddDays(-1)
Get-ChildItem -Path c:\perflogs\logs | ForEach-Object {
    $Files = (Get-ChildItem -Path c:\perflogs\logs\*.csv | Where-Object {$_.LastWritetime -gt $CompareDate} | Measure-Object).Count
        if ($Files -eq 0) 
        {
        $EmailTech.Subject = 'Perfmon File ServerA - FAIL'
        $EmailTech.Body = 'A performance monitor log file was not found on ServerA for today'
        Send-MailMessage @EmailTech  
        }
        Else 
        {
        # If we found files it's ok and we don't report it
        $EmailTech.Subject = 'Perfmon File ServerA - OK'
        $EmailTech.Body = 'A performance monitor log file was found on ServerA for today'
        Send-MailMessage @EmailTech  
        }
}

0 个答案:

没有答案