Jump to content

PS: Eventlog Script mit Filter / Mute


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

Empfohlene Beiträge

Hallo zusammen,

 

ich bin ganz neu hier an Board und freue mich über jede Anregung.

 

Bis jetzt habe ich nur sehr spartanisch mit der PowerShell gearbeitet, müsste nun allerdings ein bisschen was automatisieren. Folgendes habe ich bereits, aber jetzt bin ich etwas blockiert.

Ich führe das Script als Scheduled Job aus, lese eine Datei zeilenweise in ein Array ein und organisiere mir alle Eventlog Einträge der letzten 24h. Diese filtere ich bereits ganz stumpf und einfältig. Möchte das Filtern aber etwas angepasster vornehmen. Hier erstmal kurz ein kleiner Teil des Scripts:

$LocPath = $(Get-Location).Path 				

$Mute_EL = Get-Content ( JOIN-PATH $LocPath  "ausnahme.txt" )					#Datei mit den Eventlog Mutes

$Anfangszeit = (Get-Date).AddDays(-1)
$Event = Get-Eventlog -Logname application -After $Anfangszeit
$logError = $Event | Where {($_.entryType -NotMatch "Information")} #HIER NOCH FILTER EINBAUEN!
$Output += $logError | Sort-Object EventID | select EventID, EntryType, Message, Source, TimeGenerated, UserName
Write-Output $Output 

In der Datei "ausnahme.txt" würde ich jetzt zeilenweise zB EventIDs erfassen, welche im Where Loop dann nicht mit in die $Output Variable übernommen werden, aber irgendwie bekomme ich die beiden Schleifen nicht verschachtelt und stelle mich gerade sehr b***d an.
Ich bin wahrlich nicht geübt in der PS.
Ist das möglich das Filtern der Ausnahmen direkt in der Zeile abzuhandeln, in der ich $logError fülle?

 

Über eine Idee würde ich mich freuen!

 

Herzlichen Dank!
 

Link zu diesem Kommentar

Ungetestet:

Where {($_.entryType -NotMatch "Information") -and ($_.EventID -notcontains $Mutel_EL)}

 

Hallo Dukel! Danke für die schnelle Idee!

 

Habe jetzt ein wenig mit deinem Vorschlag gebastelt, auch mal mit dem .Message Objekt des Eventlog Eintrags, leider keine Wirkung, auch wenn es fehlerfrei durchläuft.

Vielleicht irre mich auch, aber $Mute_EL wird ja auch mehrere Array Elemente enthalten, müsste ich die im Loop verschachtelt durchlaufen?

 

Besten Dank!!

 

Link zu diesem Kommentar
Vielleicht irre mich auch, aber $Mute_EL wird ja auch mehrere Array Elemente enthalten, müsste ich die im Loop verschachtelt durchlaufen?

 

Nein. https://technet.microsoft.com/en-us/library/hh847759.aspx

-Contains      Description: Containment operator. Tells whether a collection of reference      values includes a single test value. Always returns a Boolean value. Returns TRUE      only when the test value exactly matches at least one of the reference values.       When the test value is a collection, the Contains operator uses reference      equality. It returns TRUE only when one of the reference values is the same      instance of the test value object.
Link zu diesem Kommentar

 

Danke, das ist praktisch!

Ich bin ein ***, ich habe deine Zeile kopiert und da hieß die Variable anders, ein "l" zu viel :)

 

Nun filtert er die EventID, aber nur wenn $Mute_EL nur ein einziges Element enthält, enthält es zwei oder mehr Elemente, also weitere EventIDs die ausgefiltert werden sollen, wird gar nicht mehr gefiltert.

 

@NilsK

Danke, aber dadurch dass ich über dieses Script noch ULS Logs und HealthAnalyzer auswerte und via SMTP verschicke, kam ich mit der Shell ganz gut zurecht :)

 

 

Link zu diesem Kommentar

Evtl. musst du die Parameter drehen.

Hatte die Ergänzung aus dem Kopf gemacht.

 

 

$check = @(1,2,5,6,7)
$check -contains 1
True
$check -contains 3
False

 

Beim Eventlog auswerten würde ich mir überlegen das per Powershell zu machen. Das dauert relativ lange. Evtl. kannst du mit Powershell den LogParser steuern (starten, und die Ergebnisse Weiterverarbeiten).

Link zu diesem Kommentar

Habs mal gedreht, verstehe was du meinst.
Diese Zeile ärgert mich allerdings etwas:


$logError = $Event | Where {($_.EventID -notcontains $Mute_EL) -and ($_.entryType -NotMatch "Information")} 



 

Enthält $Mute_EL nur ein Element, wird genau diese ID passend rausgefiltert.
Enthält $Mute_EL mehr als ein Element, also mehrere EventIDs, wird gar nichts mehr gefiltert.

 

So ganz will dieses Verhalten nicht in meinen Kopf. :nene:

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...