Freigeben über


Übersicht über den Windows PowerShell-Anbieter

Ein Windows PowerShell-Anbieter ermöglicht es jedem Datenspeicher, wie ein Dateisystem verfügbar zu machen, als wäre es ein bereitgestelltes Laufwerk. Mit dem integrierten Registrierungsanbieter können Sie z. B. in der Registrierung navigieren, wie sie im c Laufwerk Ihres Computers navigieren würden. Ein Anbieter kann auch die Item Cmdlets außer Kraft setzen (z. B. Get-Item, Set-Itemusw.), sodass die Daten in Ihrem Datenspeicher wie Dateien und Verzeichnisse behandelt werden können, wenn sie in einem Dateisystem navigieren. Weitere Informationen zu Anbietern und Laufwerken und den integrierten Anbietern in Windows PowerShell finden Sie unter about_Providers.

Anbieter und Laufwerke

Ein Anbieter definiert die Logik, die verwendet wird, um auf einen Datenspeicher zuzugreifen, zu navigieren und zu bearbeiten, während ein Laufwerk einen bestimmten Einstiegspunkt für einen Datenspeicher (oder einen Teil eines Datenspeichers) angibt, der vom Anbieter definiert ist. Mit dem Registrierungsanbieter können Sie z. B. auf Struktur und Schlüssel in einer Registrierung zugreifen, und die HKLM- und HKCU-Laufwerke geben die entsprechenden Strukturen in der Registrierung an. Die HKLM- und HKCU-Laufwerke verwenden beide den Registrierungsanbieter.

Wenn Sie einen Anbieter schreiben, können Sie Standardlaufwerke angeben, die automatisch erstellt werden, wenn der Anbieter verfügbar ist. Außerdem definieren Sie eine Methode zum Erstellen neuer Laufwerke, die diesen Anbieter verwenden.

Anbietertyp

Es gibt mehrere Arten von Anbietern, die jeweils eine andere Funktionalitätsebene bieten. Ein Anbieter wird als Klasse implementiert, die von einem der untergeordneten Elemente der System.Management.Automation.SessionStateCategoryCmdletProvider Klasse abgeleitet wird. Informationen zu den verschiedenen Anbietertypen finden Sie unter Anbietertypen.

Anbieter-Cmdlets

Anbieter können Methoden implementieren, die Cmdlets entsprechen, und benutzerdefinierte Verhaltensweisen für diese Cmdlets erstellen, wenn sie in einem Laufwerk für diesen Anbieter verwendet werden. Je nach Anbietertyp sind unterschiedliche Cmdlet-Gruppen verfügbar. Eine vollständige Liste der Cmdlets, die für die Anpassung in Anbietern verfügbar sind, finden Sie unter Anbieter-Cmdlets.

Anbieterpfade

Benutzer navigieren in Anbieterlaufwerken wie Dateisystemen. Aus diesem Fall erwarten sie, dass die Syntax der Pfade den Pfaden entspricht, die in der Dateisystemnavigation verwendet werden. Wenn ein Benutzer ein Anbieter-Cmdlet ausführt, gibt er einen Pfad zu dem Element an, auf das zugegriffen werden soll. Der angegebene Pfad kann auf verschiedene Weise interpretiert werden. Ein Anbieter sollte mindestens einen der folgenden Pfadtypen unterstützen.

Laufwerksqualifizierte Pfade

Ein laufwerksqualifizierter Pfad ist eine Kombination aus dem Elementnamen, dem Container und Untercontainern, in denen sich das Element befindet, und das Windows PowerShell-Laufwerk, über das das Element zugegriffen wird. (Laufwerke werden vom Anbieter definiert, der für den Zugriff auf den Datenspeicher verwendet wird. Dieser Pfad beginnt mit dem Laufwerknamen gefolgt von einem Doppelpunkt (:)). Beispiel: Get-ChildItem C:

Anbieterqualifizierte Pfade

Damit das Windows PowerShell-Modul Ihren Anbieter initialisieren und aufheben kann, muss der Anbieter einen anbieterqualifizierten Pfad unterstützen. Beispielsweise kann der Benutzer den FileSystem-Anbieter initialisieren und aufheben, da er den folgenden anbieterqualifizierten Pfad definiert: FileSystem::\\uncshare\abc\bar.

Anbieter-direkte Pfade

Um den Remotezugriff auf Ihren Windows PowerShell-Anbieter zu ermöglichen, sollte er einen anbieterbasierten Pfad unterstützen, der direkt an den Windows PowerShell-Anbieter für den aktuellen Speicherort übergeben wird. Beispielsweise kann der Windows PowerShell-Registrierungsanbieter \\server\regkeypath als anbieterbasierten Pfad verwenden.

Anbieterinterne Pfade

Damit das Anbieter-Cmdlet auf Daten zugreifen kann, die keine Windows PowerShell-Anwendungsprogrammierschnittstellen (APIs) verwenden, sollte Ihr Windows PowerShell-Anbieter einen anbieterinternen Pfad unterstützen. Dieser Pfad wird nach dem "::" im anbieterqualifizierten Pfad angegeben. Der anbieterinterne Pfad für den FileSystem Windows PowerShell-Anbieter ist z. B. \\uncshare\abc\bar.

Überschreiben von Cmdlet-Parametern

Das Verhalten einiger anbieterspezifischer Cmdlets kann von einem Anbieter überschrieben werden. Eine Liste der Parameter, die überschrieben werden können und wie sie in Ihrer Anbieterklasse außer Kraft gesetzt werden können, finden Sie unter Parameter des Anbieter-Cmdlets

Dynamische Parameter

Anbieter können dynamische Parameter definieren, die einem Anbieter-Cmdlet hinzugefügt werden, wenn der Benutzer einen bestimmten Wert für einen der statischen Parameter des Cmdlets angibt. Dazu implementiert ein Anbieter eine oder mehrere dynamische Parametermethoden. Eine Liste der Cmdlet-Parameter, die zum Hinzufügen dynamischer Parameter verwendet werden können, und die Methoden, die zum Implementieren dieser Parameter verwendet werden können, finden Sie unter dynamische Parameter des Anbieter-Cmdlets.

Anbieterfunktionen

Die System.Management.Automation.Provider.ProviderCapabilities Enumeration definiert eine Reihe von Funktionen, die Anbieter unterstützen können. Dazu gehören die Möglichkeit, Wildcards zu verwenden, Elemente zu filtern und Transaktionen zu unterstützen. Um Funktionen für einen Anbieter anzugeben, fügen Sie eine Liste der Werte der System.Management.Automation.ProviderCapabilities Enumeration hinzu, kombiniert mit einem logischen OR Vorgang, als System.Management.Automation.Provider.Provider.CmdletProviderAttribute.ProviderCapabilities* Eigenschaft (der zweite Parameter des Attributs) des System.Management.Automation.Provider.CmdletProviderAttribute Attribut für Ihre Anbieterklasse. Das folgende Attribut gibt beispielsweise an, dass der Anbieter die System.Management.Automation.Provider.ProviderCapabilitiesShouldProcess und System.Management.Automation.Provider.ProviderCapabilitiesTransactions-Funktionen unterstützt.

[CmdletProvider(RegistryProvider.ProviderName, ProviderCapabilities.ShouldProcess | ProviderCapabilities.Transactions)]

Hilfe zum Anbieter-Cmdlet

Beim Schreiben eines Anbieters können Sie Ihre eigene Hilfe für die von Ihnen unterstützten Anbieter-Cmdlets implementieren. Dies umfasst ein einzelnes Hilfethema für jedes Anbieter-Cmdlet oder mehrere Versionen eines Hilfethemas für Fälle, in denen das Anbieter-Cmdlet basierend auf der Verwendung dynamischer Parameter unterschiedlich funktioniert. Um die cmdletspezifische Hilfe des Anbieters zu unterstützen, muss Ihr Anbieter die System.Management.Automation.Provider.ICmdletProviderSupportsHelp Schnittstelle implementieren.

Das Windows PowerShell-Modul ruft die System.Management.Automation.Provider.ICmdletProviderSupportsHelp.GetHelpMaml* Methode auf, um das Hilfethema für Ihre Anbieter-Cmdlets anzuzeigen. Das Modul stellt den Namen des Cmdlets bereit, das der Benutzer beim Ausführen des cmdlets Get-Help und des aktuellen Pfads des Benutzers angegeben hat. Der aktuelle Pfad ist erforderlich, wenn Ihr Anbieter unterschiedliche Versionen desselben Anbieter-Cmdlets für verschiedene Laufwerke implementiert. Die Methode muss eine Zeichenfolge zurückgeben, die den XML-Code für die Cmdlet-Hilfe enthält.

Der Inhalt der Hilfedatei wird mit PSMAML XML geschrieben. Dies ist das gleiche XML-Schema, das zum Schreiben von Hilfeinhalten für eigenständige Cmdlets verwendet wird. Fügen Sie den Inhalt für Das benutzerdefinierte Cmdlet "Hilfe" zur Hilfedatei für Ihren Anbieter unter dem CmdletHelpPaths-Element hinzu. Das folgende Beispiel zeigt das command-Element für ein einzelnes Anbieter-Cmdlet und zeigt, wie Sie den Namen des Anbieter-Cmdlets angeben, das Ihr Anbieter verwendet. unterstützt

<CmdletHelpPaths>
  <command:command>
    <command:details>
      <command:name>ProviderCmdletName</command:name>
      <command:verb>Verb</command:verb>
      <command:noun>Noun</command:noun>
    <command:details>
  </command:command>
<CmdletHelpPath>

Siehe auch

Windows PowerShell-Anbieterfunktionalität

Anbieter-Cmdlets

Schreiben eines Windows PowerShell-Anbieters