Partager via


Extension des objets de sortie

Vous pouvez étendre les objets .NET Framework retournés par des applets de commande, des fonctions et des scripts à l’aide de fichiers de types (.ps1xml). Les fichiers types sont des fichiers XML qui vous permettent d’ajouter des propriétés et des méthodes à des objets existants. Par exemple, Windows PowerShell fournit le fichier Types.ps1xml, qui ajoute des éléments à plusieurs objets .NET Framework existants. Le fichier Types.ps1xml se trouve dans le répertoire d’installation de Windows PowerShell ($PSHOME). Vous pouvez créer votre propre fichier de types pour étendre davantage ces objets ou étendre d’autres objets. Lorsque vous étendez un objet à l’aide d’un fichier de types, toute instance de l’objet est étendue avec les nouveaux éléments.

Extension de l’objet System.Array

L’exemple suivant montre comment Windows PowerShell étend l’objet System.Array dans le fichier Types.ps1xml. Par défaut, objets System.Array ont une propriété Length qui répertorie le nombre d’objets dans le tableau. Toutefois, étant donné que le nom « length » ne décrit pas clairement la propriété, Windows PowerShell ajoute la propriété d’alias Count, qui affiche la même valeur que la propriété Length. Le code XML suivant ajoute la propriété Count au type System.Array.

<Type>
  <Name>System.Array</Name>
  <Members>
    <AliasProperty>
      <Name>Count</Name>
      <ReferencedMemberName>Length</ReferencedMemberName>
    </AliasProperty>
  </Members>
</Type>

Pour afficher cette nouvelle propriété d’alias, utilisez une commande Get-Member sur n’importe quel tableau, comme illustré dans l’exemple suivant.

Get-Member -InputObject (1,2,3,4)

La commande retourne les résultats suivants.

Name           MemberType    Definition
----           ----------    ----------
Count          AliasProperty Count = Length
Address        Method        System.Object& Address(Int32 )
Clone          Method        System.Object Clone()
CopyTo         Method        System.Void CopyTo(Array array, Int32 index):
Equals         Method        System.Boolean Equals(Object obj)
Get            Method        System.Object Get(Int32 )
...
Length         Property      System.Int32 Length {get;}

Vous pouvez utiliser la propriété Count ou la propriété Length pour déterminer le nombre d’objets dans un tableau. Par exemple:

PS> (1, 2, 3, 4).Count
4
PS> (1, 2, 3, 4).Length
4

Fichiers de types personnalisés

Pour créer un fichier de types personnalisés, commencez par copier un fichier de types existant. Le nouveau fichier peut avoir n’importe quel nom, mais il doit avoir une extension de nom de fichier .ps1xml. Lorsque vous copiez le fichier, vous pouvez placer le nouveau fichier dans n’importe quel répertoire accessible à Windows PowerShell, mais il est utile de placer les fichiers dans le répertoire d’installation de Windows PowerShell ($PSHOME) ou dans un sous-répertoire du répertoire d’installation.

Pour ajouter vos propres types étendus au fichier, ajoutez un élément de type pour chaque objet que vous souhaitez étendre. Les rubriques suivantes fournissent des exemples.

Après avoir défini vos propres types étendus, utilisez l’une des méthodes suivantes pour rendre vos objets étendus disponibles :

  • Pour rendre votre fichier de types étendus disponible pour la session active, utilisez l’applet de commande Update-TypeData pour ajouter le nouveau fichier. Si vous souhaitez que vos types soient prioritaires sur les types définis dans d’autres fichiers de types (y compris le fichier Types.ps1xml), utilisez le paramètre PrependData de l’applet de commande Update-TypeData .
  • Pour rendre votre fichier de types étendus disponible pour toutes les sessions ultérieures, ajoutez le fichier de types à un module, exportez la session active ou ajoutez la commande Update-TypeData à votre profil Windows PowerShell.

Fichiers de types de signature

Les fichiers de types doivent être signés numériquement pour empêcher la falsification, car le code XML peut inclure des blocs de script. Pour plus d’informations sur l’ajout de signatures numériques, consultez about_Signing

Voir aussi

définition des propriétés par défaut pour les objets

définition des méthodes par défaut pour les objets

définition des jeux de membres par défaut pour les objets

écriture d’une applet de commande Windows PowerShell