我有一个同事,他有很多创意,但我对PowerShell没有天赋。他希望定期检查文件夹的更改。一旦有新文件添加到文件夹中,他希望通过邮件得到通知。所以,我想我需要一个PS脚本来实现这一点。
但我完全不知道该怎么做。
我找到了下面的代码-可以修改它来完成这项工作吗?
Param (
[string]$Path = "C:\Test",
[string]$SMTPServer = "SMTP IP",
[string]$From = "MyMail@domain.com",
[string]$To = "MyMail@domain.com",
[string]$Subject = "New stuff!"
)
$SMTPMessage = @{
To = $To
From = $From
Subject = "$Subject at $Path"
Smtpserver = $SMTPServer
}
$File = Get-ChildItem $Path | Where { $_.LastWriteTime -ge [datetime]::Now.AddMinutes(-1) }
If ($File) {
$SMTPBody = "`nThe following files have recently been added/changed:`n`n"
$File | ForEach { $SMTPBody += "$($_.FullName)`n" }
Send-MailMessage @SMTPMessage -Body $SMTPBody
}
任何帮助都将不胜感激。
1条答案
按热度按时间vltsax251#
要获得有关特定文件夹和/或其子项的更改的通知,可以使用.Net Frameworks
FileSystemWatcher
类。使用PowerShell示例化一个新的类,方法是:然后,要获得有关更改的通知,请使用
Register-ObjectEvent
注册一个事件并添加您的邮件块:虽然这是一个很好的自动通知解决方案,没有沉重的循环,它也有一些缺点。在这种配置下,你会得到一个邮件为每文件改变。移动目录与文件束将导致-束邮件。
有关
FileSystemWatcher
s的更多信息,请访问: