监视某个文件夹/文件,并在其超过一定大小时发送通知

监视某个文件夹/文件,并在其超过一定大小时发送通知

首先介绍一下我的问题的背景:

有时我们使用的应用程序会在日志中陷入循环,从而导致日志文件非常大(每秒增加 30 MB)。由于我们无法访问应用程序的完整源代码,因此我们无法自行修复此问题。我们必须手动关闭应用程序服务以删除日志文件,然后重新启动应用程序。

什么能真正帮助我们:

由于我们不想每隔几个小时就检查日志文件的大小,所以我们考虑使用一种自动化机制来为我们完成这项工作。这就是我提出这个问题的原因:

是否有可能创建一个执行文件(由任务计划程序每小时执行一次或全天候扫描文件/文件夹),文件夹或文件的大小,并在文件夹/文件超过一定大小(例如 200 MB)时发送任何类型的通知(例如电子邮件/其他任何内容)。

我对 PowerShell 和批处理文件完全是新手,因此我非常感谢任何形式的咨询,如果可能的话,还能得到完整提供和描述的解决方案。

答案1

根据评论部分中 Seth 的建议,我使用列出的方法创建了脚本 - 对我来说效果很好:

$startFolder = "C:\softwarename\data\logs";

$totalSize = 0;

$colItems = Get-ChildItem $startFolder
foreach ($i in $colItems)
{
    $subFolderItems = Get-ChildItem $i.FullName -recurse -force | Where-Object {$_.PSIsContainer -eq $false} | Measure-Object -property Length -sum | Select-Object Sum
    $totalSize = $totalSize + $subFolderItems.sum / 1MB

}

$startFolder + " | " + "{0:N2}" -f ($totalSize) + " MB"

if($totalSize -gt 1000){

Send-MailMessage -to "[email protected]" -from "PowerShell <[email protected]>" -Subject "Test" -body "Message Message Message" -Credential "MailUser"

}

一旦文件夹大于 1000 MB(-gt 1000),它就会发送一封电子邮件。

相关内容