Partager via


Conception de votre fournisseur Windows PowerShell

Vous devez implémenter un fournisseur Windows PowerShell si votre produit ou configuration expose un ensemble de données stockées, par exemple une base de données que l’utilisateur souhaite naviguer ou parcourir. En outre, si votre produit fournit un conteneur, même s’il n’est pas un conteneur à plusieurs niveaux, il est judicieux d’implémenter un fournisseur Windows PowerShell. Par exemple, vous souhaiterez peut-être implémenter un fournisseur de conteneurs Windows PowerShell si le verbe d’applet de commande Copier, Déplacer, Renommer, Nouveau ou Supprimer est logique en tant qu’opération sur vos données de produit ou de configuration.

Les chemins Windows PowerShell identifient votre fournisseur

Le runtime Windows PowerShell utilise des chemins Windows PowerShell pour accéder au fournisseur Windows PowerShell approprié. Lorsqu’une applet de commande spécifie l’un de ces chemins, le runtime sait quel fournisseur utiliser pour accéder au magasin de données associé. Ces chemins incluent les chemins d’accès qualifiés par le lecteur, les chemins qualifiés par le fournisseur, les chemins d’accès directs du fournisseur et les chemins internes du fournisseur. Chaque fournisseur Windows PowerShell doit prendre en charge un ou plusieurs de ces chemins.

Pour plus d’informations sur les chemins d’accès Windows PowerShell, consultez Fonctionnement de Windows PowerShell.

Définition d’un chemin d’accès Drive-Qualified

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

Définition d’un chemin d’accès Provider-Qualified

Pour permettre au runtime Windows PowerShell d’initialiser et d’annuler l’initialisation du fournisseur, votre fournisseur Windows PowerShell doit prendre en charge un chemin qualifié par le fournisseur. Par exemple, FileSystem :\\uncshare\abc\bar est le chemin d’accès qualifié par le fournisseur FileSystem fourni par Windows PowerShell.

Définition d’un chemin d’accès Provider-Direct

Pour autoriser l’accès à distance à votre fournisseur Windows PowerShell, il doit prendre en charge un chemin d’accès direct du fournisseur pour passer directement au fournisseur Windows PowerShell pour l’emplacement actuel. Par exemple, le fournisseur Windows PowerShell du Registre peut utiliser \\server\regkeypath comme chemin direct du fournisseur.

Définition d’un chemin d’accès Provider-Internal

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

Modification des données stockées

En cas de substitution de méthodes qui modifient le magasin de données sous-jacent, appelez toujours la méthode System.Management.Automation.Provider.CmdletProvider.WriteItemObject* avec la version la plus up-to-date de l’élément modifié par cette méthode. L’infrastructure du fournisseur détermine si l’objet d’élément doit être transmis au pipeline, par exemple lorsque l’utilisateur spécifie le paramètre -PassThru. Si vous récupérez l’élément le plus up-to-date est une opération coûteuse (en matière de performances), vous pouvez tester la propriété Context.PassThru pour déterminer si vous avez réellement besoin d’écrire l’élément résultant.

Choisir une classe de base pour votre fournisseur

Windows PowerShell fournit un certain nombre de 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 est la plus adaptée à vos besoins.

Chaque classe de base du fournisseur Windows PowerShell rend disponible un ensemble d’applets de commande. Cette section décrit les applets de commande, mais elle ne décrit pas leurs paramètres.

À l’aide de l’état de session, le runtime Windows PowerShell rend plusieurs applets de commande d’emplacement disponibles pour certains fournisseurs Windows PowerShell, tels que les Get-Location, les Set-Location, les Pop-Locationet les applets de commande Push-Location. Vous pouvez utiliser l’applet de commande Get-Help pour obtenir des informations sur ces applets de commande d’emplacement.

CmdletProvider, classe de base

La classe System.Management.Automation.Provider.CmdletProvider définit un fournisseur Windows PowerShell de base. Cette classe prend en charge la déclaration du fournisseur et fournit plusieurs propriétés et méthodes disponibles pour tous les fournisseurs Windows PowerShell. La classe est appelée par l’applet de commande Get-PSProvider pour répertorier tous les fournisseurs disponibles pour une session. L’implémentation de cette applet de commande est fournie par l’état de session.

Remarque

Les fournisseurs Windows PowerShell sont disponibles pour toutes les étendues de langage Windows PowerShell.

Classe de base DriveCmdletProvider

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

Cette classe dérive de la classe de base System.Management.Automation.Provider.CmdletProvider classe de base. Le tableau suivant répertorie les applets de commande exposées par cette classe. Outre ceux répertoriés, l’applet de commande Get-PSDrive (exposée par l’état de session) est une applet de commande associée utilisée pour récupérer les lecteurs disponibles.

cmdlet Définition
New-PSDrive Crée un lecteur pour la session et diffuse des informations sur le lecteur.
Remove-PSDrive Supprime un lecteur de la session.

Classe de base ItemCmdletProvider

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 magasin de données et ne suppose aucune fonctionnalité de conteneur ou de navigation. Cette classe dérive de la classe de base System.Management.Automation.Provider.DriveCmdletProvider. Le tableau suivant répertorie les applets de commande exposées par cette classe.

cmdlet Définition
Clear-Item Efface le contenu actuel des éléments à l’emplacement spécifié et le remplace par la valeur « clear » spécifiée par le fournisseur. Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est spécifié.
Get-Item Récupère les éléments de l’emplacement spécifié et diffuse les objets résultants.
Invoke-Item Appelle l’action par défaut de l’élément au niveau du chemin d’accès spécifié.
Set-Item Définit un élément à l’emplacement spécifié avec la valeur indiquée. Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est spécifié.
Resolve-Path Résout les caractères génériques d’un chemin d’accès Windows PowerShell et diffuse les informations de chemin d’accès.
Test-Path Teste le chemin spécifié et retourne true s’il existe et false sinon. Cette applet de commande est implémentée pour prendre en charge le paramètre IsContainer pour 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 du magasin de données, à l’utilisateur. N’oubliez pas qu’un fournisseur de conteneurs Windows PowerShell ne peut être utilisé que lorsqu’il existe un conteneur (aucun conteneur imbriqué) avec des éléments dans celui-ci. S’il existe des conteneurs imbriqués, vous devez implémenter un fournisseur de navigation Windows PowerShell.

Cette classe dérive du System.Management.Automation.Provider.ItemCmdletProvider classe de base. Le tableau suivant définit les applets de commande implémentées par cette classe.

cmdlet Définition
Copy-Item Copie les éléments d’un emplacement vers un autre. Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est spécifié.
Get-ChildItem Récupère les éléments enfants à l’emplacement spécifié et les diffuse en tant qu’objets.
New-Item Crée des éléments à l’emplacement spécifié et diffuse l’objet résultant.
Remove-Item Supprime les éléments de l’emplacement spécifié.
Rename-Item Renomme un élément à l’emplacement spécifié. Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est spécifié.

La classe System.Management.Automation.Provider.NavigationCmdletProvider définit un fournisseur de navigation Windows PowerShell qui effectue des opérations pour les éléments qui utilisent plusieurs conteneurs. Cette classe dérive de la classe de base System.Management.Automation.Provider.ContainerCmdletProvider. Le tableau suivant répertorie les applets de commande exposées par cette classe.

cmdlet Définition
Combine-Path Combine deux chemins en un seul chemin, à l’aide d’un délimiteur spécifique au fournisseur entre les chemins. Cette applet de commande diffuse des chaînes.
Move-Item Déplace les éléments vers l’emplacement spécifié. Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est spécifié.

Une applet de commande associée est l’applet de commande de base Parse-Path fournie par Windows PowerShell. Cette applet de commande peut être utilisée pour analyser un chemin d’accès Windows PowerShell pour prendre en charge le paramètre Parent. Il diffuse la chaîne de chemin d’accès parent.

Sélectionner des interfaces de fournisseur à prendre en charge

En plus de dériver de l’une des classes de base 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 applets de commande prises en charge par chacun d’eux. Il ne décrit pas les paramètres des applets de commande prises en charge par l’interface. Les informations sur les paramètres d’applet de commande sont disponibles en ligne à l’aide des applets de commande Get-Command et Get-Help.

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 répertorie les applets de commande exposées par cette interface.

cmdlet Définition
Add-Content Ajoute les longueurs de valeur indiquées au contenu de l’élément spécifié. Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est spécifié.
Clear-Content Définit le contenu de l’élément spécifié sur la valeur « clear ». Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est 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 pour les éléments spécifiés. Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est spécifié.

IPropertyCmdletProvider

L’interface System.Management.Automation.Provider.IPropertyCmdletProvider définit une propriété 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 répertorie les applets de commande exposées par cette interface.

Remarque

Le paramètre Path sur ces applets de commande indique un chemin d’accès à un élément au lieu d’identifier une propriété.

cmdlet Définition
Clear-ItemProperty Définit les propriétés des éléments spécifiés sur la valeur « clear ». Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est 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. Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est 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 applets de commande prises en charge. Ce type de fournisseur gère les opérations pour lesquelles les propriétés peuvent être définies au moment de l’exécution, par exemple une nouvelle opération de propriété. Ces opérations ne sont pas possibles sur les éléments ayant des propriétés définies statiquement. Le tableau suivant répertorie les applets de commande exposées par cette interface.

cmdlet Définition
Copy-ItemProperty Copie une propriété de l’élément spécifié vers un autre élément. Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est spécifié.
Move-ItemProperty Déplace une propriété de l’élément spécifié vers un autre élément. Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est 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. Cette applet de commande ne transmet pas d’objet de sortie via le pipeline, sauf si son paramètre PassThru est spécifié.

ISecurityDescriptorCmdletProvider

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

cmdlet Définition
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 d’une liste de contrôle d’accès. Il se présente sous la forme d’une instance de System.Security.AccessControl.ObjectSecurity sur le ou les éléments désignés pour le chemin spécifié. Cette applet de commande peut définir des informations sur les fichiers, les clés et les sous-clés dans le Registre ou tout autre élément de fournisseur, si le fournisseur Windows PowerShell prend en charge le paramètre des informations de sécurité.

Voir aussi

création de fournisseurs Windows PowerShell

fonctionnement de Windows PowerShell

sdk Windows PowerShell