Compartir a través de


about_Format.ps1xml

TEMA
    about_Format.ps1xml

DESCRIPCIÓN BREVE
    Los archivos Format.ps1xml de Windows PowerShell definen la 
    presentación predeterminada de los objetos en la consola de 
    Windows PowerShell. Puede crear sus propios archivos 
    Format.ps1xml para cambiar la presentación de objetos o definir 
    las presentaciones predeterminadas para los nuevos tipos de 
    objetos que se creen en Windows PowerShell.

DESCRIPCIÓN DETALLADA
    Los archivos Format.ps1xml de Windows PowerShell definen la 
    presentación predeterminada de los objetos en Windows PowerShell. 
    Puede crear sus propios archivos Format.ps1xml para cambiar la 
    presentación de objetos o definir las presentaciones 
    predeterminadas para los nuevos tipos de objetos que se creen en 
    Windows PowerShell.


    Cuando Windows PowerShell muestra un objeto, utiliza los datos de 
    los archivos de formato estructurados para determinar la 
    presentación predeterminada del objeto. Los datos de los archivos 
    de formato determinan si el objeto se representa en una tabla o 
    en una lista, y también qué propiedades se muestran de forma 
    predeterminada. 


    El formato afecta únicamente a la presentación. No afecta a qué 
    propiedades de objeto se pasan por la canalización ni a cómo se pasan.


    Windows PowerShell incluye siete archivos de formato. Estos 
    archivos se encuentran en el directorio de instalación ($pshome). 
    Cada archivo define la presentación de un grupo de objetos de 
    Microsoft .NET Framework:


    Certificate.Format.ps1xml
            Objetos del almacén de certificados, tales como 
            certificados X.509 y almacenes de certificados.

    DotNetTypes.Format.ps1xml
            Otros tipos de .NET Framework, tales como los objetos 
            CultureInfo, EventLogEntry y FileVersionInfo.

    FileSystem.Format.ps1xml
            Objetos del sistema de archivos, tales como archivos y 
            directorios.

    Help.Format.ps1xml
            Vistas de la Ayuda, tales como vistas detalladas y 
            completas, parámetros y ejemplos.

    PowerShellCore.format.ps1xml
            Objetos generados por cmdlets básicos de Windows 
            PowerShell, tales como Get-Member y Get-History.

    PowerShellTrace.format.ps1xml
            Objetos de seguimiento, tales como los generados por el 
            cmdlet Trace-Command.

    Registry.format.ps1xml 
            Objetos del Registro, como las claves y entradas.


    Un archivo de formato puede definir cuatro vistas diferentes de 
    cada objeto: tabla, lista, ancha y compleja. Por ejemplo, cuando 
    la salida de un comando Get-ChildItem se canaliza a un comando 
    Format-List, Format-List utiliza la vista del archivo 
    FileSystem.format.ps1xml para determinar cómo mostrar los objetos 
    de carpeta y archivo en formato de lista.


    En un archivo Format.ps1xml, una vista se define mediante un 
    conjunto de etiquetas XML que describen el nombre de la vista, el 
    tipo de objeto al que se puede aplicar, los encabezados de 
    columna y las propiedades que se muestran en la vista. El formato 
    de los archivos Format.ps1xml se aplica justo antes de que los 
    datos se presenten al usuario. 

  Crear archivos Format.ps1xml nuevos

      Los archivos .ps1xml que se instalan con Windows PowerShell 
      están firmados digitalmente para evitar su alteración, porque 
      el formato puede incluir bloques de script. Por consiguiente, 
      para cambiar el formato de presentación de una vista de objeto 
      existente o para agregar vistas para nuevos objetos, cree sus 
      propios archivos Format.ps1xml y, a continuación, agréguelos a 
      su sesión de Windows PowerShell.


      Para crear un nuevo archivo, copie un archivo Format.ps1xml 
      existente. El nuevo archivo puede tener cualquier nombre, pero 
      debe tener la extensión .ps1xml. Puede colocar el nuevo archivo 
      en cualquier directorio al que Windows PowerShell tenga acceso, 
      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 cambiar el formato de una vista actual, busque la vista en 
      el archivo de formato y, a continuación, utilice las etiquetas 
      para cambiar la vista. Para crear una vista para un nuevo tipo 
      de objeto, cree una nueva vista o utilice una vista existente 
      como modelo. (Las etiquetas se describen en la próxima sección 
      de este tema.) A continuación, puede eliminar todas las demás 
      vistas del archivo para que los cambios sean evidentes para 
      cualquiera que examine el archivo.


      Una vez guardados los cambios, se utiliza el cmdlet 
      Update-FormatData para agregarlo a la sesión de Windows 
      PowerShell. Si desea que la vista tenga precedencia sobre una 
      vista definida en los archivos integrados, utilice el parámetro 
      PrependData del cmdlet Update-FormatData. Update-FormatData 
      afecta solamente a la sesión actual. Para realizar el cambio en 
      todas las sesiones futuras, agregue el comando Update-FormatData
      al perfil de Windows PowerShell.


  Ejemplo: Agregar datos de calendario a los objetos de referencia 
  cultural

      En este ejemplo se muestra cómo cambiar el formato de los 
      objetos de referencia cultural (System.Globalization.CultureInfo) 
      generados por el cmdlet Get-Culture.
      Los comandos del ejemplo agregan la propiedad de calendario a 
      la presentación predeterminada de la vista de tabla de los 
      objetos de referencia cultural.


      El primer paso consiste en buscar el archivo Format.ps1xml que 
      contiene la vista actual de los objetos de referencia cultural. 
      El comando Select-String siguiente busca el archivo:


      select-string -path $pshome\*format.ps1xml ` 
              -pattern System.Globalization.CultureInfo


      Este comando revela que la definición se encuentra en el archivo 
      DotNetTypes.Format.ps1xml.


      El siguiente comando copia el contenido del archivo a un nuevo 
      archivo, MisTiposPuntoNet.Format.ps1xml.


      copy-item DotNetTypes.Format.ps1xml MisTiposPuntoNet.Format.ps1xml


      A continuación, abra el archivo MisTiposPuntoNet.Format.ps1xml 
      en cualquier editor de texto o XML, como el Bloc de notas. 
      Busque la sección del objeto System.Globalization.CultureInfo. 
      El código XML siguiente define las vistas del objeto CultureInfo.
      El objeto tiene solamente una vista TableControl.
 

      <View>
          <Name>System.Globalization.CultureInfo</Name>
          <ViewSelectedBy>
             <TypeName>Deserialized.System.Globalization.CultureInfo</
             TypeName>
             <TypeName>System.Globalization.CultureInfo</TypeName>
          </ViewSelectedBy>

          <TableControl>
              <TableHeaders>
                  <TableColumnHeader>
                      <Width>16</Width>
                  </TableColumnHeader>
                  <TableColumnHeader>
                      <Width>16</Width>
                  </TableColumnHeader>
                  <TableColumnHeader/>
              </TableHeaders>
              <TableRowEntries>
                  <TableRowEntry>
                      <TableColumnItems>
                          <TableColumnItem>
                              <PropertyName>LCID</PropertyName>
                          </TableColumnItem>
                          <TableColumnItem>
                              <PropertyName>Name</PropertyName>
                          </TableColumnItem>
                          <TableColumnItem>
                              <PropertyName>DisplayName</PropertyName>
                          </TableColumnItem>
                      </TableColumnItems>
                  </TableRowEntry>
               </TableRowEntries>
          </TableControl>
      </View>


      Elimine el resto del archivo, salvo las etiquetas de apertura 
      <?XML>, <Configuration> y <ViewDefinitions> y las etiquetas de 
      cierre <ViewDefintions> y <Configuration>. También debe eliminar la 
      firma digital cada vez que cambie el archivo.


<?xml version="1.0" encoding="utf-8" ?>
      <Configuration>
          <ViewDefinitions>
              <View>
                  <Name>System.Globalization.CultureInfo</Name>
                  <ViewSelectedBy>
                      <TypeName>Deserialized.System.Globalization.Cult
                      ureInfo</TypeName>
                      <TypeName>System.Globalization.CultureInfo</Type
                      Name>
                  </ViewSelectedBy>

                  <TableControl>
                      <TableHeaders>
                          <TableColumnHeader>
                              <Width>16</Width>
                          </TableColumnHeader>
                          <TableColumnHeader>
                              <Width>16</Width>
                          </TableColumnHeader>
                          <TableColumnHeader/>
                      </TableHeaders>
                      <TableRowEntries>
                          <TableRowEntry>
                              <TableColumnItems>
                                  <TableColumnItem>
                                      <PropertyName>LCID</PropertyName>
                                  </TableColumnItem>
                                  <TableColumnItem>
                                      <PropertyName>Name</PropertyName>
                                  </TableColumnItem>
                                  <TableColumnItem>
                                      <PropertyName>DisplayName</Prope
                                      rtyName>
                                  </TableColumnItem>
                              </TableColumnItems>
                          </TableRowEntry>
                       </TableRowEntries>
                  </TableControl>
              </View>
          </ViewDefinitions>
      </Configuration>


      A continuación, cree una nueva columna para la propiedad 
      Calendar agregando un nuevo conjunto de etiquetas 
      <TableColumnHeader>. El valor de la propiedad Calendar puede ser 
      de tipo long, de modo que se utiliza un valor de 45 caracteres, 
      como sigue:


                  <TableControl>
                    <TableHeaders>
                        <TableColumnHeader>
                            <Width>16</Width>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Width>16</Width>
                        </TableColumnHeader>
                 
                        <TableColumnHeader>
                            <Width>45</Width>
                        </TableColumnHeader>

                        <TableColumnHeader/>
                    </TableHeaders> 


      Ahora, agregue un nuevo elemento de columna en las filas de la 
      tabla, como sigue:


                <TableRowEntries>
                    <TableRowEntry>
                        <TableColumnItems>
                            <TableColumnItem>
                                <PropertyName>LCID</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>Name</PropertyName>
                            </TableColumnItem>

                            <TableColumnItem>
                                <PropertyName>Calendar</PropertyName>
                            </TableColumnItem>

                            <TableColumnItem>
                                <PropertyName>DisplayName</PropertyName>
                            </TableColumnItem>
                        </TableColumnItems>
                    </TableRowEntry>
                 </TableRowEntries>



      Después de guardar el archivo y cerrarlo, utilice un comando 
      Update-FormatData, como el siguiente, para agregar el nuevo 
      archivo de formato a la sesión actual. El comando utiliza el 
      parámetro PrependData para colocar el nuevo archivo en un orden 
      de precedencia mayor que el del archivo original. (Para obtener 
      más información sobre Update-FormatData, escriba "get-help 
      update-formatdata".)


      update-formatdata -prependpath $pshome\MisTiposPuntoNet.format.ps1xml


      Para probar el cambio, escriba "get-culture" y, a continuación, 
      revise el resultado, que incluye la propiedad Calendar.


      C:\PS> get-culture

      LCID Nombre  Calendar                               DisplayName
      ---- ----    --------                               -----------
      3082 es-ES System.Globalization.GregorianCalendar Español (España)


  Código XML en los archivos Format.ps1xml

      La sección ViewDefinitions de cada archivo Format.ps1xml 
      contiene etiquetas <View> que definen cada vista. Una etiqueta 
      <View> típica incluye las etiquetas siguientes:

    
          <Name>
              La etiqueta <Name> identifica el nombre de la vista.


          <ViewSelectedBy>
              La etiqueta <ViewSelectedBy> especifica el tipo o los 
              tipos de objetos a los que se aplica la vista.

    
          <GroupBy>
              La etiqueta <GroupBy> especifica cómo se combinarán los 
              elementos de la vista en grupos.


          <TableControl>
          <ListControl>
          <WideControl>
          <ComplexControl>
              Estas etiquetas contienen las etiquetas que especifican 
              cómo se mostrará cada elemento.

    
      La etiqueta <ViewSelectedBy> puede contener una etiqueta 
      <TypeName> por cada tipo de objeto al que se aplique la vista. 
      O bien, puede contener una etiqueta <SelectionSetName> que hace 
      referencia a un conjunto de selección que se define en otra 
      parte mediante una etiqueta <SelectionSet>.


      La etiqueta <GroupBy> contiene una etiqueta <PropertyName> que 
      especifica la propiedad del objeto según la que se van a 
      agrupar los elementos. También contiene una etiqueta <Label> 
      que especifica una cadena que se va a usar como etiqueta para 
      cada grupo, o una etiqueta <ComplexControlName> que hace 
      referencia a un control complejo definido en otro lugar 
      mediante una etiqueta <Control>. La etiqueta <Control> contiene 
      una etiqueta <Name> y una etiqueta <ComplexControl>. 

    
      La etiqueta <TableControl> contiene normalmente etiquetas 
      <TableHeaders> y <TableRowEntries> que definen el formato de 
      los encabezados y las filas de la tabla. La etiqueta 
      <TableHeaders> suele contener etiquetas <TableColumnHeader> 
      que, a su vez, contienen etiquetas <Label>, <Width> y 
      <Alignment>. La etiqueta <TableRowEntries> contiene etiquetas 
      <TableRowEntry> para cada fila de la tabla. La etiqueta 
      <TableRowEntry> contiene una etiqueta <TableColumnItems> que 
      contiene una etiqueta <TableColumnItem> para cada columna de la fila. 
      Por regla general, la etiqueta <TableColumnItem> contiene una 
      etiqueta <PropertyName> que identifica la propiedad del objeto 
      que se va a mostrar en la ubicación definida, o una etiqueta 
      <ScriptBlock> que contiene código de script que calcula un 
      resultado que se va a mostrar en la ubicación. 


      Nota: pueden usarse también bloques de script en otras 
      ubicaciones en las que los resultados calculados puedan ser útiles. 

    
      La etiqueta <TableColumnItem> también puede contener una 
      etiqueta <FormatString> que especifica cómo se van a mostrar la 
      propiedad o los resultados calculados.

    
      La etiqueta <ListControl> suele contener una etiqueta 
      <ListEntries>. La etiqueta <ListEntries> contiene una etiqueta 
      <ListItems>. La etiqueta <ListItems> contiene etiquetas 
      <ListItem>, que contienen etiquetas <PropertyName>. Las 
      etiquetas <PropertyName> especifican la propiedad del objeto 
      que se va a mostrar en la ubicación especificada de la lista. 
      Si la selección de vista se define con un conjunto de 
      selección, la etiqueta <ListControl> también puede contener una 
      etiqueta <EntrySelectedBy> con una o varias etiquetas 
      <TypeName>. Estas etiquetas <TypeName> especifican el tipo de 
      objeto que debe mostrar la etiqueta <ListControl>.

    
      La etiqueta <WideControl> suele contener una etiqueta 
      <WideEntries>. La etiqueta <WideEntries> contiene una o más 
      etiquetas <WideEntry>. Una etiqueta <WideEntry> suele contener 
      una etiqueta <PropertyName> que especifica la propiedad que se 
      va a mostrar en la ubicación especificada de la vista. La 
      etiqueta <PropertyName> puede contener una etiqueta 
      <FormatString> que especifica cómo se debe presentar la propiedad. 

    
      La etiqueta <ComplexControl> contiene combinaciones de 
      etiquetas más complejas que otros tipos de vistas. Una etiqueta 
      <ComplexControl> contiene normalmente una etiqueta 
      <ComplexEntries>. Una etiqueta <ComplexEntries> contiene varias 
      etiquetas <ComplexEntry>. Una etiqueta <ComplexEntry> contiene 
      normalmente una etiqueta <ComplexItem>. Esta etiqueta, a su 
      vez, puede contener varias etiquetas que especifican el 
      contenido y el formato para la ubicación especificada en la 
      vista, incluidas las etiquetas <Text>, <Indentation>, 
      <ExpressionBinding> y <NewLine>.


  Update-FormatData

      Para cargar los archivos Format.ps1xml en una sesión de Windows 
      PowerShell, se utiliza el cmdlet Update-FormatData. Si desea 
      que las vistas del archivo tengan prioridad sobre las vistas 
      del archivo Format.ps1xml integrado, utilice el parámetro 
      PrependData del cmdlet Update-FormatData. Update-FormatData 
      afecta solamente a la sesión actual. Para realizar el cambio en 
      todas las sesiones futuras, agregue el comando Update-FormatData
       al perfil de Windows PowerShell.


  Presentaciones predeterminadas en Types.ps1xml

      Las presentaciones predeterminadas de algunos tipos de objetos 
      básicos se definen en el archivo Types.ps1xml en el directorio 
      $pshome. Los nodos se denominan PsStandardMembers y los 
      subnodos utilizan una de las etiquetas siguientes:


          <DefaultDisplayProperty>
          <DefaultDisplayPropertySet>
          <DefaultKeyPropertySet>


      Para obtener más información, escriba el comando siguiente:

      get-help about_types.ps1xml
 

  Realizar el seguimiento del uso de los archivos Format.ps1xml

      Para detectar errores en la carga o aplicación de los archivos 
      Format.ps1xml, se utiliza el cmdlet Trace-Command con 
      cualquiera de los componentes de formato siguientes como valor 
      del parámetro Name:


      FormatFileLoading
          UpdateFormatData
          FormatViewBinding


      Para obtener más información, escriba los comandos siguientes:


          get-help trace-command
          get-help get-tracesource   


  Firmar archivos Format.ps1xml

      Para proteger a los usuarios del archivo Format.ps1xml, debe 
      firmarse el archivo mediante una firma digital. Para obtener 
      más información, escriba:

          get-help about_signing


VEA TAMBIÉN
    Update-FormatData
    Trace-Command
    Get-TraceSource