Benutzer mit den meisten Antworten
Aus Get-WinEvent im Objekt Message Pfad auslesen

Frage
-
Hallo Leute,
ich möchte eigentlich etwas ziemlich simples machen, aber ich bekomme es einfach nicht hin.
$msgdata = Get-WinEvent -FilterHashTable @{LogName='Application';ID='35'} | Select-Object -ExpandProperty Message
Oberer Code gibt mir die Beschreibung der Event ID 35 zurück.
Ich möchte folgendes erreichen:
Wenn in dieser Beschreibung eine EXE-Datei erwähnt wird, möchte ich nur die EXE-Datei mitsamt dem Pfad zurückgeben und ausgeben lassen ohne das ich wissen muss, wie der Pfad und die EXE-Datei heißt.
Vielen Dank für eure Antworten!
Grüße
PowerShellGuy
Antworten
-
PS: Dein Beispiel funktioniert leider nicht.
"... funktioniert leider nicht." ist im Allgemeinen keine sehr hilfreiche Fehlerbeschreibung. ... und wie soll es auch funktionieren, wenn Du mir unvollständige oder sogar falsche Informationen gibst? Warum hast Du denn nicht gleich die korrekte Event-ID angegeben?
$FilterHashtable = @{ LogName = 'Application' ID = 10010 } $msgdata = Get-WinEvent -FilterHashTable $FilterHashtable | Select-Object -ExpandProperty Message foreach($Message in $msgdata){ $Message -match "(?<=').*\.exe(?=')" | Out-Null $Matches[0] }
Noch etwas: Wenn Du Code postest oder Konsolen-Output oder Beispiel-Daten oder Fehlermeldungen - bitte alles als Code formatieren! Danke. ;-)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 18. Februar 2021 14:35
- Als Antwort markiert Denniver ReiningMVP, Moderator Samstag, 20. Februar 2021 23:57
- Bearbeitet BOfH-666 Freitag, 26. Februar 2021 10:30
Alle Antworten
-
Hallo und Willkommen im Deutschen Microsoft Windows Powershell Forum.
Wenn die von Dir gewünschte Information nicht noch in einer anderen Property auftaucht, wirst Du den Messaga-Text wohl mittels regex parsen müssen.
Ich habe mal auf meinem Client nach einem Event mit der ID 35 gesucht und leider keine gefunden. Vielleicht kannst Du ein oder zwei solche Messages hier posten, dann schauen wir mal, was wir da hinzaubern können. ;-)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Dienstag, 16. Februar 2021 16:50
-
Hey BOfH-666,
vielen Dank für deine Hilfe.
Also Event ID 10010 - Source RestartManager - Application wäre die ID, die mein Vorhaben betrifft.
Wollte ein Bild hochladen, aber es scheint einfach nicht hochzuladen.
Folgenden Text hat das Event 10010:
Application 'C:\Program Files (x86)\Seagate\Seagate Dashboard 2.0\DeviceAgent.exe' (pid 3180) cannot be restarted - Application SID does not match Conductor SID..
Ich möchte, das folgender String z. B. in eine Variable gespeichert wird:
C:\Program Files (x86)\Seagate\Seagate Dashboard 2.0\DeviceAgent.exe
Das war's eigentlich.
PS: Dein Beispiel funktioniert leider nicht.
Vielen herzlichen Dank nochmals und schönen Tag noch.
- Bearbeitet PowerShellGuy Mittwoch, 17. Februar 2021 10:10 Pfad in Codeblock einpflegen
-
PS: Dein Beispiel funktioniert leider nicht.
"... funktioniert leider nicht." ist im Allgemeinen keine sehr hilfreiche Fehlerbeschreibung. ... und wie soll es auch funktionieren, wenn Du mir unvollständige oder sogar falsche Informationen gibst? Warum hast Du denn nicht gleich die korrekte Event-ID angegeben?
$FilterHashtable = @{ LogName = 'Application' ID = 10010 } $msgdata = Get-WinEvent -FilterHashTable $FilterHashtable | Select-Object -ExpandProperty Message foreach($Message in $msgdata){ $Message -match "(?<=').*\.exe(?=')" | Out-Null $Matches[0] }
Noch etwas: Wenn Du Code postest oder Konsolen-Output oder Beispiel-Daten oder Fehlermeldungen - bitte alles als Code formatieren! Danke. ;-)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 18. Februar 2021 14:35
- Als Antwort markiert Denniver ReiningMVP, Moderator Samstag, 20. Februar 2021 23:57
- Bearbeitet BOfH-666 Freitag, 26. Februar 2021 10:30
-
Wollte ein Bild hochladen, aber es scheint einfach nicht hochzuladen.
Evgenij Smirnov
-
Wollte ein Bild hochladen, aber es scheint einfach nicht hochzuladen.
Dazu auch gleich noch ein Wort:
Ein Bild ist in den seltensten Fällen wirklich hilfreich, wenn es um Code oder Beispiel-Daten oder Fehlermeldungen oder sowas geht. Es genügt in der Regel völlig, einfach den Test zu posten. ;-)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
-
Hab den Code jetzt ausprobiert und leider kommt folgende Fehlermeldung:
Cannot index into a null array. At C:\Users\user\Desktop\test.ps1:23 char:1 + $Matches[0] + ~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray Cannot index into a null array. At C:\Users\user\Desktop\test.ps1:23 char:1 + $Matches[0] + ~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray
Anscheinend wird das Array nicht befüllt.
Es liegt wahrscheinlich an folgender Zeile:
$Message -match '(?<=").*.exe(?=''")' | Out-Null
Stimmt der Ausdruck?
In der Ereignisanzeige kommen folgende Zeilen zu 10010:
Application 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe' (pid 9588) cannot be restarted - Application SID does not match Conductor SID.. Application 'C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE' (pid 4772) cannot be restarted - Application SID does not match Conductor SID..
Ich möchte nur
'C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe'
und
'C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE'
Diese Programme möchte ich dann über eine Variable neu starten.
Ach, wo finde ich zum Nachschlagen, wie man solche Ausdrücke bildet?
Im Internet gibt es da keine Sammlung von Ausdrücken.
Unter Ausdruck meine ich folgendes:
(?<=").*.exe(?=''")
Ich danke euch nochmals für die Hilfe.
Grüße
- Bearbeitet PowerShellGuy Freitag, 26. Februar 2021 10:29
-
Stimmt der Ausdruck?
Das kommt davon, wenn man nicht alle nötigen Informationen rausrückt. Die Events sehen auf Deutschen Clients anders aus als auf Englischen Clients.
Ich hab das Regex-Pattern oben in meinem Code-Beispiel nochmal angepasst. Probier mal so. ... und Du darfst den Code gern nach Belieben anapassen, damit er bei Dir so läuft, wie Du das brauchst.
Zum "Rumspielen" mit Regular Expressions gibt es zahlreiche Angebote im Netz - z.B. regex101.com. <- hinter dem Link ist ein Beispiel für Dich zum "Herum-Probieren".
Viel Spaß
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
-
Ich weiß, ich könnte es selbst machen, aber wie bekomme ich nur den Datei-Namen + Extension?
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''