Der Eingabeparameter meines Skripts ist ein Datum oder eine Zahl. Hier ist ein Skript, das gut funktioniert, damit Sie sehen können, was ich versuche zu tun:
%Vor%Hier ist mein vorheriger Versuch, funktioniert nicht :
%Vor%Wenn ich eine Zahl eingabe, bricht das Skript bei der Datumsanalysezeile ab. Es sieht so aus, als ob mein "is is date" -Test wahr ist, wenn eine Zahl angegeben wird.
Ist das ein Fehler? Ist es von Entwurf?
Ja, Sie können überprüfen, ob eine Zeichenfolge ein Datum enthält, indem Sie '(-as [DateTime])' verwenden. Das Problem in meinem ursprünglichen Skript ist, dass ich angenommen habe, dass die Eingabeparameter des Skripts Strings sind. Anscheinend wird der numerische Parameter automatisch in Integer umgewandelt, es sei denn, es wird in Anführungszeichen geschrieben. Also hätte ich
schreiben sollen %Vor%Erzwingt die Umwandlung einer möglichen Zahl zurück in einen String, wie Keith in seiner Antwort ausführt.
Derselbe Fehler gilt für meine Ganzzahlprüfung. Das Skript schlägt fehl, wenn "Oct, 3" (ohne Anführungszeichen) angegeben wird. Erstellt PS hier ein Array?
Warum schlägt das Parsen fehl, wenn die Prüfung erfolgreich ist? Johannes erklärte das. Ausdruck
%Vor%weist PS an, die Eingabe in das Datum zu konvertieren. Konvertieren der Nummer ist sinnvoll (Datum 1 ist der 01. Januar 0001), so dass es nicht fehlschlägt, wenn eine Nummer vergeben wird. Ausdruck
%Vor%analysiert speziell eine Zeichenkette, so dass es eine Ganzzahl ergibt, macht keinen Sinn und führt zu einem Fehler.
Es war eine Verschwendung von mir, beide zu benutzen. Zuerst konvertiere ich in der Bedingung zum Datum, nur um das Ergebnis wegzuwerfen. Dann erstelle ich das Ergebnis mit anderer Syntax neu. Ich ändere das zu
%Vor%Danke allen.
Nun, Sie können jede ganze Zahl in DateTime
umwandeln, einfach weil DateTime
nur eine Zahl hinter den Kulissen ist.
Jedes DateTime
hat eine Ticks
-Eigenschaft, die seit dem 01.01.01 100 ns-Intervalle sind. Sie können DateTime
mit diesen Ticks initialisieren, obwohl ich bis jetzt keinen Nutzen dafür gefunden habe.
Aber deshalb kannst du eine Zahl in DateTime
umwandeln und es funktioniert. Es ist wahrscheinlich nur ein sehr weit zurückliegendes Datum: -)
Also im Grunde genommen, was du jetzt machst, ich. e. Wenn Sie zuerst nach einer Zahl suchen, ist dies die richtige Vorgehensweise, da die Umwandlung in DateTime
nicht ausreicht, um zu ermitteln, ob es sich um ein Datum oder eine Zahl handelt.
Tags und Links powershell