Benutzer mit den meisten Antworten
Genaue Zeit mit get-date exportieren und erneut importieren

Frage
-
Hallo zusammen,
ich hoffe dass man mir hier mit meiner recht komplexen Frage weiterhelfen kann...
Folgende Situation: Ich bin momentan dabei ein Logging Framework für meine Powershellskripte zu schreiben und möchte ein Log schreiben, in dem das Datum und die genaue Zeit festgehalten wird. Das Framework besteht aus 2 PS Skripten. Das erste wird beim Aufruf des Skripts in der ersten Zeile eingetragen und aktiviert das Logging für das Skript, das zweite wird in die letzte Zeile eingetragen um einen weiteren Logeintrag zu generieren, in dem die Zeit festgehalten wird, die das Skript gelaufen ist. Die Übergabe der Startzeit an das beendende Skript wird durch eine Textdatei nach folgendem Muster erreicht:
"User A hat das Skript X gestartet: Donnerstag, 11. April 2013 11:06:53"
Dieser Wert lässt sich auch problemlos durch Stringzerlegung auslesen, mit get-date in ein Datum umwandeln und von einem neueren get-date abziehen um die Zeitdifferenz zu erhalten, aber diese Angabe ist mir leider zu ungenau. Wenn ich den normalen Output von get-date exportiere werden die Millisekunden nicht ausgespuckt. Wenn ich diese nun durch Stringmanipulation anhänge wird der String von get-date nicht mehr als gültiger String anerkannt. In PS selber ist es möglich die Daten als Ticks zu exportieren und wenn ich diesen Wert manuell als get-date($VariableMitDemTicksWert) aufrufe erhalte ich das richtige und genaue Datum, aber leider funktioniert dies nicht wenn ich die Daten erst in eine .txt Datei exportiere und dann erneut als String einlese.
Gibt es eine Möglichkeit das Datum in präziser Form(Entweder mit Millisekunden oder als Ticks) in eine Textdatei zu exportieren, diese dann später einzulesen und mit get-date in ein gültiges Datum umzuwandeln?
Ich erhalte immer nur folgende Fehlermeldung wenn die Ticks importiert werden:
Get-Date : Cannot bind parameter 'Date'. Cannot convert value "635012065831555606
" to type "System.DateTime". Error: "String was not recognized as a valid DateTime."
At E:\Sources\Administration\end-logging.ps1:31 char:18
+ $Start = get-date <<<< ("$Start")
+ CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetDateCommandGruß Christian
Antworten
-
Hallo zusammen,
habe nun selber eine Lösung für mein Problem gefunden :)
$a = get-date ($Variable) klappte mit den importierten Ticks leider nicht, aber folgender Befehl klappt ganz gut:
$a = New-Object System.Datetime $Variable
Gruß Christian
- Als Antwort markiert Christian Buchwald Donnerstag, 11. April 2013 13:41
Alle Antworten
-
Hallo zusammen,
habe nun selber eine Lösung für mein Problem gefunden :)
$a = get-date ($Variable) klappte mit den importierten Ticks leider nicht, aber folgender Befehl klappt ganz gut:
$a = New-Object System.Datetime $Variable
Gruß Christian
- Als Antwort markiert Christian Buchwald Donnerstag, 11. April 2013 13:41
-
Hallo,
Du musst die Ticks als Zahl uebergeben.
get-date "635012065831555606"
Get-Date : Der Parameter "Date" kann nicht gebunden werden. Der Wert "635012065831555606" kann nicht in den Typ
"System.DateTime" konvertiert werden. Fehler: "Die Zeichenfolge wurde nicht als gültiges DateTime erkannt."
In Zeile:1 Zeichen:10
+ get-date "635012065831555606"
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetDateCommandDer Fehler besagt, dass er den String nich in System.DateTime wandeln kann.
Das geht:
get-date 635012065831555606
Mittwoch, 10. April 2013 16:03:03
[int64]$a = 635012065831555606
get-date $a
Mittwoch, 10. April 2013 16:03:03Beste Gruesse
brima- Bearbeitet brima Freitag, 12. April 2013 17:49
-
Hallo Christian!
Eleganter und schneller ist diese Lösung:[DateTime]"11. April 2013 11:06:53" # oder [DateTime]$Variable
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!- Als Antwort vorgeschlagen Vitalii Morgunov Donnerstag, 21. Januar 2021 09:38