Jump to content

Powershell: Powershell Datum prüfen und in Eventlog schreiben


Direkt zur Lösung Gelöst von anjaw,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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

Link zu diesem Kommentar
  • Beste Lösung

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 von anjaw
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...