Compartir a través de


Extensión de los objetos de salida

Puede ampliar los objetos de .NET Framework devueltos por cmdlets, funciones y scripts mediante archivos de tipos (.ps1xml). Los archivos de tipos son archivos basados en XML que permiten agregar propiedades y métodos a objetos existentes. Por ejemplo, Windows PowerShell proporciona el archivo Types.ps1xml, que agrega elementos a varios objetos de .NET Framework existentes. El archivo Types.ps1xml se encuentra en el directorio de instalación de Windows PowerShell ($PSHOME). Puede crear su propio archivo de tipos para ampliar aún más esos objetos o ampliar otros objetos. Al extender un objeto mediante un archivo de tipos, cualquier instancia del objeto se extiende con los nuevos elementos.

Extensión del objeto System.Array

En el ejemplo siguiente se muestra cómo Windows PowerShell extiende el objeto System.Array en el archivo Types.ps1xml. De forma predeterminada, objetos System.Array tienen una propiedad Length que muestra el número de objetos de la matriz. Sin embargo, dado que el nombre "length" no describe claramente la propiedad , Windows PowerShell agrega la propiedad de alias Count, que muestra el mismo valor que la propiedad Length. El siguiente XML agrega la propiedad Count al tipo de System.Array de.

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

Para ver esta nueva propiedad de alias, use un comando Get-Member en cualquier matriz, como se muestra en el ejemplo siguiente.

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

El comando devuelve los siguientes resultados.

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;}

Puede usar la propiedad Count o la propiedad Length para determinar cuántos objetos hay en una matriz. Por ejemplo:

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

Archivos de tipos personalizados

Para crear un archivo de tipos personalizados, empiece por copiar un archivo de tipos existente. El nuevo archivo puede tener cualquier nombre, pero debe tener una extensión de nombre de archivo .ps1xml. Al copiar el archivo, puede colocar el nuevo archivo en cualquier directorio accesible para Windows PowerShell, pero resulta útil colocar los archivos en el directorio de instalación de Windows PowerShell ($PSHOME) o en un subdirectorio del directorio de instalación.

Para agregar sus propios tipos extendidos al archivo, agregue un elemento types para cada objeto que desee extender. En los temas siguientes se proporcionan ejemplos.

Después de definir sus propios tipos extendidos, use uno de los métodos siguientes para que los objetos extendidos estén disponibles:

  • Para que el archivo de tipos extendidos esté disponible para la sesión actual, use el cmdlet Update-TypeData para agregar el nuevo archivo. Si quiere que los tipos tengan prioridad sobre los tipos definidos en otros archivos de tipos (incluido el archivo Types.ps1xml), use el parámetro PrependData del cmdlet update-TypeData de.
  • Para que el archivo de tipos extendidos esté disponible para todas las sesiones futuras, agregue el archivo de tipos a un módulo, exporte la sesión actual o agregue el comando Update-TypeData al perfil de Windows PowerShell.

Archivos de tipos de firma

Los archivos de tipos deben estar firmados digitalmente para evitar alteraciones, ya que el XML puede incluir bloques de script. Para obtener más información sobre cómo agregar firmas digitales, consulte about_Signing

Véase también

Definir propiedades predeterminadas para objetos

definir métodos predeterminados para objetos

Definir conjuntos de miembros predeterminados para objetos

escribir un cmdlet de Windows PowerShell