| | 0

PowerShell: Datentypen allgemein – Part 7

3.8 Datentypen allgemein

Neben den Datentypen, welche das .Net Framework bereitstellt, definiert die PowerShell eine Menge eigene Datentypen. Auf beide Arten der Datentypen kann transparent und auf die gleiche Art und Weise zugegriffen werden, indem der Name des Datentyps in eckige Klammern eingeschlossen wird. Die Basisdatentypen des .Net Frameworks (nicht vollständig) listet die folgende Tabelle:

Datentyp  Speicherbedarf Wertebereich
[Boolean] 2 bytes $True oder $False.
[Byte] 1 byte 0 bis 255 (vorzeichenlos)
[Char] 2 bytes 0 bis 65535 (vorzeichenlos)
[DateTime] 8 bytes 0:00:00 am 1. Januar 0001 bis 23:59:59 am 31. Dezember 9999
[Decimal] 16 bytes 0 bis +/-79228162514264337593543950335 ohne Dezimalpunkt
0 bis +/-7.9228162514264337593543950335
+/-0.0000000000000000000000000001 (+/-1E-28).
[Double] 8 bytes -1.79769313486231570E+308 bis
-4.94065645841246544E-324 für negative Werte
4.94065645841246544E-324 bis1.79769313486231570E+308 für positive Werte
[Int32] 4 bytes -2,147,483,648 bis2,147,483,647
[Long] 8 bytes -9223372036854775808 bis 9223372036854775807
[Int16]  2 bytes -32,768 bis 32,767.
[Single] 4 bytes -3.4028235E+38 bis-1.401298E-45 für negative Werte 1.401298E-45 bis 3.4028235E+38 für positive Werte
[String] 0 bis etwa 2 Billionen Unicode Zeichen

Die PowerShell Datentypen können mit dem folgenden Kommando aufgelistet werden:

1
2
$($(get-content $(join-path $pshome types.ps1xml))).types.type<span style="font-size: 14px; line-height: 21px; white-space: normal;">
</span>

Ups, was passiert denn da? Hat das irgendjemand verstanden? Für den Fall, dass nicht, hier eine Kurzerklärung. In der Datei „types.ps1xml“ werden die PowerShell Datentypen definiert. Sie ist im Installationsverzeichnis der PowerShell gespeichert (der Pfad steht in der Variablen $PSHome zur Verfügung). Der Befehl Join-Path macht aus den beiden Elementen einen vollständigen Pfad, der wiederum an das Cmdlet Get-Content (Inhalt einlesen) übergeben wird. Der sog. „Beschleuniger“ (Accelerator) „“ zwingt den Befehl Get-Content, eine XML Struktur zu erzeugen. Schließlich sind „.Types.Type“ bestimmte Inhalte der XML Datei „types.ps1xml“. Bleibt nur noch zu verstehen, was die $-Zeichen vor den einzelnen Klammern zu bedeuten haben… Das kann als eine allgemeine Vorgehensweise verstanden werden: alles, was sich innerhalb der Klammern $() befindet, wird ausgewertet und liefert das Ergebnis zurück!

 

Die Verwendung der Datentypen wurde bereits kurz bei den Variablen besprochen. Wird eine Variable eines bestimmten Datentyps benötigt, wird der Datentyp der Variablen einfach vorangestellt:

1
[DateTime]$Weihnachten = „12/24/2010“

 

Der Datentyp eines Objektes kann immer mit dem Cmdlet Get-Member überprüft werden:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1.  $Weihnachten | Get-Member
   TypeName: System.DateTime
Name                 MemberType     Definition
----                 ----------     ----------
Add                  Method         System.DateTime Add(System.TimeSpan value)
AddDays              Method         System.DateTime AddDays(double value)
AddHours             Method         System.DateTime AddHours(double value)
AddMilliseconds      Method         System.DateTime AddMilliseconds(double value)
AddMinutes           Method         System.DateTime AddMinutes(double value)
AddMonths            Method         System.DateTime AddMonths(int months)
AddSeconds           Method         System.DateTime AddSeconds(double value)
AddTicks             Method         System.DateTime AddTicks(long value)

Zurück zu Part 6 – Objekte, Objekteigenschaften und -Methoden

Zur Übersicht aller Artikel dieser Windows PowerShell Blogserie.