Création d'un fournisseur de propriétés Windows PowerShell
Cette rubrique décrit comment créer un fournisseur permettant à l'utilisateur de manipuler les propriétés des éléments d'un magasin de données. Par conséquent, ce type de fournisseur est appelé fournisseur de propriétés Windows PowerShell. Par exemple, le fournisseur de registre fourni par Windows PowerShell gère les valeurs de clé de registre en tant que propriétés de l'élément de clé de registre. Ce type de fournisseur doit ajouter l'interface System.Management.Automation.Provider.Ipropertycmdletprovider à l'implémentation de la classe .NET.
Note
Windows PowerShell fournit un fichier modèle que vous pouvez utiliser pour développer un fournisseur Windows PowerShell. Le fichier TemplateProvider.cs est disponible sur le kit de développement logiciel Microsoft Windows pour les composants d'exécution Windows Vista et .NET Framework 3.0. Pour obtenir des instructions de téléchargement, consultez Comment installer Windows PowerShell et Télécharger le SDK Windows PowerShell. Le modèle téléchargé est disponible dans le répertoire
Prudence
Les méthodes de votre fournisseur de propriétés doivent écrire tous les objets à l’aide de la méthode System.Management.Automation.Provider.Cmdletprovider.Writepropertyobject*.
Définir le fournisseur Windows PowerShell
Un fournisseur de propriétés doit créer une classe .NET qui prend en charge l'interface System.Management.Automation.Provider.Ipropertycmdletprovider. Voici la déclaration de classe par défaut du fichier TemplateProvider.cs fourni par Windows PowerShell.
Définir la fonctionnalité de base
L'interface System.Management.Automation.Provider.Ipropertycmdletprovider peut être attachée à n'importe quelle classe de base du fournisseur, à l'exception de la classe System.Management.Automation.Provider.Drivecmdletprovider. Ajoutez la fonctionnalité de base requise par la classe de base que vous utilisez. Pour plus d’informations sur les classes de base, consultez Conception de votre fournisseur Windows PowerShell.
Récupération de propriétés
Pour récupérer les propriétés, le fournisseur doit implémenter la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* pour prendre en charge les appels de l'applet de commande Get-ItemProperty. Cette méthode récupère les propriétés de l’élément situé sur le chemin interne au fournisseur spécifié (complètement qualifié).
Le paramètre providerSpecificPickList indique les propriétés à récupérer. Si ce paramètre est null ou vide, la méthode doit récupérer toutes les propriétés. De plus, System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* écrit une instance d'un objet System.Management.Automation.PSObject qui représente un ensemble de propriétés des propriétés récupérées. La méthode ne devrait rien renvoyer.
Il est recommandé que l'implémentation de System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* prenne en charge l'expansion par caractères génériques des noms de propriété pour chaque élément de la liste de sélection. Pour ce faire, utilisez la classe System.Management.Automation.Wildcardpattern pour effectuer la correspondance de modèles génériques.
Voici l'implémentation par défaut de System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* à partir du fichier TemplateProvider.cs fourni par Windows PowerShell.
Choses à retenir sur la mise en œuvre de GetProperty
Les conditions suivantes peuvent s'appliquer à votre implémentation de System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* :
Lors de la définition de la classe de fournisseur, un fournisseur de propriétés Windows PowerShell peut déclarer les capacités de fournisseur ExpandWildcards, Filter, Include ou Exclude à partir de l'énumération System.Management.Automation.Provider.Providercapabilities. Dans ces cas, l’implémentation de la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* doit garantir que le chemin transmis à la méthode répond aux exigences des fonctionnalités spécifiées. Pour ce faire, la méthode doit accéder à la propriété appropriée, par exemple les propriétés System.Management.Automation.Provider.Cmdletprovider.Exclude* et System.Management.Automation.Provider.Cmdletprovider.Include*.
Par défaut, les remplacements de cette méthode ne doivent pas récupérer de lecteur pour les objets masqués à l'utilisateur, sauf si la propriété System.Management.Automation.Provider.Cmdletprovider.Force* est définie sur
true. Une erreur doit être écrite si le chemin représente un élément masqué à l'utilisateur et que System.Management.Automation.Provider.Cmdletprovider.Force* est défini surfalse.
Attachement de paramètres dynamiques à l'applet de commande Get-ItemProperty
L'applet de commande Get-ItemProperty peut nécessiter des paramètres supplémentaires spécifiés dynamiquement au moment de l'exécution. Pour fournir ces paramètres dynamiques, le fournisseur de propriétés Windows PowerShell doit implémenter la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters*. Le paramètre path indique un chemin interne complet au fournisseur, tandis que le paramètre providerSpecificPickList spécifie les propriétés spécifiques au fournisseur saisies sur la ligne de commande. Ce paramètre peut être null ou vide si les propriétés sont redirigées vers l'applet de commande. Dans ce cas, cette méthode renvoie un objet qui possède des propriétés et des champs avec des attributs d'analyse similaires à une classe d'applet de commande ou à un objet System.Management.Automation.Runtimedefinedparameterdictionary. Le runtime Windows PowerShell utilise l'objet renvoyé pour ajouter les paramètres à l'applet de commande.
Voici l'implémentation par défaut de System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* à partir du fichier TemplateProvider.cs fourni par Windows PowerShell.
Définition des propriétés
Pour définir des propriétés, le fournisseur de propriétés Windows PowerShell doit implémenter la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* pour prendre en charge les appels de l'applet de commande Set-ItemProperty. Cette méthode définit une ou plusieurs propriétés de l'élément sur le chemin spécifié et écrase les propriétés fournies si nécessaire. System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* écrit également une instance d'un objet System.Management.Automation.PSObject qui représente un ensemble de propriétés des propriétés mises à jour.
Voici l'implémentation par défaut de System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* à partir du fichier TemplateProvider.cs fourni par Windows PowerShell.
Choses à retenir sur la mise en œuvre de Set-ItemProperty
Les conditions suivantes peuvent s'appliquer à une implémentation de System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* :
Lors de la définition de la classe de fournisseur, un fournisseur de propriétés Windows PowerShell peut déclarer les capacités de fournisseur ExpandWildcards, Filter, Include ou Exclude à partir de l'énumération System.Management.Automation.Provider.Providercapabilities. Dans ces cas, l'implémentation de la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* doit garantir que le chemin transmis à la méthode répond aux exigences des fonctionnalités spécifiées. Pour ce faire, la méthode doit accéder à la propriété appropriée, par exemple les propriétés System.Management.Automation.Provider.Cmdletprovider.Exclude* et System.Management.Automation.Provider.Cmdletprovider.Include*.
Par défaut, les remplacements de cette méthode ne doivent pas récupérer de lecteur pour les objets masqués à l'utilisateur, sauf si la propriété System.Management.Automation.Provider.Cmdletprovider.Force* est définie sur
true. Une erreur doit être écrite si le chemin représente un élément masqué à l'utilisateur et que System.Management.Automation.Provider.Cmdletprovider.Force* est défini surfalse.Votre implémentation de la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* doit appeler System.Management.Automation.Provider.Cmdletprovider.ShouldProcess et vérifier sa valeur de retour avant d'apporter des modifications au magasin de données. Cette méthode est utilisée pour confirmer l'exécution d'une opération lorsqu'une modification est apportée à l'état du système, par exemple en renommant des fichiers. System.Management.Automation.Provider.Cmdletprovider.ShouldProcess envoie le nom de la ressource à modifier à l'utilisateur, avec le runtime Windows PowerShell et gère tous les paramètres de ligne de commande ou variables de préférence pour déterminer ce qui doit être affiché.
Après l'appel à System.Management.Automation.Provider.Cmdletprovider.ShouldProcess renvoie
true, si des modifications potentiellement dangereuses du système peuvent être apportées, la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* doit appeler la méthode System.Management.Automation.Provider.Cmdletprovider.ShouldContinue. Cette méthode envoie un message de confirmation à l'utilisateur pour permettre un retour d'information supplémentaire indiquant que l'opération doit être poursuivie.
Attachement de paramètres dynamiques pour l'applet de commande Set-ItemProperty
L'applet de commande Set-ItemProperty peut nécessiter des paramètres supplémentaires spécifiés dynamiquement au moment de l'exécution. Pour fournir ces paramètres dynamiques, le fournisseur de propriétés Windows PowerShell doit implémenter la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Setpropertydynamicparameters*. Cette méthode renvoie un objet qui possède des propriétés et des champs avec des attributs d'analyse similaires à une classe d'applet de commande ou à un objet System.Management.Automation.Runtimedefinedparameterdictionary. La valeur null peut être renvoyée si aucun paramètre dynamique ne doit être ajouté.
Voici l'implémentation par défaut de System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* à partir du fichier TemplateProvider.cs fourni par Windows PowerShell.
Propriétés de compensation
Pour effacer les propriétés, le fournisseur de propriétés Windows PowerShell doit implémenter la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* pour prendre en charge les appels de l'applet de commande Clear-ItemProperty. Cette méthode définit une ou plusieurs propriétés pour l'élément situé sur le chemin spécifié.
Voici l'implémentation par défaut de System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* à partir du fichier TemplateProvider.cs fourni par Windows PowerShell.
Ce qu'il faut retenir concernant la mise en œuvre de ClearProperty
Les conditions suivantes peuvent s'appliquer à votre implémentation de System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* :
Lors de la définition de la classe de fournisseur, un fournisseur de propriétés Windows PowerShell peut déclarer les capacités de fournisseur ExpandWildcards, Filter, Include ou Exclude à partir de l'énumération System.Management.Automation.Provider.Providercapabilities. Dans ces cas, l’implémentation de la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* doit garantir que le chemin transmis à la méthode répond aux exigences des fonctionnalités spécifiées. Pour ce faire, la méthode doit accéder à la propriété appropriée, par exemple les propriétés System.Management.Automation.Provider.Cmdletprovider.Exclude* et System.Management.Automation.Provider.Cmdletprovider.Include*.
Par défaut, les remplacements de cette méthode ne doivent pas récupérer de lecteur pour les objets masqués à l'utilisateur, sauf si la propriété System.Management.Automation.Provider.Cmdletprovider.Force* est définie sur
true. Une erreur doit être écrite si le chemin représente un élément masqué à l'utilisateur et que System.Management.Automation.Provider.Cmdletprovider.Force* est défini surfalse.Votre implémentation de la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* doit appeler System.Management.Automation.Provider.Cmdletprovider.ShouldProcess et vérifier sa valeur de retour avant d'apporter des modifications au magasin de données. Cette méthode est utilisée pour confirmer l'exécution d'une opération avant qu'une modification ne soit apportée à l'état du système, comme la suppression du contenu. System.Management.Automation.Provider.Cmdletprovider.ShouldProcess envoie le nom de la ressource à modifier à l'utilisateur, le runtime Windows PowerShell prenant en compte les paramètres de ligne de commande ou les variables de préférence pour déterminer ce qui doit être affiché.
Après l'appel à System.Management.Automation.Provider.Cmdletprovider.ShouldProcess renvoie
true, si des modifications potentiellement dangereuses du système peuvent être apportées, la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* doit appeler la méthode System.Management.Automation.Provider.Cmdletprovider.ShouldContinue. Cette méthode envoie un message de confirmation à l'utilisateur pour permettre un retour d'information supplémentaire indiquant que l'opération potentiellement dangereuse doit être poursuivie.
Attachement de paramètres dynamiques à l'applet de commande Clear-ItemProperty
L'applet de commande Clear-ItemProperty peut nécessiter des paramètres supplémentaires spécifiés dynamiquement au moment de l'exécution. Pour fournir ces paramètres dynamiques, le fournisseur de propriétés Windows PowerShell doit implémenter la méthode System.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters*. Cette méthode renvoie un objet qui possède des propriétés et des champs avec des attributs d'analyse similaires à une classe d'applet de commande ou à un objet System.Management.Automation.Runtimedefinedparameterdictionary. La valeur null peut être renvoyée si aucun paramètre dynamique ne doit être ajouté.
Voici l'implémentation par défaut de System.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters* à partir du fichier TemplateProvider.cs fourni par Windows PowerShell.
Création du fournisseur Windows PowerShell
Consultez Comment enregistrer des applets de commande, des fournisseurs et des applications hôtes.
Voir aussi
Fournisseur Windows PowerShell
Concevez votre fournisseur Windows PowerShell
Extension des types d'objets et du formatage
Comment enregistrer des applets de commande, des fournisseurs et des applications hôtes