none
RegEx, match RRS feed

  • 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

    Mittwoch, 1. April 2020 06:14

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
    Mittwoch, 1. April 2020 06:29
  • 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

    http://evgenij.smirnov.de

    • Als Antwort markiert -- Chris -- Mittwoch, 1. April 2020 07:08
    Mittwoch, 1. April 2020 06:52
  • 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
    Mittwoch, 1. April 2020 07:06

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

    http://evgenij.smirnov.de

    Mittwoch, 1. April 2020 06:22
  • 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
    Mittwoch, 1. April 2020 06:29
  • 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

    Mittwoch, 1. April 2020 06:46
  • 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

    http://evgenij.smirnov.de

    • Als Antwort markiert -- Chris -- Mittwoch, 1. April 2020 07:08
    Mittwoch, 1. April 2020 06:52
  • 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
    Mittwoch, 1. April 2020 07:06
  • 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


    Mittwoch, 1. April 2020 07:39