Freigeben über


Entwerfen eines Windows PowerShell-Anbieters

Sie sollten einen Windows PowerShell-Anbieter implementieren, wenn Ihr Produkt oder Ihre Konfiguration eine Reihe von gespeicherten Daten verfügbar macht, z. B. eine Datenbank, in der der Benutzer navigieren oder durchsuchen möchte. Darüber hinaus ist es sinnvoll, einen Windows PowerShell Anbieter zu implementieren, wenn Ihr Produkt einen Container bereitstellt, auch wenn es sich nicht um einen Container mit mehreren Ebenen handelt. Beispielsweise können Sie einen Windows PowerShell Containeranbieter implementieren, wenn das Cmdlet-Verb Kopieren, Verschieben, Umbenennen, Neu oder Entfernen als Vorgang für Ihre Produkt- oder Konfigurationsdaten sinnvoll ist.

Windows PowerShell Pfade identifizieren Ihren Anbieter

Die Windows PowerShell Runtime verwendet Windows PowerShell Pfade, um auf den entsprechenden Windows PowerShell-Anbieter zuzugreifen. Wenn ein Cmdlet einen dieser Pfade angibt, weiß die Runtime, welcher Anbieter für den Zugriff auf den zugeordneten Datenspeicher verwendet werden soll. Zu diesen Pfaden gehören laufwerksqualifizierte Pfade, anbieterqualifizierte Pfade, direkte Anbieterpfade und anbieterinterne Pfade. Jeder Windows PowerShell-Anbieter muss einen oder mehrere dieser Pfade unterstützen.

Weitere Informationen zu Windows PowerShell Pfaden finden Sie unter Funktionsweise von Windows PowerShell.

Definieren eines Drive-Qualified Pfads

Damit der Benutzer auf Daten zugreifen kann, die sich auf einem physischen Laufwerk befinden, muss Ihr Windows PowerShell Anbieter einen laufwerksqualifizierten Pfad unterstützen. Dieser Pfad beginnt mit dem Laufwerksnamen, gefolgt von einem Doppelpunkt (:) z. B. mydrive:\abc\bar.

Definieren eines Provider-Qualified Pfads

Damit die Windows PowerShell Runtime den Anbieter initialisieren und die Initialisierung aufheben kann, muss Ihr Windows PowerShell Anbieter einen anbieterqualifizierten Pfad unterstützen. Beispielsweise ist FileSystem:: \ \uncshare\abc\bar der vom Anbieter qualifizierte Pfad für den Dateisystemanbieter, der von Windows PowerShell.

Definieren eines Provider-Direct Pfads

Um den Remotezugriff auf Ihren Windows PowerShell-Anbieter zuzulassen, sollte ein anbietergesteuerter Pfad unterstützt werden, der direkt an den Windows PowerShell Anbieter für den aktuellen Standort übergeben wird. Beispielsweise kann der Registrierungs-Windows PowerShell-Anbieter \ \server\regkeypath als direkten Anbieterpfad verwenden.

Definieren eines Provider-Internal Pfads

Damit das Anbieter-Cmdlet auf Daten mit nicht Windows PowerShell APIs (Application Programming Interfaces) zugreifen kann, sollte Ihr Windows PowerShell Anbieter einen anbieterinternen Pfad unterstützen. Dieser Pfad wird nach dem "::" im vom Anbieter qualifizierten Pfad angegeben. Beispielsweise lautet der anbieterinterne Pfad für das Dateisystem Windows PowerShell Anbieter \ \uncshare\abc\bar.

Ändern gespeicherter Daten

Rufen Sie beim Überschreiben von Methoden, die den zugrunde liegenden Datenspeicher ändern, immer die System.Management.Automation.Provider.Cmdletprovider.Writeitemobject*-Methode mit der aktuellsten Version des Elements auf, das von dieser Methode geändert wurde. Die Anbieterinfrastruktur bestimmt, ob das Elementobjekt an die Pipeline übergeben werden muss, z. B. wenn der Benutzer den Parameter -PassThru angibt. Wenn das Abrufen des aktuellsten Elements ein kostspieliger Vorgang (leistungsweise) ist, können Sie die Context.PassThru-Eigenschaft testen, um zu ermitteln, ob Sie das resultierende Element tatsächlich schreiben müssen.

Auswählen einer Basisklasse für Ihren Anbieter

Windows PowerShell stellt eine Reihe von Basisklassen bereit, mit denen Sie Ihren eigenen Windows PowerShell-Anbieter implementieren können. Wählen Sie beim Entwerfen eines Anbieters die in diesem Abschnitt beschriebene Basisklasse aus, die ihren Anforderungen am besten entspricht.

Jede Windows PowerShell-Anbieterbasisklasse stellt eine Reihe von Cmdlets zur Verfügung. In diesem Abschnitt werden die Cmdlets beschrieben, aber nicht deren Parameter.

Mithilfe des Sitzungszustands stellt die Windows PowerShell Runtime bestimmten Windows PowerShell-Anbietern mehrere Speicherort-Cmdlets zur Verfügung, z. B. die Get-Location Set-Location Cmdlets , Pop-Location , und Push-Location . Sie können das Get-Help Cmdlet verwenden, um Informationen zu diesen Speicherort-Cmdlets abzurufen.

CmdletProvider-Basisklasse

Die System.Management.Automation.Provider.Cmdletprovider-Klasse definiert einen grundlegenden Windows PowerShell Anbieter. Diese Klasse unterstützt die Anbieterdeklaration und stellt eine Reihe von Eigenschaften und Methoden bereit, die für alle anbieter Windows PowerShell verfügbar sind. Die -Klasse wird vom Get-PSProvider Cmdlet aufgerufen, um alle verfügbaren Anbieter für eine Sitzung aufzulisten. Die Implementierung dieses Cmdlets wird durch den Sitzungszustand ausgelöst.

Hinweis

Windows PowerShell Anbieter sind für alle Windows PowerShell Sprachbereiche verfügbar.

DriveCmdletProvider-Basisklasse

Die System.Management.Automation.Provider.Drivecmdletprovider-Klasse definiert einen Windows PowerShell Laufwerkanbieter, der Vorgänge zum Hinzufügen neuer Laufwerke, Entfernen vorhandener Laufwerke und Initialisieren von Standardlaufwerken unterstützt. Beispielsweise initialisiert der von Windows PowerShell bereitgestellte FileSystem-Anbieter Laufwerke für alle eingebundenen Volumes, z. B. Festplatten und CD/DVD-Gerätelaufwerke.

Diese Klasse wird von der Basisklasse System.Management.Automation.Provider.Cmdletprovider abgeleitet. In der folgenden Tabelle sind die Cmdlets aufgeführt, die von dieser Klasse verfügbar gemacht werden. Zusätzlich zu den aufgeführten Cmdlets ist das Get-PSDrive Cmdlet (verfügbar gemacht durch den Sitzungszustand) ein verwandtes Cmdlet, das zum Abrufen verfügbarer Laufwerke verwendet wird.

Cmdlet Definition
New-PSDrive Erstellt ein neues Laufwerk für die Sitzung und streamt Laufwerksinformationen.
Remove-PSDrive Entfernt ein Laufwerk aus der Sitzung.

ItemCmdletProvider-Basisklasse

Die System.Management.Automation.Provider.Itemcmdletprovider-Klasse definiert einen Windows PowerShell Elementanbieter, der Vorgänge für die einzelnen Elemente des Datenspeichers ausführt und keine Container- oder Navigationsfunktionen annimmt. Diese Klasse wird von der Basisklasse System.Management.Automation.Provider.Drivecmdletprovider abgeleitet. In der folgenden Tabelle sind die Cmdlets aufgeführt, die von dieser Klasse verfügbar gemacht werden.

Cmdlet Definition
Clear-Item Löscht den aktuellen Inhalt von Elementen an der angegebenen Position und ersetzt ihn durch den vom Anbieter angegebenen "clear"-Wert. Dieses Cmdlet übergibt nur dann ein Ausgabeobjekt durch die Pipeline, wenn dessen PassThru Parameter angegeben ist.
Get-Item Ruft Elemente vom angegebenen Speicherort ab und streamt die resultierenden Objekte.
Invoke-Item Ruft die Standardaktion für das Element am angegebenen Pfad auf.
Set-Item Legt ein Element an der angegebenen Position mit dem angegebenen Wert fest. Dieses Cmdlet übergibt nur dann ein Ausgabeobjekt durch die Pipeline, wenn dessen PassThru Parameter angegeben ist.
Resolve-Path Löst die Platzhalter für einen Windows PowerShell Pfad auf und streamt Pfadinformationen.
Test-Path Testet den angegebenen Pfad und gibt zurück, true wenn er vorhanden ist, und false andernfalls . Dieses Cmdlet wird implementiert, um den IsContainer Parameter für die System.Management.Automation.Provider.Cmdletprovider.Writeitemobject*-Methode zu unterstützen.

ContainerCmdletProvider-Basisklasse

Die System.Management.Automation.Provider.Containercmdletprovider-Klasse definiert einen Windows PowerShell Containeranbieter, der einen Container für Datenspeicherelemente für den Benutzer verfügbar macht. Beachten Sie, dass ein Windows PowerShell Containeranbieter nur verwendet werden kann, wenn ein Container (keine geschachtelten Container) mit Elementen darin vorhanden ist. Wenn geschachtelte Container vorhanden sind, müssen Sie einen Windows PowerShell Navigationsanbieter implementieren.

Diese Klasse wird von der Basisklasse System.Management.Automation.Provider.Itemcmdletprovider abgeleitet. In der folgenden Tabelle werden die von dieser Klasse implementierten Cmdlets definiert.

Cmdlet Definition
Copy-Item Kopiert Elemente von einem Speicherort an einen anderen. Dieses Cmdlet übergibt nur dann ein Ausgabeobjekt durch die Pipeline, wenn dessen PassThru Parameter angegeben ist.
Get-Childitem Ruft die untergeordneten Elemente an der angegebenen Position ab und streamt sie als -Objekte.
New-Item Erstellt neue Elemente an der angegebenen Position und streamt das resultierende Objekt.
Remove-Item Entfernt Elemente aus dem angegebenen Speicherort.
Rename-Item Benennt ein Element am angegebenen Speicherort um. Dieses Cmdlet übergibt nur dann ein Ausgabeobjekt durch die Pipeline, wenn dessen PassThru Parameter angegeben ist.

Die System.Management.Automation.Provider.Navigationcmdletprovider-Klasse definiert einen Windows PowerShell Navigationsanbieter, der Vorgänge für Elemente ausführt, die mehrere Container verwenden. Diese Klasse wird von der Basisklasse System.Management.Automation.Provider.Containercmdletprovider abgeleitet. In der folgenden Tabelle sind die Cmdlets aufgeführt, die von dieser Klasse verfügbar gemacht werden.

Cmdlet Definition
Combine-Path Kombiniert zwei Pfade unter Verwendung eines anbieterspezifischen Trennzeichens zwischen Pfaden zu einem einzelnen Pfad. Dieses Cmdlet streamt Zeichenfolgen.
Move-Item Verschiebt Elemente an die angegebene Position. Dieses Cmdlet übergibt nur dann ein Ausgabeobjekt durch die Pipeline, wenn dessen PassThru Parameter angegeben ist.

Ein verwandtes Cmdlet ist das grundlegende Parse-Path Cmdlet, das von Windows PowerShell verwendet wird. Dieses Cmdlet kann verwendet werden, um einen Windows PowerShell Pfad zur Unterstützung des Parameters zu Parent analysieren. Die übergeordnete Pfadzeichenfolge wird gestreamt.

Auswählen der zu unterstützenden Anbieterschnittstellen

Zusätzlich zur Ableitung von einer der Windows PowerShell Basisklassen kann Ihr Windows PowerShell-Anbieter andere Funktionen unterstützen, indem er von einer oder mehreren der folgenden Anbieterschnittstellen abgeleitet wird. In diesem Abschnitt werden diese Schnittstellen und die jeweils unterstützten Cmdlets definiert. Die Parameter für die von der Schnittstelle unterstützten Cmdlets werden nicht beschrieben. Cmdlet-Parameterinformationen sind online mit den Get-Command Cmdlets und Get-Help verfügbar.

IContentCmdletProvider

Die Schnittstelle System.Management.Automation.Provider.Icontentcmdletprovider definiert einen Inhaltsanbieter, der Vorgänge für den Inhalt eines Datenelements ausführt. In der folgenden Tabelle sind die Cmdlets aufgeführt, die von dieser Schnittstelle verfügbar gemacht werden.

Cmdlet Definition
Add-Content Fügt die angegebenen Wertlängen an den Inhalt des angegebenen Elements an. Dieses Cmdlet übergibt ein Ausgabeobjekt nicht über die Pipeline, es sei PassThru denn, der Parameter ist angegeben.
Clear-Content Legt den Inhalt des angegebenen Elements auf den "clear"-Wert fest. Dieses Cmdlet übergibt ein Ausgabeobjekt nicht über die Pipeline, es sei PassThru denn, der Parameter ist angegeben.
Get-Content Ruft den Inhalt der angegebenen Elemente ab und streamt die resultierenden Objekte.
Set-Content Ersetzt den vorhandenen Inhalt für die angegebenen Elemente. Dieses Cmdlet übergibt ein Ausgabeobjekt nicht über die Pipeline, es sei PassThru denn, der Parameter ist angegeben.

IPropertyCmdletProvider

Die Schnittstelle System.Management.Automation.Provider.Ipropertycmdletprovider definiert eine Eigenschaft Windows PowerShell-Anbieter, die Vorgänge für die Eigenschaften von Elementen im Datenspeicher ausführt. In der folgenden Tabelle sind die Cmdlets aufgeführt, die von dieser Schnittstelle verfügbar gemacht werden.

Hinweis

Der Path Parameter für diese Cmdlets gibt einen Pfad zu einem Element an, anstatt eine Eigenschaft zu identifizieren.

Cmdlet Definition
Clear-ItemProperty Legt die Eigenschaften der angegebenen Elemente auf den "clear"-Wert fest. Dieses Cmdlet übergibt ein Ausgabeobjekt nicht über die Pipeline, es sei PassThru denn, der Parameter ist angegeben.
Get-ItemProperty Ruft Eigenschaften aus den angegebenen Elementen ab und streamt die resultierenden Objekte.
Set-ItemProperty Legt Eigenschaften der angegebenen Elemente mit den angegebenen Werten fest. Dieses Cmdlet übergibt ein Ausgabeobjekt nicht über die Pipeline, es sei PassThru denn, der Parameter ist angegeben.

IDynamicPropertyCmdletProvider

Die Schnittstelle System.Management.Automation.Provider.Idynamicpropertycmdletprovider, abgeleitet von System.Management.Automation.Provider.Ipropertycmdletprovider,definiert einen Anbieter, der dynamische Parameter für die unterstützten Cmdlets angibt. Dieser Anbietertyp verarbeitet Vorgänge, für die Eigenschaften zur Laufzeit definiert werden können, z. B. einen neuen Eigenschaftsvorgang. Solche Vorgänge sind für Elemente mit statisch definierten Eigenschaften nicht möglich. In der folgenden Tabelle sind die Cmdlets aufgeführt, die von dieser Schnittstelle verfügbar gemacht werden.

Cmdlet Definition
Copy-ItemProperty Kopiert eine Eigenschaft aus dem angegebenen Element in ein anderes Element. Dieses Cmdlet übergibt ein Ausgabeobjekt nicht über die Pipeline, es sei PassThru denn, der Parameter ist angegeben.
Move-ItemProperty Verschiebt eine Eigenschaft aus dem angegebenen Element in ein anderes Element. Dieses Cmdlet übergibt ein Ausgabeobjekt nicht über die Pipeline, es sei PassThru denn, der Parameter ist angegeben.
New-ItemProperty Erstellt eine -Eigenschaft für die angegebenen Elemente und streamt die resultierenden -Objekte.
Remove-ItemProperty Entfernt eine Eigenschaft für die angegebenen Elemente.
Rename-ItemProperty Benennt eine Eigenschaft der angegebenen Elemente um. Dieses Cmdlet übergibt ein Ausgabeobjekt nicht über die Pipeline, es sei PassThru denn, der Parameter ist angegeben.

ISecurityDescriptorCmdletProvider

Die Schnittstelle System.Management.Automation.Provider.Isecuritydescriptorcmdletprovider fügt einem Anbieter Sicherheitsbeschreibungsfunktionen hinzu. Mit dieser Schnittstelle kann der Benutzer Sicherheitsbeschreibungsinformationen für ein Element im Datenspeicher erhalten und festlegen. In der folgenden Tabelle sind die Cmdlets aufgeführt, die von dieser Schnittstelle verfügbar gemacht werden.

Cmdlet Definition
Get-Acl Ruft die Informationen ab, die in einer Zugriffssteuerungsliste (Access Control List, ACL) enthalten sind, die Teil eines Sicherheitsdeskriptors ist, der zum Schützen von Betriebssystemressourcen verwendet wird, z. B. eine Datei oder ein Objekt.
Set-Acl Legt die Informationen für eine ACL fest. Sie hat die Form einer Instanz von System.Security.Accesscontrol.Objectsecurity für die Elemente, die für den angegebenen Pfad festgelegt sind. Dieses Cmdlet kann Informationen zu Dateien, Schlüsseln und Unterschlüsseln in der Registrierung oder zu einem anderen Anbieterelement festlegen, wenn der Windows PowerShell-Anbieter die Einstellung der Sicherheitsinformationen unterstützt.

Weitere Informationen

Erstellen Windows PowerShell-Anbieter

Funktionsweise Windows PowerShell

Windows PowerShell SDK