Benutzer mit den meisten Antworten
RegEx, match

Frage
-
moin,
ich möchte gerne nur die IP Adresse aus nachfolgenden Objekt (eventlog) auslesen
Message : Remotedesktopdienste: Die Benutzerauthentifizierung war erfolgreich:
Benutzer: xyz
Domäne: firma
Quellnetzwerkadresse: 10.10.1.100.der Benutzername funktioniert
bei IP wird bei matches[1] nichts zurückgeliefert
$Benutzer = 'Benutzer: (\w{1,})' if ($Event.Message -match $Benutzer){ write-host $Matches[1] -ForegroundColor Green } $Quellnetzwerkadresse = 'Quellnetzwerkadresse: (\.*)' if ($Event.Message -match $Quellnetzwerkadresse){ write-host $Matches[1] -ForegroundColor Green }
Chris
Antworten
-
Dein Pattern stimmt nicht. Versuch ma das hier:
'Quellnetzwerkadresse: ((?:\d+\.){3}\d+)'
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Mittwoch, 1. April 2020 06:31
- Als Antwort markiert -- Chris -- Mittwoch, 1. April 2020 07:08
-
Ich würde Dir empfehlen, bei Event Logs nicht das Message durchzuparsen (könnte ja auch sprachspezifisch sein), sondern auf strukturierte Daten zuzugreifen - entweder aus der XML oder aus .Properties.Value
Evgenij Smirnov
- Als Antwort markiert -- Chris -- Mittwoch, 1. April 2020 07:08
-
danke Olah, fuktioniert schaut super aus, etwas schwer zu lesen
Mein Name schreibt sich mit "f" am Ende. ;-)
hast du da zufällig auch noch einen Tipp. Ich bräuchte die ersten vier Wörter. Scheitert das an den Leerzeichen dazwischen?
Remotedesktopdienste: Die Benutzerauthentifizierung war erfolgreich
Ich interpretiere mal und nehme an, dass Du das brauchst, was nach "Remotedesktopdienste: " kommt. Das kannst Du so machen:
'Remotedesktopdienste: Die Benutzerauthentifizierung war erfolgreich' -match '(?<=Remotedesktopdienste:\s).+' $Matches
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort markiert -- Chris -- Mittwoch, 1. April 2020 07:08
Alle Antworten
-
Moin,
durch das Escapen vom Punkt lautet Dein Regex: "Quellnetzwerkadresse", Leerzeichen und eine beliebige Anzahl von Punkten. Das ist nicht das, was Du haben möchtest.
Evgenij Smirnov
-
Dein Pattern stimmt nicht. Versuch ma das hier:
'Quellnetzwerkadresse: ((?:\d+\.){3}\d+)'
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Mittwoch, 1. April 2020 06:31
- Als Antwort markiert -- Chris -- Mittwoch, 1. April 2020 07:08
-
danke Olah, fuktioniert schaut super aus, etwas schwer zu lesen
Für andere Leser
vermutlich:
? = längstes Munster
\d = digital
+ = 1 oder mehr
\. = Punkt
{3} = 3x vermutlich bezogen auf zb. 10. ((?:\d+\.) - also 3 IPs
\d+ = digital beliebig viele Zeichen also die 4 Zahl von der IP Adresse
hast du da zufällig auch noch einen Tipp. Ich bräuchte die ersten vier Wörter. Scheitert das an den Leerzeichen dazwischen?
Remotedesktopdienste: Die Benutzerauthentifizierung war erfolgreich
$Remotedesktopdienste = 'Remotedesktopdienste: (\w{1,4})' if ($Event.Message -match $Remotedesktopdienste){ write-host $Matches[1] -ForegroundColor Green #$ausgabe = "$user.pcname;$Machtes[1]" }
Chris
-
Ich würde Dir empfehlen, bei Event Logs nicht das Message durchzuparsen (könnte ja auch sprachspezifisch sein), sondern auf strukturierte Daten zuzugreifen - entweder aus der XML oder aus .Properties.Value
Evgenij Smirnov
- Als Antwort markiert -- Chris -- Mittwoch, 1. April 2020 07:08
-
danke Olah, fuktioniert schaut super aus, etwas schwer zu lesen
Mein Name schreibt sich mit "f" am Ende. ;-)
hast du da zufällig auch noch einen Tipp. Ich bräuchte die ersten vier Wörter. Scheitert das an den Leerzeichen dazwischen?
Remotedesktopdienste: Die Benutzerauthentifizierung war erfolgreich
Ich interpretiere mal und nehme an, dass Du das brauchst, was nach "Remotedesktopdienste: " kommt. Das kannst Du so machen:
'Remotedesktopdienste: Die Benutzerauthentifizierung war erfolgreich' -match '(?<=Remotedesktopdienste:\s).+' $Matches
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort markiert -- Chris -- Mittwoch, 1. April 2020 07:08
-
Evgenij,
hast du zufällig in diesem Zusammenhang ein Beispiel für XML und .Properties.Value
das Muster habe ich gefunden. Bringt jedoch einen Fehler. Wie kann ich mir einfach das XML anzeigen damit ich weiß welcher Array zb. Benutzer hat?
Es ist nicht möglich, einen Index auf ein NULL-Array anzuwenden.
In Zeile:40 Zeichen:9
+ $eventXML.Event.EventData.Data[2].Benutzer$Event.Message $eventXML = [xml]$Event.ToXml() # Drill down through the XML to the message goodness # Ah ha! This is what we want. $a = $eventXML.Event.EventData.Data write-host $a -ForegroundColor Green # You have to index each data element to access it. $eventXML.Event.EventData.Data[2].Benutzer $eventXML.Event.EventData.Data[2].'Benutzer'
Properties funktioniert gut:
wobei der Erste Wert interessanterweise nicht dabei ist? Aber den kann ich auch mit SUBSTRING auslesen
Remotedesktopdienste: Die Benutzerauthentifizierung war erfolgreich
$event.Properties[0] $event.Properties[1] $event.Properties[2] $event.Properties[3] $event.Properties[4]
Chris
- Bearbeitet -- Chris -- Mittwoch, 1. April 2020 08:01