Adapted Type System (ATS)

Eintrag zuletzt aktualisiert am: 14.01.2020

Das Adapted Type System (ATS) in der PowerShell ermöglicht, .NET-Klassen aus der .NET-Basisklassenbibliothek zu erweitern, um dem PowerShell-Benutzer die Verwendung zu vereinfachen.

Hintergründe
----
Als Extended Type System (ETS) bezeichnet Microsoft die Möglichkeit, .NET-Klassen in der PowerShell um Klassenmitglieder zu erweitern ohne im klassischen Sinne der Objektierung von diesen Klassen zu erben.
Als Adapted Type System (ATS) bezeichnet Microsoft die grundsätzlich Anpassung von .NET-Klassen aus der .NET-Klassenbibliothek auf die Bedürfnisse von PowerShell-Benutzern. Wie bereits dargestellt, zeigt die PowerShell für viele .NET-Objekte mehr Mitglieder an, als eigentlich in der .NET-Klasse definiert sind. In einigen Fällen werden aber auch Mitglieder ausgeblendet.
Die Ergänzung von Mitgliedern per ATS wird verwendet, um bei einigen .NET-Klassen, die Metaklassen für die eigentlichen Daten sind (z. B. ManagementObject für WMI-Objekte, ManagementClass für WMI-Klassen, DirectoryEntry für Einträge in Verzeichnisdiensten und DataRow für Datenbankzeilen), die Daten direkt ohne Umweg dem PowerShell-Nutzer zur Verfügung zu stellen.
Mitglieder werden ausgeblendet, wenn sie in der PowerShell nicht nutzbar sind oder es bessere Alternativen durch die Ergänzungen gibt.
In der Dokumentation nimmt das PowerShell-Entwicklungsteam dazu wie folgt Stellung: "Some .NET Object members are inconsistently named, provide an insufficient set of public members, or provide insufficient capability. ETS resolves this issue by introducing the ability to extend the .NET object with additional members." [MSDN54] Dies heißt im Klartext, dass das PowerShell-Team mit der Arbeit des Entwicklungsteams der .NET-Klassenbibliothek nicht ganz zufrieden ist.
Das ATS verpackt grundsätzlich jedes Objekt, das von einem Commandlet in die Pipeline gelegt wird, in ein PowerShell-Objekt des Typs PSObject. Die Implementierung der Klasse PSObject entscheidet dann, was für die folgenden Commandlets und Befehle sichtbar ist.
Diese Entscheidung wird beeinflusst durch verschiedene Instrumente:
PowerShell-Objektadapter, die für bestimmte Typen wie ManagementObject, ManagementClass, DirectoryEntry und DataRow implementiert wurden,
• die Deklarationen in der types.ps1xml-Datei,
• in den Commandlets hinzugefügte Mitglieder,
• mit dem Commandlet Add-Member hinzugefügte Mitglieder.