Есть ли способ определить наблюдатель файловой системы только для первого переименования файла? - PullRequest
0 голосов
/ 17 мая 2019

У меня есть скрипт PowerShell, который использует файловую систему для отслеживания определенной папки. Сценарий состоит в том, что коллеги из другой команды помещают туда папку с данными для обработки. Эта папка имеет определенное соглашение об именах (начинается с гггг-мм-дд). Сценарий отслеживает события как «Создано», так и «Переименовано», поскольку они продолжают создавать папки непосредственно по отслеживаемому пути, в результате чего первоначальное имя папки становится «Новой папкой», а затем переименовывают ее. Теперь иногда мне нужно переименовать эту папку снова (более семантически), которая запускает еще одно событие и заполняет почтовые ящики всех тех, которые уведомлены Send-MailMessage, что событие запускается (то есть клиент, PM и т. Д.).

function fileWatcher {
param (
    [string]$Path
)

$FileSystemWatcher = New-Object System.IO.FileSystemWatcher
$FileSystemWatcher.Path = $Path
$FileSystemWatcher.Filter = "20*"
$Action = {
    $Object = "<a href='{0}'>{0}</a> was created at {2}" -f $Event.SourceEventArgs.FullPath,
    $Event.SourceEventArgs.ChangeType,
    $Event.TimeGenerated
    $WriteHostParams = @{
        ForegroundColor = 'Green'
        BackgroundColor = 'Black'
        Object          = $Object
    }
    try {
        Send-MailMessage -From 'example@example.com' -To 'example2@example.com' -Subject "New Backlog Folder ready to be Loaded" -Body $Object  -SmtpServer 'smtp.example.com' -ErrorAction Stop -BodyAsHtml
        Write-Host @WriteHostParams
    }
    catch { write-host "send failed" -ForegroundColor Black -BackgroundColor White } }

Register-ObjectEvent -InputObject $FileSystemWatcher Created -Action $Action
Register-ObjectEvent -InputObject $FileSystemWatcher Renamed -Action $Action

Я ожидаю, что только первоначальное создание в соответствии с соглашением об именах и первое переименование файла вызовет событие. Любые последующие переименования останутся незамеченными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...