Я запускаю программное обеспечение на нескольких компьютерах на своем рабочем месте, и программное обеспечение может запускать различные аудио- и видеофайлы, хранящиеся в общей папке на центральном компьютере. Программное обеспечение работает на Windows 7, и каждый человек в моей компании может добавлять или удалять файлы из общей папки, но эта привилегия подвергает риску данные. Я думал о создании оповещения по электронной почте для себя всякий раз, когда файл удаляется. Я написал сценарий Windows PowerShell для отправки мне электронных писем с SMTP-сервера, но как я могу подключить его к событию удаления файла или папки в определенной общей папке?

1 ответ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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .