RAMpage 0 Geschrieben 15. Januar 2016 Melden Teilen Geschrieben 15. Januar 2016 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! Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 15. Januar 2016 Melden Teilen Geschrieben 15. Januar 2016 Ungetestet: Where {($_.entryType -NotMatch "Information") -and ($_.EventID -notcontains $Mutel_EL)} Zitieren Link zu diesem Kommentar
RAMpage 0 Geschrieben 15. Januar 2016 Autor Melden Teilen Geschrieben 15. Januar 2016 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!! Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 15. Januar 2016 Melden Teilen Geschrieben 15. Januar 2016 Moin, PowerShell schön und gut, aber sowas würde ich eher mit dem Log Parser machen. Arbeitet erheblich schneller und spricht SQL. https://shop.heise.de/katalog/frag-mich-was http://www.faq-o-matic.net/kategorien/log-parser/ Gruß, Nils Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 15. Januar 2016 Melden Teilen Geschrieben 15. Januar 2016 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. Zitieren Link zu diesem Kommentar
RAMpage 0 Geschrieben 15. Januar 2016 Autor Melden Teilen Geschrieben 15. Januar 2016 Nein. https://technet.microsoft.com/en-us/library/hh847759.aspx 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 :) Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 15. Januar 2016 Melden Teilen Geschrieben 15. Januar 2016 Evtl. musst du die Parameter drehen. Hatte die Ergänzung aus dem Kopf gemacht. $check = @(1,2,5,6,7)$check -contains 1True$check -contains 3False 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). Zitieren Link zu diesem Kommentar
RAMpage 0 Geschrieben 15. Januar 2016 Autor Melden Teilen Geschrieben 15. Januar 2016 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: Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 15. Januar 2016 Melden Teilen Geschrieben 15. Januar 2016 Nicht bei beiden Abfragen drehen sondern $Mute_EL mit $_.EventID drehen. $Mute_EL -notcontains $_.EventID Zitieren Link zu diesem Kommentar
Beste Lösung RAMpage 0 Geschrieben 15. Januar 2016 Autor Beste Lösung Melden Teilen Geschrieben 15. Januar 2016 Nicht bei beiden Abfragen drehen sondern $Mute_EL mit $_.EventID drehen. $Mute_EL -notcontains $_.EventID NA KLAR!!!! Danke Dukel, so läuft das. Woche zu lang :) SUPER! 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.