Datentypen konvertieren
Powershell versucht, Variablen automatisch zu konvertieren, wie man im obigen Beispiel gesehen hat. Man kann das Umwandeln von Variablen aber auch manuell durchführen, indem man den Datentyp rechts vom Gleichheitszeichen angibt, oder indem man den Operator -as verwendet.
$Text = [string]4
$Text.GetType().fullname
> System.String
$Text –as [datetime]
Im ersten Beispiel wird die Ganzzahl ( = Integer) direkt in einen String umgewandelt und erst dann der Variablen $Text zugewiesen. Wird der Datentyp vor einen Wert geschrieben, wandelt Powershell den Typ sofort um. Die Variable $Text kann jetzt nach wie vor beliebige Datentypen annehmen.
Kann Powershell die Umwandlung nicht vornehmen, weil die Datentypen inkompatibel sind, kommt es zu einer Fehlermeldung. Um die Fehlermeldung zu vermeiden, können Sie stattdessen auf den Operator -as zurückgreifen, der auch eine Typumwandlung versucht, aber bei einem Fehlschlag keinen Rückgabewert liefert. Bei Datetime-Datentypen, die Datum und Uhrzeit speichern, werden bei der Konvertierung außerdem die Regions-Einstellungen der Powershell berücksichtigt.
Alternativ kann man auch die Convert-Klasse aus dem .net-Framework zur Konvertierung von Datentypen verwenden. Die Convert-Klasse stellt auch Methoden zur Umwandlung von Zahlensystemen bereit, z.B. vom Binär ins Dezimalsystem:
[convert]::ToInt32('10000010',2) 130
Mehr zur Konvertierung gibt es auch unter https://devblogs.microsoft.com/scripting/use-powershell-to-easily-convert-decimal-to-binary-and-back/ oder kurz https://bit.ly/2pDvzCO. Mehr über statische Methoden, Eigenschaften und die Convert-Klasse erfahren Sie im Abschnitt Statische Eigenschaften und Methoden ab S. 103.
Verkettete Typ-Umwandlung
[char[]]'Guten Tag!'
# Wandelt den Text in ein Array von [Char] um
[Byte[]][Char[]]'Hallo Welt' # String zu Char[] zu Byte[] (ergibt ASCII-Code)
Verkettete Typen-Umwandlung bedeutet, dass man einen Datentyp in ein Array eines anderen Datentyps umwandelt. Im folgenden Beispiel wird diese Technik verwendet, um einen Text in ASCII-Code umzuwandeln:
Im ersten Beispiel wird der String 'Guten Tag' in ein Array von einzelnen Buchstaben (Character) umgewandelt. Im zweiten Beispiel wird ein Buchstaben-Array in ein Byte-Array umgewandelt. Ein Byte-Array besteht aus einzelnen Bytes. Bei der Umwandlung wird jeder Buchstabe in seinen Byte-Code konvertiert, was dem ASCII-code entspricht. Wichtig ist sind die eckigen Klammern hinter dem Datentyp, die angeben, dass es sich um ein Array (eine Liste) handelt.