Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Para obtener más información sobre cómo agregar propiedades y conjuntos de propiedades, vea propiedades extendidas
Para obtener más información sobre cómo agregar métodos, vea Métodos extendidos.
Para obtener más información sobre cómo agregar conjuntos de miembros, vea conjuntos de miembros extendidos.
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