FileSystemWatcher mit PowerShell
- Details
- Category: PowerShell
- Created: Monday, 09 January 2012 13:17
- Last Updated: Friday, 10 November 2017 19:02
- Published: Monday, 09 January 2012 13:17
- Written by Frank
- Hits: 15417
FileSystemWatcher mit eigenen Funktionen
Zu beachten ist, das die Funktionen vor dem registrieren der ObjectEvents geschrieben werden. Die eigene Funktion "filechanged" muss als global definiert werden, weil der EventWatcher in einem eigene scope läuft und die Funktion sonst nicht findet. Eine weitere Lösung wäre das dotNet-sourcing, in welchen der Pfad zum Script angegeben wird, in welchem sich die Funktion befindet.
#[Script]
"Starte Überwachung der txt Dateien in C:\Temp..."
$fsw = New-ObjectSystem.IO.FileSystemWatcher
$fsw.Path = "C:\Temp"
$fsw.IncludeSubdirectories = $true
$fsw.filter = "*.txt"
function global:fileChanged ($text) {
Write-Host "This is the filechanged function, globally defined!"
Write-Host $text
}
$OnCreated = {
Write-Host "DateiSystemereignis Created: " $eventArgs.FullPath ": " $eventArgs.ChangeType
$txt = "Created!!!"
filechanged($txt)
}
$OnChanged = {
Write-Host "DateiSystemereignis Changed: " $eventArgs.FullPath ": " $eventArgs.ChangeType
$txt = "Changed!!!"
filechanged($txt)
}
$OnDeleted = {
Write-Host "DateiSystemereignis Deleted: " $eventArgs.FullPath ": " $eventArgs.ChangeType
$txt = "Deleted!!!"
filechanged($txt)
}
$OnRenamed = {
Write-Host "DateiSystemereignis Renamed: " $eventArgs.FullPath ": " $eventArgs.ChangeType
$txt="Renamed!!!"
filechanged($txt)
}
Register-ObjectEvent -InputObject $fsw -EventName Created -Action $OnCreated
Register-ObjectEvent -InputObject $fsw -EventName Changed -Action $OnChanged
Register-ObjectEvent -InputObject $fsw -EventName Deleted -Action $OnDeleted
Register-ObjectEvent -InputObject $fsw -EventName Renamed -Action $OnRenamed
"Überwachung läuft!"
#[ScriptEnde]