Recherche de site Web

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 . Vous devez faire une copie de ce fichier et utiliser cette copie pour créer un nouveau fournisseur Windows PowerShell, en supprimant toute fonctionnalité dont vous n'avez pas besoin. Pour plus d’informations sur d’autres implémentations de fournisseur Windows PowerShell, consultez Conception de votre fournisseur Windows PowerShell.

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 sur false.

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 sur false.

  • 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 sur false.

  • 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

Articles connexes