Ampliar objetos de salida
Puede ampliar los objetos de .NET Framework que devuelven cmdlets, funciones y scripts mediante archivos de tipos (.ps1xml). Los archivos de tipos son archivos basados en XML que le permiten agregar propiedades y métodos a objetos existentes. Por ejemplo, Windows PowerShell proporciona el archivo Types.ps1xml, que agrega elementos a varios objetos .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. Cuando extiendes un objeto usando un archivo de tipos, cualquier instancia del objeto se extiende con los nuevos elementos.
Extendiendo el objeto System.Array
El siguiente ejemplo muestra cómo Windows PowerShell extiende el objeto System.Array en el archivo Types.ps1xml. De forma predeterminada, los objetos System.Array tienen una propiedad Length que enumera el número de objetos en la matriz. Sin embargo, debido a que el nombre "longitud" 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 System.Array.
<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 siguiente ejemplo.
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 utilizar 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, comience copiando un archivo de tipos existente. El nuevo archivo puede tener cualquier nombre, pero debe tener una extensión de nombre de archivo .ps1xml. Cuando copia el archivo, puede colocar el nuevo archivo en cualquier directorio al que pueda acceder Windows PowerShell, pero es ú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 de tipos para cada objeto que desee extender. Los siguientes temas proporcionan ejemplos.
Para obtener más información sobre cómo agregar propiedades y conjuntos de propiedades, consulte Propiedades extendidas.
Para obtener más información sobre cómo agregar métodos, consulte Métodos extendidos.
Para obtener más información sobre cómo agregar conjuntos de miembros, consulte Conjuntos de miembros extendidos.
Después de definir sus propios tipos extendidos, utilice uno de los siguientes métodos para que sus objetos extendidos estén disponibles:
- Para que su archivo de tipos extendidos esté disponible para la sesión actual, use el cmdlet Update-TypeData para agregar el nuevo archivo. Si desea que sus tipos tengan prioridad sobre los tipos definidos en otros archivos de tipos (incluido el archivo Types.ps1xml), use el parámetro
PrependDatadel cmdlet Update-TypeData. - Para que su 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 a su perfil de Windows PowerShell.
Archivos de tipos de firma
Los archivos de tipos deben estar firmados digitalmente para evitar manipulaciones porque el XML puede incluir bloques de secuencias de comandos. Para obtener más información sobre cómo agregar firmas digitales, consulte about_Signing
Ver también
Definición de propiedades predeterminadas para objetos
Definición de métodos predeterminados para objetos
Definición de conjuntos de miembros predeterminados para objetos
Escribir un cmdlet de Windows PowerShell