Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Ce sujet est le point de départ pour apprendre à créer un fournisseur PowerShell Windows. Le fournisseur de base décrit ici fournit des méthodes pour démarrer et arrêter le fournisseur, et bien que ce fournisseur ne fournisse pas de moyen d’accéder à un stockage de données ni d’obtenir ou de définir les données dans ce stock, il fournit la fonctionnalité de base requise par tous les fournisseurs.
Comme mentionné précédemment, le fournisseur de base décrit ici met en œuvre des méthodes pour démarrer et arrêter le prestataire. L’exécution Windows PowerShell appelle ces méthodes pour initialiser et déinitialiser le fournisseur.
Note
Vous pouvez trouver un exemple de ce fournisseur dans le fichier AccessDBSampleProvider01.cs fourni par Windows PowerShell.
Définition de la classe fournisseur Windows PowerShell
La première étape pour créer un fournisseur Windows PowerShell est de définir sa classe .NET. Ce fournisseur de base définit une classe appelée AccessDBProvider qui dérive de la classe de base System.Management.Automation.Provider.CmdletProvider .
Il est recommandé de placer vos classes fournisseur dans un Providers espace de noms de votre API, par exemple xxx.PowerShell.Providers. Ce fournisseur utilise l’espace Microsoft.Samples.PowerShell.Provider de noms dans lequel tous les échantillons de fournisseurs Windows PowerShell s’exécutent.
Note
La classe d’un fournisseur PowerShell Windows doit être explicitement indiquée comme publique. Les classes non marquées comme publiques seront par défaut en interne et ne seront pas détectées par le runtime PowerShell de Windows.
Voici la définition de la classe pour ce fournisseur de base :
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider
Juste avant la définition de la classe, vous devez déclarer l’attribut System.Management.Automation.Provider.CmdletProviderAttribute , avec la syntaxe [CmdletProvider()].
Vous pouvez définir des mots-clés d’attribut pour déclarer davantage la classe si nécessaire. Remarquez que l’attribut System.Management.Automation.Provider.CmdletProviderAttribute déclaré ici inclut deux paramètres. Le premier paramètre d’attribut spécifie le nom par défaut adapté au fournisseur, que l’utilisateur peut modifier ultérieurement. Le second paramètre spécifie les capacités définies par Windows PowerShell que le fournisseur expose à l’exécution de Windows PowerShell lors du traitement des commandes. Les valeurs possibles pour les capacités du fournisseur sont définies par l’énumération System.Management.Automation.Provider.ProvidersCapabilities . Comme il s’agit d’un fournisseur de base, il ne prend en charge aucune fonctionnalité.
Note
Le nom pleinement qualifié du fournisseur Windows PowerShell inclut le nom assembleur et d’autres attributs déterminés par Windows PowerShell lors de l’enregistrement du fournisseur.
Définition de Provider-Specific information d’état
La classe de base System.Management.Automation.Provider.CmdletProvider et toutes les classes dérivées sont considérées comme sans état, car l’exécution PowerShell de Windows crée des instances de fournisseur uniquement selon les besoins. Par conséquent, si votre fournisseur nécessite un contrôle complet et une maintenance d’état pour les données spécifiques au fournisseur, il doit dériver une classe à partir de la classe System.Management.Automation.ProviderInfo . Votre classe dérivée doit définir les membres nécessaires pour maintenir l’état afin que les données spécifiques au fournisseur puissent être accessibles lorsque l’exécution PowerShell de Windows appelle la méthode System.Management.Automation.Provider.CmdletProvider.Start* pour initialiser le fournisseur.
Un fournisseur Windows PowerShell peut également maintenir un état basé sur la connexion. Pour plus d’informations sur le maintien de l’état de connexion, voir Création d’un fournisseur de disques PowerShell.
Initialisation du fournisseur
Pour initialiser le fournisseur, l’exécution Windows PowerShell appelle la méthode System.Management.Automation.Provider.CmdletProvider.Start* lorsque Windows PowerShell est lancé. Dans la plupart des cas, votre fournisseur peut utiliser l’implémentation par défaut de cette méthode, qui retourne simplement l’objet System.Management.Automation.ProviderInfo qui décrit votre fournisseur. Cependant, dans le cas où vous souhaitez ajouter des informations supplémentaires d’initialisation, vous devez implémenter votre propre méthode System.Management.Automation.Provider.CmdletProvider.Start* qui retourne une version modifiée de l’objet System.Management.Automation.ProviderInfo qui est transmise à votre fournisseur. En général, cette méthode devrait retourner l’objet System.Management.Automation.ProviderInfo fourni qui lui est transmis ou un objet System.Management.Automation.ProviderInfo modifié contenant d’autres informations d’initialisation.
Ce fournisseur de base ne supprime pas cette méthode. Cependant, le code suivant montre l’implémentation par défaut de cette méthode :
Le fournisseur peut maintenir l’état des informations spécifiques au fournisseur tel que décrit dans la définition de l’état des données spécifiques au fournisseur. Dans ce cas, votre implémentation doit passer outre la méthode System.Management.Automation.Provider.CmdletProvider.Start* pour retourner une instance de la classe dérivée.
Paramètres dynamiques de départ
L’implémentation de votre fournisseur de la méthode System.Management.Automation.Provider.CmdletProvider.Start* pourrait nécessiter des paramètres supplémentaires. Dans ce cas, le fournisseur doit passer outre la méthode System.Management.Automation.Provider.CmdletProvider.StartDynamicParameters* et renvoyer un objet ayant des propriétés et des champs avec des attributs d’analyse similaires à une classe cmdlet ou à un objet System.Management.Automation.RuntimeDefinedParameterDictionary .
Ce fournisseur de base ne supprime pas cette méthode. Cependant, le code suivant montre l’implémentation par défaut de cette méthode :
Déinitialisation du fournisseur
Pour les ressources gratuites utilisées par le fournisseur Windows PowerShell, votre fournisseur doit implémenter sa propre méthode System.Management.Automation.Provider.CmdletProvider.Stop* . Cette méthode est appelée par l’exécution Windows PowerShell pour déinitialiser le fournisseur à la fin d’une session.
Ce fournisseur de base ne supprime pas cette méthode. Cependant, le code suivant montre l’implémentation par défaut de cette méthode :
Exemple de code
Pour un code d’exemple complet, voir AccessDbProviderSample01 Code Sample.
Test du fournisseur Windows PowerShell
Une fois que votre fournisseur Windows PowerShell est enregistré auprès de Windows PowerShell, vous pouvez le tester en exécutant les cmdlets supportés en ligne de commande. Pour ce fournisseur de base, exécutez le nouveau shell et utilisez le Get-PSProvider cmdlet pour récupérer la liste des fournisseurs et vous assurer que le fournisseur AccessDb est présent.
Get-PSProvider
Vous obtenez la sortie suivante :
Name Capabilities Drives
---- ------------ ------
AccessDb None {}
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess {C, Z}
Function ShouldProcess {function}
Registry ShouldProcess {HKLM, HKCU}