💡 1. Strikte Typisierung & Variablen in PowerShell
PowerShell ist dynamisch typisiert, erlaubt aber jederzeit strikte Typ-Deklarationen zur Fehlervermeidung und Validierung:
# Dynamische Variable:
$name = "Server01"
# Strikt typisierte Variablen:
[int]$port = 8080
[bool]$isProduction = $true
[datetime]$erstelltAm = [DateTime]::UtcNow
[double]$auslastung = 84.75
[version]$toolVersion = "7.4.1"
# Typ-Konvertierung (Casting):
[int]"42" # 42 (Integer)
[bool]1 # True
[bool]0 # False
Eine typisierte Variable wie [int]$zahl ist wie eine präzise geformte Schablone. Versucht jemand, Text wie "abc" hineinzustecken, verweigert PowerShell sofort mit einer klaren Fehlermeldung den Dienst – noch bevor dein Skript im laufenden Betrieb Schaden anrichten kann!
📚 2. Arrays @() & Hashtables @{}
Arrays speichern geordnete Listen, Hashtables speichern Schlüssel-Wert-Paare (Key-Value):
# 1. Array definieren & erweitern:
$serverListe = @("srv-app01", "srv-db01", "srv-web01")
$serverListe += "srv-backup" # Element anhängen
# 2. Hashtable (Wörterbuch / Key-Value):
$config = @{
Environment = "Production"
Port = 443
SSL = $true
}
# Zugriff auf Hashtable:
$config["Port"] # Indexer-Syntax -> 443
$config.Environment # Dot-Property-Syntax -> "Production"
$config.Timeout = 30 # Neuen Schlüssel hinzufügen
🌟 3. Eigene strukturierte Objekte mit [PSCustomObject]
Das [PSCustomObject] ist das Herzstück für strukturierte Datenausgabe in PowerShell. Es garantiert Spalten-Reihenfolge und perfekte Pipeline-Kompatibilität:
# Modernes PSCustomObject (seit PS 3.0 Standard):
$serverInfo = [PSCustomObject]@{
Hostname = "srv-app01"
IPAddress = "192.168.1.10"
CPUCount = 8
IsActive = $true
CreatedAt = (Get-Date)
}
# Ausgabe formatiert tabellarisch oder als JSON:
$serverInfo | Format-Table
$serverInfo | ConvertTo-Json
📑 4. Cheat-Sheet: Datenstrukturen
| Konstrukt | Syntax | Typischer Anwendungsfall |
|---|---|---|
Array |
@("a", "b", "c") |
Geordnete Auflistungen von Elementen. |
Hashtable |
@{ Key = "Value" } |
Konfigurationen, Lookup-Tabellen, Splatting. |
PSCustomObject |
[PSCustomObject]@{ ... } |
Strukturierte Objekte zur Weitergabe in der Pipeline. |
Typ-Annotation |
[int]$x = 10 |
Variablen-Typisierung & Validierung. |