anjaw 11 Geschrieben 19. Februar 2016 Melden Teilen Geschrieben 19. Februar 2016 Hallo, ich hänge momentan an einem Skript das in einem bestimmten Ordner die Dateien prüfen soll. Falls diese länger, wie 10 Minuten in dem Ordner drin liegen, soll ein Eventlog-Eintrag generiert werden. Ich habe schon ein Skript erstellt, aber das erstellt mir entweder nie einen Eintrag in dem Eventlog oder immer. :( $Treshhold = 10 #in Minuten $FilePath="D:\Testordner" $IsOlderThanThreshhold = $( $(get-date) - $(get-Item $FilePath).Lastwritetime).TotalMinutes -gt $Treshhold If($IsOlderThanThreshhold) { Write-Eventlog -Logname Application -Source MyScript -EventID 9999 -EntryType Information -Message "Im Testordner sind Dateien älter 10 Min. drin" } Bitte um Hilfe, da ich gerade den Fehler nicht finde. Gruß Anja Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 19. Februar 2016 Melden Teilen Geschrieben 19. Februar 2016 Was kommt denn bei $IsOlderThanThreshhold heraus? Gibt es evtl. eine alternative? Unser Monitoring (PRTG) kann z.B. das alter von Dateien und Ordnern überwachen. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 19. Februar 2016 Melden Teilen Geschrieben 19. Februar 2016 Hi, Ich würde lieber die Objekte direkt abfragen, als die Mutter. NTFS zeigt da manchmal gewisse Eigenheiten. $FolderPath="D:\Testordner" $LastWriteTime = (gci $FolderPath | Measure-Object -Property "Lastwritetime" -Maximum) #evtl. "gci -recurse... fuer Unterverzeichnisse" $TotalMinutes = $( (Get-Date) - $LastWriteTime.Maximum).TotalMinutes $TotalMinutes die Source "MyScript" hast du einmalig angelegt? New-EventLog -Source "MyScript" -LogName Application blub Zitieren Link zu diesem Kommentar
anjaw 11 Geschrieben 20. Februar 2016 Autor Melden Teilen Geschrieben 20. Februar 2016 (bearbeitet) Die Source habe ich angelegt. Das Script werde ich Montag probieren. Melde mich dann wieder. Eine andere Möglichkeit besteht aktuell nicht. bearbeitet 20. Februar 2016 von anjaw Zitieren Link zu diesem Kommentar
anjaw 11 Geschrieben 23. Februar 2016 Autor Melden Teilen Geschrieben 23. Februar 2016 Beim Ausführen des Skripts bekomme ich folgenden Fehler: Measure-Object : Input object "04.12.2015 12:03:08" is not numeric. At line:2 char:51 + $LastWriteTime = (gci $FolderPath | Measure-Object <<<< -Property "Lastwritetime" -Maximum) #evtl. "gci -recurse..." + CategoryInfo : InvalidType: (04.12.2015 12:03:08:DateTime) [Measure-Object], PSInvalidOperationException + FullyQualifiedErrorId : NonNumericInputObject,Microsoft.PowerShell.Commands.MeasureObjectCommand Cannot find an overload for "op_Subtraction" and the argument count: "2". At line:3 char:32 + $TotalMinutes = $((Get-Date) - <<<< $LastWriteTime.Maximum).TotalMinutes + CategoryInfo : NotSpecified: (:) [], MethodException + FullyQualifiedErrorId : MethodCountCouldNotFindBest Was kommt denn bei $IsOlderThanThreshhold heraus? Hier bekomme ich "TRUE" zurück. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 23. Februar 2016 Melden Teilen Geschrieben 23. Februar 2016 Welche PS-Version benutzt du denn: (Get-Host).version Zitieren Link zu diesem Kommentar
anjaw 11 Geschrieben 24. Februar 2016 Autor Melden Teilen Geschrieben 24. Februar 2016 Major: 2 Minor: 0 Build: -1 Revision: -1 Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 24. Februar 2016 Melden Teilen Geschrieben 24. Februar 2016 das measure-object braucht offenbar mindestens Powershell 3.0 Die Tage kommt übrigens ein neues Release für Powershell 5.0 raus. https://richardspowershellblog.wordpress.com/2016/02/08/wmf-5-0-download-latest-news/ PS 5.0 bietet: - etliche Commandline-Befehle, mit denen viele von uns aufgewachsen sind, werden durch PS-Commands ersetzt. z.B. netsh / ipconfig/ bleiben noch gültig, sind aber jetzt "deprecated". - Verbesserung in der Security für RemotePowershell. RemoteConnection sind jetzt besser gegen spoofing geschützt - Last but not least, die Ablösung der ISE https://code.visualstudio.com/Docs/?dv=win https://blogs.msdn.microsoft.com/powershell/2015/11/16/announcing-powershell-language-support-for-visual-studio-code-and-more (Beta)(-> Installing the extension) weitere Features https://www.microsoft.com/en-us/download/details.aspx?id=50395 Es gibt einige Gründe über ein Update nachzudenken :-) blub Zitieren Link zu diesem Kommentar
anjaw 11 Geschrieben 24. Februar 2016 Autor Melden Teilen Geschrieben 24. Februar 2016 So einfach ist das leider mit dem Update nicht. Also falls jemand noch eine andere Idee ohne das Measure-Object hat, bin ich gerne bereit die Idee umzusetzen. ;) Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 24. Februar 2016 Melden Teilen Geschrieben 24. Februar 2016 So einfach ist das leider mit dem Update nicht. Wenn es einfach wäre, könnte es ja jeder PowershellRemote? Zitieren Link zu diesem Kommentar
Beste Lösung anjaw 11 Geschrieben 24. Februar 2016 Autor Beste Lösung Melden Teilen Geschrieben 24. Februar 2016 (bearbeitet) Es geht nicht ums können, sondern ums dürfen :) Habe es jetzt so hinbekommen, dass es funktioniert. $CompareDate = (Get-Date).AddMinutes(-10) $FilesOlderThan = Get-ChildItem D:\Testordner| Where { $CompareDate –gt $_.LastAccessTime } If ($FilesOlderThan) { Write-Eventlog -Logname Application -Source MyScript -EventID 9999 -EntryType Information -Message "Im Testordner sind Dateien älter 10 Min. drin" } Danke für eure Hilfe. bearbeitet 25. Februar 2016 von anjaw Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.