我在工作场所的几台计算机上运行一个软件,该软件可以运行存储在中央计算机共享文件夹中的不同音频和视频文件。该软件在 Windows 7 上运行,我公司的每个人都可以从共享文件夹中添加或删除文件,但这种特权会使数据面临风险。我想在文件被删除时给自己创建一个电子邮件警报。我已经编写了一个 Windows Powershell 脚本,用于从 smtp 服务器向我发送电子邮件,但如何将其与特定共享文件夹中的文件或文件夹删除事件联系起来?
答案1
您可以使用 IO.FileSystemWatcher 来触发文件系统事件的操作。
首先要定义文件夹路径:
$watchFolderPath = "C:\Users\Public\Documents"
$watchFolderFilter = "*.*"
接下来启动文件观察器:
$watcher = New-Object IO.FileSystemWatcher $watchFolderPath, $watchFolderFilter -Property @{
IncludeSubdirectories = $true
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
然后配置已删除对象的事件:
$onDeleted = Register-ObjectEvent $watcher Deleted -SourceIdentifier FileDeleted -Action {
$FileName = $Event.SourceEventArgs.FullPath
$messageBody = "File `"$FileName`" was deleted."
Send-MailMessage -To [email protected] -Subject "File Deleted" -Body $messageBody -SmtpServer mail.mydomain.com
}
要手动删除事件,您可以使用以下命令:
Unregister-Event -SourceIdentifier FileDeleted