none
Zeit Parsen RRS feed

  • Frage

  • Liebe Leute,vielleich kann mir jemand sagen was ich falsch mache...

    aus einem normalen SysLogfile möchte ich das Datum in einen Wert DateTime umwandeln...

    Zeile Logfile:
    1 Mar 27 21:32:41 vpn02 openvpn: user 'xxx' authenticated

    Zeile Code:
    @{Name='DateTime';Expression={[DateTime]::ParseExact( $_.Day + $_.Month + $_.Time,'dd MMM HH:mm:ss',$null)}} | Sort DateTime

    Leider bleibt die Ausgabe leer

    Vielen Dank im Voraus

    Oliver

    Montag, 1. April 2019 06:32

Antworten

  • Die "1" am Anfang Deiner Beispieldaten verwirrt mich etwas. Wenn Du auf einem deutschen Windows ein amerikanisches Datums/Zeit-Format benutzt, verwirrt das die Powershell ...
    @{Name = 'DateTime'; Expression = { [DateTime]::ParseExact( $_.Day + ' ' + $_.Month + ' ' + $_.Time, 'dd MMM HH:mm:ss', [Globalization.CultureInfo]::CreateSpecificCulture('en-US')) } } | 
    Sort-Object DateTime
    ... so müsste's eigentlich flutschen ... probier ma!  ;-)

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''



    • Bearbeitet BOfH-666 Montag, 1. April 2019 08:15
    • Als Antwort markiert ContrOliva Montag, 1. April 2019 08:26
    Montag, 1. April 2019 08:14

Alle Antworten

  • Oliver,

    wenn Du hier im Forum Code postest, formatier den bitte auch als Code. Danke. (Beispieldaten sind auch besser als Code formatiert - das vermeidet ungewollte Zeilenumbrüche)

    Stehen denn die Properties $_.Day, $_.Month und $_.Time überhaupt schon zu Verfügung? Wenn nicht wirst Du erst mal den String parsen/zerlegen müssen.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH-666 Montag, 1. April 2019 07:20
    Montag, 1. April 2019 07:20
  • Hallo Olaf,

    Vilelen Dank für Deine Antwort, ja werde ich beim nächsten Mal immer daran denken!

    Ja, die stehen bereits zur Verfügung...

    $data = Import-Csv $FilePathInput -Header Month, Day, Time, Server, Service, Info -Delimiter " "

    Montag, 1. April 2019 07:55
  • Die "1" am Anfang Deiner Beispieldaten verwirrt mich etwas. Wenn Du auf einem deutschen Windows ein amerikanisches Datums/Zeit-Format benutzt, verwirrt das die Powershell ...
    @{Name = 'DateTime'; Expression = { [DateTime]::ParseExact( $_.Day + ' ' + $_.Month + ' ' + $_.Time, 'dd MMM HH:mm:ss', [Globalization.CultureInfo]::CreateSpecificCulture('en-US')) } } | 
    Sort-Object DateTime
    ... so müsste's eigentlich flutschen ... probier ma!  ;-)

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''



    • Bearbeitet BOfH-666 Montag, 1. April 2019 08:15
    • Als Antwort markiert ContrOliva Montag, 1. April 2019 08:26
    Montag, 1. April 2019 08:14
  • Vielen lieben Dank! - Genau das wars... ;-))
    Montag, 1. April 2019 08:26
  • Hallo Olaf, ich bin der "1" noch mals nachgegeangen! Habe nicht die ganze Zeile kopiert. Davor steht noch das Monat - Sorry

    Apr 1 01:33:09 vpn02 openvpn: user 'xxx' authenticated

    Habe jetzt das Problem, dass mir alle Einträge mit einer einzelnen Tageszahl nicht aufgelistet werden

    Montag, 1. April 2019 09:05
  • Dann hast Du vermutlich die "fehlende Stelle" mit einem Leerzeichen aufgefüllt bekommen. Das bringt Import-Csv durcheinander. Eventuell könntest Du existierende mehrfache Leerzeichen vor dem Import-Csv durch einfach Leerzeichen ersetzen ...

    "Apr  1 01:33:09 vpn02 openvpn: user 'xxx' authenticated" -replace '\s+', ' '

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Montag, 1. April 2019 09:12
  • Das habe ich schon versucht und jetzt bekomme ich zwar die Ausgabe aufgelistet, jedoch ohne DatumZeit :-(
    Montag, 1. April 2019 09:45
  • Auch gelöst!
    Montag, 1. April 2019 09:47
  • Auch gelöst!

    ???

    Vielleicht lässt Du uns teilhaben - das könnte Anderen helfen, die das gleiche oder ein ähnliches Problem haben .... und nicht zuletzt bin ich neugierig, was das Problem war bzw. wie Du's gelöst hast.  ;-) :-D


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Montag, 1. April 2019 10:11
  • Ja sicher, Gerne... Also das Ändern von 'dd MMM HH:mm:ss' auf 'd MMM HH:mm:ss' hat es ausgemacht.

    @{Name='DateTime'; Expression={ [DateTime]::ParseExact( $_.Day + ' ' + $_.Month + ' ' + $_.Time, 'd MMM HH:mm:ss', [Globalization.CultureInfo]::CreateSpecificCulture('en-US')) } } | Sort-Object DateTime

    31.03.2019 22:27:22 user                                 xxx                     authenticated
    01.04.2019 09:33:12 user xxx authenticated

    davor:

                        user                                 xxx                     authenticated 
    31.03.2019 22:27:22 user                                 xxx                     authenticated 
    
    Nochmals vielen Dank für Deine Untertützung!


    Montag, 1. April 2019 11:13