Peter Monadjemi Selbstständig

„Die PowerShell bietet als interaktive Scripting-Umgebung zwangsläufig mehr Flexibilität beim Umgang mit Typen als eine klassische Compilersprache wie C#, bei der eine statische Typisierung der Normalfall ist. Das bedeutet unter anderem, dass sich vorhandene Typen jederzeit erweitern lassen.“

Die PowerShell ist mehr als nur eine moderne Alternative zur guten, alten „DOS-Box“, wie manche Entwickler die Eingabeaufforderung Cmd.exe nach wie vor liebevoll nennen. Ein herausragendes, wenn nicht sogar das herausragende Merkmal der PowerShell ist ihr flexibles Typensystem. Es vereinigt Typen aus unterschiedlichen Quellen (u. a. WMI, COM, XML und natürlich die .NET-Laufzeit) und ermöglicht es, die Typen auf einheitliche Weise zu verwenden, zu erweitern und jedem Typ eine individuelle Ausgabeformatierung zuzuordnen.

Das Typsystem ist nicht weniger als der Schlüssel zum Verständnis der PowerShell-Philosophie, die PowerShell-Erfinder Jeffrey Snover bereits 2004 in seinem Monad-Manifesto beschrieben hat. Bevor es ins Detail geht, hier noch zwei formale Hinweise:

  1. Die PowerShell ist eine Anwendung, die bis zur Version 5.1 auf dem .NET Framework 4.x, ab Version 6.0 auf .NET Core 2.x basiert. Folglich lassen sich alle .NET Assemblies und ihre Typen 1:1 in der PowerShell verwenden. Das gilt auch für generische Typen. Die Assembly-Datei wird dabei über das Add-Type-Cmdlet geladen, anschließend stehen alle Typen zur Verfügung.
  2. Die in diesem Artikel vorgestellten Beispiele lassen sich sowohl mit der Windows PowerShell als auch mit PowerShell Core verwenden. Das Typsystem der PowerShell gibt es unverändert seit Version 1.0. Lediglich das Erweitern von Typen über das Update-TypeData-Cmdlet wurde mit Version 3.0 etwas vereinfacht. Das Verwenden einer XML-Datei für eine Typerweiterung kann ab dieser Version entfallen.

Schreibweisen für Typen

C#-Entwickler, die die PowerShell kennen lernen möchten, müssen sich an ein paar einfache Schreibregeln gewöhnen. Die vertrauten Typen und Namespaces gibt es 1:1 natürlich auch bei der PowerShell, lediglich die Schreibweise ist etwas anders. Die Namen von Typen werden in der Regel in eckige Klammern gesetzt. Dadurch entsteht ein Typobjekt, das über zahlreiche Members verfügt. Wird die Typbezeichnung benötigt, um daraus ein neues Objekt zu machen, werden keine eckigen Klammern verwendet. Das Pendant zum new-Operator ist das New-Object-Cmdlet. Der folgende Befehl legt ein SqlConnection-Objekt an:

$Cn = New-Object –TypeName System.Data.SqlClient.SqlConnection

Da die Groß-/Kleinschreibung bei der PowerShell grundsätzlich kein Thema ist und die Namen der Parameter oft weggelassen werden dürfen, sind auch andere Schreibweisen denkbar:

$Cn = New-Object System.Data.SqlClient.SqlConnection

Eine weitere Vereinfachung besteht darin, dass in Namespacenamen das System. entfallen kann.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Windows Developer 11.18 - "Kernkompetenz .NET Core"

Alle Infos zum Heft
579860775Flexibler Typwandler
X
- Gib Deinen Standort ein -
- or -