{"id":158,"date":"2014-07-31T10:02:09","date_gmt":"2014-07-31T08:02:09","guid":{"rendered":"http:\/\/192.100.1.173\/blog\/?p=158"},"modified":"2014-07-31T10:02:09","modified_gmt":"2014-07-31T08:02:09","slug":"powershell-file-system-watcher","status":"publish","type":"post","link":"https:\/\/lukas.kurth.rocks\/blog\/2014\/07\/31\/powershell-file-system-watcher\/","title":{"rendered":"Powershell &#8211; File Sys Watcher"},"content":{"rendered":"<p>Guten Abend,<\/p>\n<p style=\"text-align: justify;\">ich habe die letzten Tage noch etwas f\u00fcr die Arbeit schreiben sollen: ein Script welches Daten automatisch in einen anderen Pfad kopiert, sobald diese erstellt werden. Nach ein wenig Sucharbeit bin ich \u00fcber folgende M\u00f6glichkeit gesto\u00dfen: \u00dcber ein <strong>FileSystemWatcher Event<\/strong> bestimmte Abl\u00e4ufe auszuf\u00fchren.<\/p>\n<pre toolbar=\"false\" lang=\"ps\">Write-Host \"TXT-Copy\" -F Magenta\n\n# Error Handling\n$ErrorActionPreference = \"Stop\" # Jede Exception ist ein TerminalError\ntrap {\n    Write-Host (\"Fehler im Script: {0}\" -f $_.Exception.Message) -F White -B Red;\n    continue\n}\n\n# Pfade\n$srcDir=\"\\PC333tempDaten\"\n$dstDir = \"Z:in\"\n\n# Informationen ausgeben #\nWrite-Host \"## Informationen ##\" -F DarkGray\nWrite-Host \"> Quelle : $srcDir\" -F DarkGray\nWrite-Host \"> Ziel   : $dstDir\" -F DarkGray\nWrite-Host\n\n# Event \/ Watcher #\n$watcher = New-Object System.IO.FileSystemWatcher\n$watcher.Path = $srcDir\n$watcher.IncludeSubdirectories = $true\n$watcher.EnableRaisingEvents = $true\n\n# Technisch gesehen Datei entfernen\n$deleted = Register-ObjectEvent $watcher \"Deleted\" -Action {\n    Write-Host (Get-Date -F \"dd hh:mm:ss\")\"$($eventArgs.Name)\" -F Cyan\n}\n\n$created = Register-ObjectEvent $watcher \"Created\" -Action {\n    Move-Item -Path (\"{0}{1}\" -f $srcDir,\"*\") -Dest $dstDir\n}\n\nWrite-Host \"Script-Start\"(Get-Date -F \"dd hh:mm:ss\") -F Green\n\nWait-Event\n\nWrite-Host \"Script-Ende\" -F Red\n<\/pre>\n<p style=\"text-align: justify;\"><!--more--><\/p>\n<p style=\"text-align: justify;\">Das mit dem Verschieben hatte ich uspr\u00fcnglich anders vorgesehen.<\/p>\n<p style=\"text-align: justify;\">Als mich mein Chef damit beautragte eine alternative L\u00f6sung zu finden habe ich erst einmal nach freien &#8211; auch kommerziell &#8211; Programmen zu suchen:<\/p>\n<ul>\n<li style=\"text-align: justify;\"><a href=\"http:\/\/www.dropitproject.com\/\">DropIT<\/a> ist eine nette kleine und vor allem freie Software. Leider funktionierte der &#8222;angepriesene&#8220; FTP-Upload nicht so ganz. Au\u00dferdem ist automatisches Verschieben nicht die Grundidee hinter dem Programm.<br \/>\n(Links: <a href=\"http:\/\/windows.appstorm.net\/reviews\/productivity-reviews\/dropit-keep-your-files-organized-automatically\/\">Organisieren<\/a>, <a href=\"http:\/\/lifehacker.com\/5806828\/dropit-keeps-your-desktop-clean-by-sorting-all-your-files-for-you\">Sortieren vs. Belverde<\/a>)<\/li>\n<\/ul>\n<ul>\n<li style=\"text-align: justify;\"><strong>FTP Rush<\/strong> &#8211; dieses Tool wirbt damit Daten automatisch auf dem aktuellen Stand zu halten. Quasi ein FTP-Sync Programm. Die Aufmachung erinnert hier ein wenig an FileZilla. Mit der Script-Sprache und einer Task-Funktion sollen die Daten aktualisiert werden. Dies funktionierte nach langem auch mit der mitgelieferten Funktion (siehe Handbuch), allerdings sollten die Daten ja nicht nur kopiert, sondern verschoben werden (engl: move). Leider konnte ich keine Funktion zum L\u00f6schen der Quelldatei finden. Daher erwies sich dieses Programm leider auch nicht als geeignet.<br \/>\n(Links: <a href=\"http:\/\/www.wftpserver.com\/kb_tips.htm\">QuickTips<\/a>, <a href=\"http:\/\/dogus.free.fr\/ftprush\/RushAppFTP_all.htm\">Befehle<\/a>)<\/li>\n<\/ul>\n<ul>\n<li style=\"text-align: justify;\"><strong>FTP Use Inst<\/strong> &#8211; dieses Programm soll angeblich laufen wie \u201enet use\u201c auch, nur eben mit FTP Laufwerken. In unserem Fall bekam ich damit allerdings keine Verbindung zu Stande; Wieder einmal ohne einen gro\u00dfen Hinweis warum dies nicht funktionieren wollte.<\/li>\n<\/ul>\n<ul>\n<li style=\"text-align: justify;\"><strong>FDInst<\/strong> (FTP Drive v3.5) &#8211; welche Lizenz das Programm hat ist mir immer noch ein wenig r\u00e4tselhaft. Das Programm funktionierte ebenfalls nicht wirklich. Keine Ahnung warum. Vielleicht liegt es daran, dass nur englisch und russisch einstellbar sind \ud83d\ude42<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Diese Programme waren als solches nicht schlecht. Die Ideen die hinter den Programmen steckten waren teilweise gut durchdacht, allerdings nicht f\u00fcr unsere Zwecke geeignet. Daher werden wir wohl leider auf ein kostenpflichtiges Programm umsteigen m\u00fcssen, bzw. haben dies bereits getan.<\/p>\n<p style=\"text-align: justify;\">Durch das o.g. Script werden in der Regel alle paar Stunden mehrere Text-Dateien kopiert. Das Laufwerk ist in unserem Fall durch ein <a href=\"http:\/\/www.chip.de\/downloads\/Netdrive-letzte-Freeware-Version_34286057.html\">NetDrive<\/a> verbunden. Das Programm kann, wenn denn die ben\u00f6tigten Runtimes (vcredist) installiert sind, FTP Pfade in Windows als Laufwerk hinzuf\u00fcgen. Bei uns klappte dies allerdings auch nur mit Version 1.4.0 und leider nicht mit der aktuellen Version der zweiten Generation. Warum mir das Laufwerkin 2.2.0 keine Unterordner anzeigen wollte, konnte mir allerdings noch keiner sagen.<\/p>\n<p style=\"text-align: justify;\">Eine andere M\u00f6glichkeit w\u00e4re sicherlich das ganze \u00fcber <a href=\"http:\/\/www.chip.de\/downloads\/Belvedere_42338736.html\">Belverde<\/a> laufen zu lassen. Belverde ist m\u00f6glicherweise nicht ganz so sch\u00f6n anzusehen, daf\u00fcr braucht es aber auch weniger Ressourcen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Guten Abend, ich habe die letzten Tage noch etwas f\u00fcr die Arbeit schreiben sollen: ein Script welches Daten automatisch in einen anderen Pfad kopiert, sobald diese erstellt werden. Nach ein wenig Sucharbeit bin ich \u00fcber folgende M\u00f6glichkeit gesto\u00dfen: \u00dcber ein FileSystemWatcher Event bestimmte Abl\u00e4ufe auszuf\u00fchren. Write-Host &#8222;TXT-Copy&#8220; -F Magenta # Error Handling $ErrorActionPreference = &#8222;Stop&#8220; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,19,10],"tags":[39,80,138,141,155,182,227],"class_list":["post-158","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-powershell","category-scripting","tag-belverde","tag-fsw","tag-move","tag-netdrive","tag-powershell-2","tag-script","tag-watcher"],"_links":{"self":[{"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/posts\/158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/comments?post=158"}],"version-history":[{"count":0,"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/posts\/158\/revisions"}],"wp:attachment":[{"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/media?parent=158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/categories?post=158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lukas.kurth.rocks\/blog\/wp-json\/wp\/v2\/tags?post=158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}