Eventlog - Details mit Powershell auslesen und auswerten
Moin Kollegen.
Ich fange mit zwei Screenshots an:
Ich suche nach einer Möglichkeit, den markierten Wert (Anzahl an Millisekunden) auszuwerten.
Ich möchte, dass nur bei Werten größer als 5000 Millisekunden etwas geschieht, beispielsweise in ein Log geschrieben wird "langsame Verarbeitung auf PC xy"
Das Log auszulesen, bekomme ich hin:
Aber um dann aus Ergebniszeilen wie
Hat jemand einen Tipp für mich?
Ich fange mit zwei Screenshots an:
Ich suche nach einer Möglichkeit, den markierten Wert (Anzahl an Millisekunden) auszuwerten.
Ich möchte, dass nur bei Werten größer als 5000 Millisekunden etwas geschieht, beispielsweise in ein Log geschrieben wird "langsame Verarbeitung auf PC xy"
Das Log auszulesen, bekomme ich hin:
$Date = (Get-Date).AddDays(-1)
Get-WinEvent -FilterHashtable @{ LogName='Microsoft-Windows-GroupPolicy/Operational'; StartTime=$Date; Id='5016' }| select TimeCreated,message
15.02.2022 19:46:05 Die Verarbeitung der Group Policy Services-Erweiterung wurde in 110 Millisekunden abgeschlossen.
nur die Millisekundenanzahl zu filtern und zu entscheiden, größer/kleiner 5000, dazu reichen meine bescheidenen Skriptingkünste nicht.Hat jemand einen Tipp für mich?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1933681867
Url: https://administrator.de/forum/eventlog-details-mit-powershell-auslesen-und-auswerten-1933681867.html
Ausgedruckt am: 09.04.2025 um 17:04 Uhr
3 Kommentare
Neuester Kommentar
Servus DWW,
gibt mehrere Wege nach Rom
oder über Filterung mit Where-Object und XML Object
oder auch direkt mit Auswertung im -FilterXPath Parameter
Such dir was aus
.
Grüße Uwe
gibt mehrere Wege nach Rom
$Date = (Get-Date).AddDays(-1)
Get-WinEvent -FilterHashtable @{ LogName='Microsoft-Windows-GroupPolicy/Operational'; StartTime=$Date; Id='5016' } -EA SilentlyContinue | ?{$_.Properties.Value -gt 5000 }
$Date = (Get-Date).AddDays(-1)
Get-WinEvent -FilterHashtable @{ LogName='Microsoft-Windows-GroupPolicy/Operational'; StartTime=$Date; Id='5016' } -EA SilentlyContinue | ?{[int](([xml]$_.toXML()).Event.EventData.Data |?{$_.Name -eq 'CSEElaspedTimeInMilliSeconds'}).innerText -gt 5000}
$Date = (Get-date).AddDays(-1).ToUniversalTime().ToString('o')
Get-WinEvent -LogName 'Microsoft-Windows-GroupPolicy/Operational' -FilterXPath "*[System[EventID=5016 and TimeCreated[@SystemTime > '$date']] and EventData[Data[@Name='CSEElaspedTimeInMilliSeconds'] > 5000]]" -EA SilentlyContinue
Such dir was aus
Grüße Uwe
Immer gerne
. Mit dem XPath-Filter der letzten Variante könntest du dann auch direkt ein Eventlogtrigger erstellen falls gewünscht (den Zeit-Filter müsstest du dann nur raus nehmen).
<QueryList>
<Query Id="0" Path="Microsoft-Windows-GroupPolicy/Operational">
<Select Path="Microsoft-Windows-GroupPolicy/Operational">*[System[EventID=5016] and EventData[Data[@Name='CSEElaspedTimeInMilliSeconds'] > 5000]]</Select>
</Query>
</QueryList>