Datentypen

Datentypen

PowerShell gibt sich beim Tippen locker, intern hat aber jedes Objekt einen Typ. Wer Variablen nur „irgendwie“ füllt, wundert sich später über Vergleichsoperatoren, leere Schleifen oder eine 2, die plötzlich Text ist.

Die üblichen Verdächtigen

$n = 42 # Int32 $s = "42" # String $b = $true # Boolean $d = Get-Date # DateTime $a = @("a","b") # Object[] $h = @{Name="Max"; Ort="KA"} # Hashtable

Nachschauen statt raten:

$s.GetType().FullName $n -is [int] $s -as [int]

-as wandelt um oder liefert $null, wenn es nicht passt – praktisch in Filtern. -is prüft nur.

Fallen

Eingaben aus Dateien und AD sind oft Strings. "10" -gt "9" ist lexikalisch wahr, numerisch wäre es anders. Vor Vergleichen festlegen:

[int]$wert = Read-Host "Zahl" $wert -gt 9

Arrays mit einem Element täuschen: $a.Count nutzen, nicht if ($a) allein. Hashtables sind keine Objekte mit Properties – dort heißt es $h["Name"] oder $h.Name, nicht Select-Object wie bei AD-Usern.