Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

File Watcher Events

$
0
0

Guten Morgen liebe Techniker,

 

dies ist jetzt nicht unbedingt ein Problem, ich wüsste aber doch gerne, wie ich das am besten ändern könnte.

 

Also wir wollen hier Daten abgleichen und das möglichst ohne, dass jemand etwas manuell starten muss. Dafür ist das Beobachten der Pfade durch den File System Watcher eigentlich ganz gut geeignet. Um verschiedene Daten z.B. auf die Homepage zu laden, wird NetDrive verwendet.

 

- Da das das Verschieben der Dateien nicht startet, wenn keine Datei erstellt wird, habe ich nach dem erstellen der Events noch eine Überprüfung eingebaut, die allerdings, auch wenn Daten verschoben (also an einem Ort entfernt) werden, keine Ausgabe der verschobenen Datei/en bringt. Kann man dies irgendwie ändern?

 

- Bei ein oder zwei Pfaden geht dies hier noch so. Wenn wir aber noch mehr Pfade hinzufügen müssen/wollen, müssen wir jedes Mal den Script-Block kopieren und die Daten ändern. Gibt es hier vielleicht eine Möglichkeit das Script so zu schreiben, dass source und destination als Array abgefragt und damit Events erstellt werden können?

 

Eine Rückmeldung wäre nett :)

 

Und hier das Script soweit:

# Multiple File System Watcher
# by: Me :)
# (c) 2014

# Error Handling
$ErrorActionPreference = "Stop" # Jede Exception ist ein Error
trap {
    Write-Host ("Fehler im Script: {0}" -f $_.Exception.Message) -F White -B Red ; continue
}

$filter = "*"
$srcDirs = @("C:\Files\","X:\datei\") 
$dstDirs = @("Z:\in\","\\srvbtn4\homepage\") 

# Eventuell Informationen ausgeben ??
Write-Host "Überwachte Pfade:`t"$srcDirs -F DarkGray
Write-Host "Ziel-Pfade:`t`t"$dstDirs -F DarkGray<# #### Watcher #### #><# ## Files ## #>

$watcher = New-Object System.IO.FileSystemWatcher -ArgumentList $srcDirs[0], $filter
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true

# Dateibewegung
$deleted = Register-ObjectEvent $watcher "Deleted" -Action {
    Write-Host (Get-Date -F "dd HH:mm:ss") -F Cyan -No
    Write-Host " Files" -F Magenta -No
    Write-Host ""$($eventArgs.Name) -F Yellow
}
# Datei erstellen
$created = Register-ObjectEvent $watcher "Created" -Action {
    Move-Item -Path ("{0}{1}" -f $srcDirs[0],"*.txt") -Dest $dstDirs[0]
}<# Existing Files when script starts? #>
If (Test-Path ("{0}{1}" -f $srcDirs[0],"*.txt")) {
    Write-Host "Files Daten bereits in Quelle vorhanden. Werden kopiert ..."
    Move-Item -Path ("{0}{1}" -f $srcDirs[0],"*.txt") -Dest $dstDirs[0]
    Write-Host "Done" -F Cyan
}<# ## Homepage ##>

$watcher = New-Object System.IO.FileSystemWatcher -ArgumentList $srcDirs[1], $filter
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true

# Dateibewegung
$deleted = Register-ObjectEvent $watcher "Deleted" -Action {
    Write-Host (Get-Date -F "dd hh:mm:ss") -F Cyan -No
    Write-Host " Homepage" -F Magenta -No
    Write-Host ""$($eventArgs.Name) -F Yellow
}

# Datei erstellen
$created = Register-ObjectEvent $watcher "Created" -Action {
    Move-Item -Path ("{0}{1}" -f $srcDirs[1],"*.csv") -Dest $dstDirs[1]
}<# Existing Files when script starts? #>
If (Test-Path ("{0}{1}" -f $srcDirs[1],"*.csv")) {
    Write-Host "Homepage Daten bereits in Quelle vorhanden. Werden kopiert ..."
    Move-Item -Path ("{0}{1}" -f $srcDirs[1],"*.csv") -Dest $dstDirs[1]
    Write-Host "Done" -F Cyan
}

# Script laufen lassen
Wait-Event




Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>