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.