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. |
NavigationCmdletProvider-Basisklasse
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