Я запускаю программное обеспечение на нескольких компьютерах на своем рабочем месте, и программное обеспечение может запускать различные аудио- и видеофайлы, хранящиеся в общей папке на центральном компьютере. Программное обеспечение работает на Windows 7, и каждый человек в моей компании может добавлять или удалять файлы из общей папки, но эта привилегия подвергает риску данные. Я думал о создании оповещения по электронной почте для себя всякий раз, когда файл удаляется. Я написал сценарий Windows PowerShell для отправки мне электронных писем с SMTP-сервера, но как я могу подключить его к событию удаления файла или папки в определенной общей папке?
1 ответ
2
Вы можете использовать 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 me@mydomain.com -Subject "File Deleted" -Body $messageBody -SmtpServer mail.mydomain.com
}
Чтобы вручную удалить событие, вы можете использовать это:
Unregister-Event -SourceIdentifier FileDeleted