anjaw 11 Geschrieben 19. Februar 2016 Melden 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
Dukel 468 Geschrieben 19. Februar 2016 Melden 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.
blub 115 Geschrieben 19. Februar 2016 Melden 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
anjaw 11 Geschrieben 20. Februar 2016 Autor Melden 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
anjaw 11 Geschrieben 23. Februar 2016 Autor Melden 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.
blub 115 Geschrieben 23. Februar 2016 Melden Geschrieben 23. Februar 2016 Welche PS-Version benutzt du denn: (Get-Host).version
anjaw 11 Geschrieben 24. Februar 2016 Autor Melden Geschrieben 24. Februar 2016 Major: 2 Minor: 0 Build: -1 Revision: -1
blub 115 Geschrieben 24. Februar 2016 Melden 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
anjaw 11 Geschrieben 24. Februar 2016 Autor Melden 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. ;)
blub 115 Geschrieben 24. Februar 2016 Melden Geschrieben 24. Februar 2016 So einfach ist das leider mit dem Update nicht. Wenn es einfach wäre, könnte es ja jeder PowershellRemote?
Beste Lösung anjaw 11 Geschrieben 24. Februar 2016 Autor Beste Lösung Melden 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden