Partager via


Concevoir votre fournisseur Windows PowerShell

Vous devriez implémenter un fournisseur Windows PowerShell si votre produit ou configuration expose un ensemble de données stockées, comme une base de données que l’utilisateur souhaitera naviguer ou parcourir. De plus, si votre produit fournit un conteneur, même s’il ne s’agit pas d’un conteneur multiniveau, il est logique d’implémenter un fournisseur Windows PowerShell. Par exemple, vous pourriez vouloir implémenter un fournisseur de conteneurs PowerShell Windows si le verbe cmdlet Copier, Déplacer, Renommer, Nouveau ou Supprimer a du sens comme opération sur vos données de produit ou de configuration.

Les chemins PowerShell de Windows identifient votre fournisseur

L’exécution Windows PowerShell utilise les chemins Windows PowerShell pour accéder au fournisseur Windows PowerShell approprié. Lorsqu’un cmdlet spécifie l’un de ces chemins, l’exécution sait quel fournisseur utiliser pour accéder au magasin de données associé. Ces chemins incluent les chemins qualifiés par le conducteur, les chemins qualifiés par le fournisseur, les chemins directs par le fournisseur et les chemins internes au fournisseur. Chaque fournisseur Windows PowerShell doit prendre en charge un ou plusieurs de ces chemins.

Pour plus d’informations sur les chemins PowerShell de Windows, consultez Comment fonctionne Windows PowerShell.

Définir un chemin Drive-Qualified

Pour permettre à l’utilisateur d’accéder aux données situées sur un disque physique, votre fournisseur Windows PowerShell doit prendre en charge un chemin qualifié par le disque. Ce chemin commence par le nom du disque suivi d’un deux-points (:), par exemple, mydrive :\abc\bar.

Définir un chemin Provider-Qualified

Pour permettre à l’exécution Windows PowerShell d’initialiser et de déinitialiser le fournisseur, votre fournisseur Windows PowerShell doit prendre en charge un chemin qualifié par le fournisseur. Par exemple, FileSystem ::\uncshare\abc\bar est le chemin qualifié par le fournisseur de FileSystem fourni par Windows PowerShell.

Définir un chemin Provider-Direct

Pour permettre un accès à distance à votre fournisseur Windows PowerShell, il devrait prendre en charge un chemin direct vers le fournisseur qui transmet directement au fournisseur Windows PowerShell pour la localisation actuelle. Par exemple, le fournisseur PowerShell Windows du registre peut utiliser \\server\regkeypath comme chemin direct au fournisseur.

Définir un chemin Provider-Internal

Pour permettre au cmdlet fournisseur d’accéder aux données via des interfaces de programmation d’applications (API) non PowerShell Windows, votre fournisseur PowerShell Windows doit prendre en charge un chemin interne au fournisseur. Ce chemin est indiqué après le « :: » dans le chemin qualifié par le fournisseur. Par exemple, le chemin interne du fournisseur pour le fournisseur PowerShell de Windows FileSystem est \\uncshare\abc\bar.

Modification des données stockées

Lors de la suppression des méthodes qui modifient le stockage de données sous-jacent, appelez toujours la méthode System.Management.Automation.Provider.CmdletProvider.WriteItemObject* avec la version la plus up-tode l’élément modifiée par cette méthode. L’infrastructure du fournisseur détermine si l’objet élément doit être transmis au pipeline, par exemple lorsque l’utilisateur spécifie le paramètre -PassThru. Si récupérer l’élément le plus up-toà la date est une opération coûteuse (en termes de performance), vous pouvez tester la propriété Context.PassThru pour déterminer si vous devez réellement écrire l’élément résultant.

Choisissez une classe de base pour votre fournisseur

Windows PowerShell propose plusieurs classes de base que vous pouvez utiliser pour implémenter votre propre fournisseur Windows PowerShell. Lors de la conception d’un fournisseur, choisissez la classe de base, décrite dans cette section, qui correspond le mieux à vos besoins.

Chaque classe de base de fournisseur Windows PowerShell met à disposition un ensemble de cmdlets. Cette section décrit les cmdlets, mais ne décrit pas leurs paramètres.

En utilisant l’état de session, l’exécution Windows PowerShell rend plusieurs cmdlets de localisation disponibles pour certains fournisseurs Windows PowerShell, tels que les Get-Locationcmdlets , Set-Location, Pop-Location, et Push-Location les cmdlets. Vous pouvez utiliser le Get-Help cmdlet pour obtenir des informations sur ces cmdlets de localisation.

Classe de base CmdletProvider

La classe System.Management.Automation.Provider.CmdletProvider définit un fournisseur PowerShell de base pour Windows. Cette classe prend en charge la déclaration du fournisseur et fournit un certain nombre de propriétés et de méthodes disponibles pour tous les fournisseurs PowerShell de Windows. Le cours est invoqué par le Get-PSProvider cmdlet pour lister tous les prestataires disponibles pour une session. La mise en œuvre de ce cmdlet est assurée par l’état de la session.

Note

Les fournisseurs Windows PowerShell sont disponibles pour tous les champs de portée du langage Windows PowerShell.

Classe de base DriveCmdletProvider

La classe System.Management.Automation.Provider.DriveCmdletProvider définit un fournisseur de disques Windows PowerShell qui prend en charge les opérations d’ajout de nouveaux disques, de suppression de disques existants et d’initialisation des disques par défaut. Par exemple, le fournisseur de système de fichiers fourni par Windows PowerShell initialise les lecteurs pour tous les volumes montés, tels que les disques durs et les lecteurs CD/DVD.

Cette classe dérive de la classe de base System.Management.Automation.Provider.CmdletProvider . Le tableau suivant liste les cmdlets exposés par cette classe. En plus de ceux listés, le Get-PSDrive cmdlet (exposé par l’état de la session) est un cmdlet apparenté utilisé pour récupérer les disques disponibles.

Applet de commande Definition
New-PSDrive Crée un nouveau lecteur pour la session, et diffuse les informations du drive.
Remove-PSDrive Ça supprime un disque de la session.

ItemCmdletProvider Classe de base

La classe System.Management.Automation.Provider.ItemCmdletProvider définit un fournisseur d’éléments Windows PowerShell qui effectue des opérations sur les éléments individuels du stockage de données, et ne suppose aucune capacité de conteneur ou de navigation. Cette classe dérive de la classe de base System.Management.Automation.Provider.DriveCmdletProvider . Le tableau suivant liste les cmdlets exposés par cette classe.

Applet de commande Definition
Clear-Item Efface le contenu actuel des éléments à l’emplacement spécifié, puis le remplace par la valeur « clear » spécifiée par le fournisseur. Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.
Get-Item Récupère les objets à l’emplacement spécifié et diffuse les objets résultants.
Invoke-Item Invoque l’action par défaut pour l’élément sur le chemin spécifié.
Set-Item Place un élément à l’emplacement spécifié avec la valeur indiquée. Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.
Resolve-Path Résout les jokers pour un chemin PowerShell Windows et diffuse les informations du chemin.
Test-Path Teste le chemin spécifié, et retourne true s’il existe ou false non. Ce cmdlet est implémenté pour supporter le IsContainer paramètre de la méthode System.Management.Automation.Provider.CmdletProvider.WriteItemObject* .

Classe de base ContainerCmdletProvider

La classe System.Management.Automation.Provider.ContainerCmdletProvider définit un fournisseur de conteneurs Windows PowerShell qui expose un conteneur, pour les éléments de stockage de données, à l’utilisateur. Sachez qu’un fournisseur de conteneurs Windows PowerShell ne peut être utilisé que lorsqu’il y a un conteneur (pas de conteneurs imbriqués) contenant des éléments. S’il existe des conteneurs imbriqués, alors vous devez implémenter un fournisseur de navigation Windows PowerShell.

Cette classe dérive de la classe de base System.Management.Automation.Provider.ItemCmdletProvider . Le tableau suivant définit les cmdlets implémentés par cette classe.

Applet de commande Definition
Copy-Item Copie les objets d’un endroit à un autre. Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.
Get-ChildItem Récupère les éléments enfants à l’emplacement spécifié, puis les diffuse en flux sous forme d’objets.
New-Item Crée de nouveaux éléments à l’emplacement spécifié et diffuse l’objet résultant en streaming.
Remove-Item Enlève les objets de l’emplacement spécifié.
Rename-Item Renomme un élément à l’emplacement spécifié. Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.

La classe System.Management.Automation.Provider.NavigationCmdletProvider définit un fournisseur de navigation Windows PowerShell qui effectue des opérations pour des éléments utilisant plus d’un conteneur. Cette classe dérive de la classe de base System.Management.Automation.Provider.ContainerCmdletProvider . Le tableau suivant liste les commandements exposés par cette classe.

Applet de commande Definition
Combine-Path Combine deux chemins en un seul chemin, en utilisant un délimiteur spécifique au fournisseur entre les chemins. Ce cmdlet diffuse des cordes.
Move-Item Déplace les objets à l’emplacement spécifié. Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.

Un cmdlet apparenté est le cmdlet de base Parse-Path fourni par Windows PowerShell. Ce cmdlet peut être utilisé pour analyser un chemin PowerShell Windows afin de prendre en charge le Parent paramètre. Il diffuse la chaîne de chemin parent.

Sélectionnez les interfaces fournisseurs pour le support

En plus de dériver d’une des classes de base de Windows PowerShell, votre fournisseur Windows PowerShell peut prendre en charge d’autres fonctionnalités en dérivant d’une ou plusieurs des interfaces de fournisseur suivantes. Cette section définit ces interfaces et les cmdlets supportés par chacune. Il ne décrit pas les paramètres des cmdlets supportés par l’interface. Les informations sur les paramètres du cmdlet sont disponibles en ligne via les Get-Command cmdlets et (et Get-Help cmdlets).

IContentCmdletProvider

L’interface System.Management.Automation.Provider.IContentCmdletProvider définit un fournisseur de contenu qui effectue des opérations sur le contenu d’un élément de données. Le tableau suivant liste les cmdlets exposés par cette interface.

Applet de commande Definition
Add-Content Ajoute les longueurs de valeur indiquées au contenu de l’élément spécifié. Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.
Clear-Content Règle le contenu de l’élément spécifié à la valeur « clear ». Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.
Get-Content Récupère le contenu des éléments spécifiés et diffuse les objets résultants.
Set-Content Remplace le contenu existant par les éléments spécifiés. Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.

IPropertyCmdletProvider

L’interface System.Management.Automation.Provider.IPropertyCmdletProvider définit une propriété du fournisseur Windows PowerShell qui effectue des opérations sur les propriétés des éléments dans le magasin de données. Le tableau suivant liste les cmdlets exposés par cette interface.

Note

Le Path paramètre sur ces cmdlets indique un chemin vers un élément au lieu d’identifier une propriété.

Applet de commande Definition
Clear-ItemProperty Fixe les propriétés des éléments spécifiés à la valeur « clear ». Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.
Get-ItemProperty Récupère les propriétés des éléments spécifiés et diffuse les objets résultants.
Set-ItemProperty Définit les propriétés des éléments spécifiés avec les valeurs indiquées. Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.

IDynamicPropertyCmdletProvider

L’interface System.Management.Automation.Provider.IDynamicPropertyCmdletProvider , dérivée de System.Management.Automation.Provider.IPropertyCmdletProvider, définit un fournisseur qui spécifie des paramètres dynamiques pour ses cmdlets pris en charge. Ce type de fournisseur gère des opérations pour lesquelles des propriétés peuvent être définies à l’exécution, par exemple une nouvelle opération de propriété. De telles opérations ne sont pas possibles sur des éléments possédant des propriétés définies statiquement. Le tableau suivant liste les cmdlets exposés par cette interface.

Applet de commande Definition
Copy-ItemProperty Copie une propriété de l’élément spécifié vers un autre élément. Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.
Move-ItemProperty Déplace une propriété de l’élément spécifié vers un autre élément. Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.
New-ItemProperty Crée une propriété sur les éléments spécifiés et diffuse les objets résultants.
Remove-ItemProperty Supprime une propriété pour les éléments spécifiés.
Rename-ItemProperty Renomme une propriété des éléments spécifiés. Ce cmdlet ne fait pas passer un objet de sortie à travers le pipeline à moins que son PassThru paramètre ne soit spécifié.

ISecurityDescriptorCmdletProvider

L’interface System.Management.Automation.Provider.ISecurityDescriptorCmdletProvider ajoute une fonctionnalité de descripteur de sécurité à un fournisseur. Cette interface permet à l’utilisateur d’obtenir et de définir des informations descriptives de sécurité pour un élément dans le magasin de données. Le tableau suivant liste les cmdlets exposés par cette interface.

Applet de commande Definition
Get-Acl Récupère les informations contenues dans une liste de contrôle d’accès (ACL), qui fait partie d’un descripteur de sécurité utilisé pour protéger les ressources du système d’exploitation, par exemple un fichier ou un objet.
Set-Acl Définit les informations pour un ACL. Il prend la forme d’une instance de System.Security.AccessControl.ObjectSecurity sur l’élément ou les éléments désignés pour le chemin spécifié. Ce cmdlet peut définir des informations sur les fichiers, clés et sous-clés dans le registre, ou tout autre élément fournisseur, si le fournisseur Windows PowerShell prend en charge la configuration des informations de sécurité.

Voir aussi

Création de fournisseurs Windows PowerShell

Fonctionnement de Windows PowerShell

Windows PowerShell SDK