none
FileSystemWatcher Mail verschicken wenn Ordnerstruktur sich verändert RRS feed

  • Frage

  • Hallo zusammen:)

    Ich habe die Aufgabe bekommen, Verzeichnisse zu überwachen. Nun habe ich eine Vorlage genommen (FileSystemWatcher). Nun möchte ich, das wenn sich ein Ordner verschiebt oder gelöscht wird, eine Mail an mich verschickt wird. Komme nicht auf die Lösung. Könntet ihr mir einige Tipps geben der zum Ziel führt?

    Der jetztige Quellcode:

    #Überwachungsscript
    #Autor: JuiiceeHead
    #Datum: 25.11.2016

    #------------------- Ordner überwachen --------------------
    $folder = 'C:\Users\PC18\Desktop\Stecher' #Verzeichnis das überwacht wird
    $filter = '*.*'  #Filter einsetzen (zb nur bilder(.png))
     
    #Unterordner auch überwachen?                          
    $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}
     
    # Here, all three events are registerd.  You need only subscribe to events that you need:
     
    Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
    $name = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
    $timeStamp = $Event.TimeGenerated
    Write-Host "The file '$name' was $changeType at $timeStamp" -fore green
    Out-File -FilePath C:\Users\PC18\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}
     
    Register-ObjectEvent $fsw Deleted -SourceIdentifier FileDeleted -Action {
    $name = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
    $timeStamp = $Event.TimeGenerated
    Write-Host "The file '$name' was $changeType at $timeStamp" -fore red
    Out-File -FilePath C:\Users\PC18\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}
     
    Register-ObjectEvent $fsw Changed -SourceIdentifier FileChanged -Action {
    $name = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
    $timeStamp = $Event.TimeGenerated
    Write-Host "The file '$name' was $changeType at $timeStamp" -fore white
    Out-File -FilePath C:\Users\PC18\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}

    #---------- Mail senden --------------
    $SMTPServer = "smtp.gmail.com"
    $SMTPPort = "25"
    $Username = "E-Mail Adresse"
    $Password = "PW"
    #$Dateiname = "C:\Users\PC18\Desktop\Outlog.txt"
    $file = "C:\Users\PC18\Desktop\Outlog.txt"
    $attatchment = New-Object System.Net.Mail.Attachment($file)
    $to = "Empfänger"
    $subject = "Ueberwachung Ordner"
    $body = (Get-Date).ToShortTimeString()
    $message = New-Object System.Net.Mail.MailMessage
    $message.subject = $subject
    $message.body = $body
    $message.to.add($to)
    #$message.Attachments.Add($att)
    $message.Attachments.Add($attatchment)
    $message.from = $Username
    $smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
    $smtp.EnableSSL = $true
    $smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
    $smtp.send($message)

    Vielen Dank


    Freitag, 25. November 2016 15:11

Antworten

  • klingt irgendwie nach illegaler Überwachung?

    warum nutzt du nicht die Audit Funktion von Windows. Wenn dann ein bestimmter Event auftritt kannst du dir ein Mail erzeugen lassen. Alles Standard von Windows


    CH


    Freitag, 25. November 2016 21:35

Alle Antworten