我在服务器上运行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
}
}