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
#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"}
$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"
$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)
$attatchment = New-Object System.Net.Mail.Attachment($file)
$to = "Empfänger"
$subject = "Ueberwachung Ordner"
$body = (Get-Date).ToShortTimeString()
$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.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)
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$smtp.send($message)
Vielen Dank