TÓPICO
    about_Format.ps1xml

DESCRIÇÃO RESUMIDA
    Os arquivos Format.ps1xml no Windows PowerShell definem a 
    exibição padrão de objetos no console do Windows PowerShell. Você 
    pode criar seus próprios arquivos Format.ps1xml para alterar a 
    exibição de objetos ou para definir exibições padrão de novos 
    tipos de objeto criados no Windows PowerShell.

DESCRIÇÃO LONGA
    Os arquivos Format.ps1xml no Windows PowerShell definem a 
    exibição padrão de objetos no Windows PowerShell. Você pode criar 
    seus próprios arquivos Format.ps1xml para alterar a exibição de 
    objetos ou para definir exibições padrão de novos tipos de objeto 
    criados no Windows PowerShell.


    Quando o Windows PowerShell exibe um objeto, ele usa os dados em 
    arquivos de formatação estruturados para determinar a exibição 
    padrão do objeto. Os dados nos arquivos de formatação determinam 
    se o objeto é renderizado em uma tabela ou em uma lista. 
    Determinam também quais propriedades são exibidas por padrão. 


    A formatação afeta somente a exibição. Não afeta quais 
    propriedades do objeto são passadas pelo pipeline ou como são 
    passadas.


    O Windows PowerShell inclui sete arquivos de formatação. Esses 
    arquivos estão localizados no diretório de instalação ($pshome). 
    Cada arquivo define a exibição de um grupo de objetos do 
    Microsoft .NET Framework:


	Certificate.Format.ps1xml
            Objetos no repositório de Certificados, como certificados 
            X.509 e repositórios de certificados.

	DotNetTypes.Format.ps1xml
            Outros tipos do .NET Framework, como objetos CultureInfo, 
            FileVersionInfo e EventLogEntry.

	FileSystem.Format.ps1xml
            Objetos do sistema de arquivos, como arquivos e diretórios.

	Help.Format.ps1xml
            Exibições de ajuda, como exibições detalhadas e 
            completas, parâmetros e exemplos.

	PowerShellCore.format.ps1xml
            Objetos gerados pelos principais cmdlets do Windows 
            PowerShell, como Get-Member e Get-History.

	PowerShellTrace.format.ps1xml
            Objetos de rastreamento, como os gerados pelo cmdlet 
            Trace-Command.

	Registry.format.ps1xml 
            Objetos do Registro, como chaves e entradas.


    Um arquivo de formatação pode definir quatro exibições diferentes 
    de cada objeto: tabela, lista, largo e complexo. Por exemplo, 
    quando a saída de um comando Get-ChildItem é canalizada para um 
    comando Format-List, Format-List usa a exibição no arquivo 
    FileSystem.format.ps1xml para determinar como exibir os objetos 
    de arquivo e pasta como uma lista.


    Em um arquivo Format.ps1xml, uma exibição é definida por um 
    conjunto de marcas XML que descreve o nome da exibição, o tipo de 
    objeto ao qual ela pode ser aplicada, os cabeçalhos de coluna e 
    as propriedades exibidas no corpo da exibição. O formato em 
    arquivos Format.ps1xml é aplicado pouco antes de os dados serem 
    apresentados ao usuário. 

  Criando novos arquivos Format.ps1xml

      Os arquivos .ps1xml instalados com o Windows PowerShell são 
      assinados digitalmente para impedir falsificação, pois a 
      formatação pode incluir blocos de script. Portanto, para 
      alterar o formato de exibição de uma exibição de objeto 
      existente ou adicionar exibições para novos objetos, crie seus 
      próprios arquivos Format.ps1xml e adicione-os à sua sessão do 
      Windows PowerShell.


      Para criar um novo arquivo, copie um arquivo Format.ps1xml 
      existente. O novo arquivo pode ter qualquer nome, mas deve ter 
      a extensão de nome de arquivo .ps1xml. Você pode colocar o novo 
      arquivo em qualquer diretório acessível ao Windows PowerShell, 
      mas é útil colocar os arquivos no diretório de instalação do 
      Windows PowerShell ($pshome) ou em um subdiretório do diretório 
      de instalação.

      Para alterar a formatação de uma exibição atual, localize a 
      exibição no arquivo de formatação e use as marcas para alterar 
      a exibição. Para criar uma exibição para um novo tipo de 
      objeto, crie uma nova exibição ou use uma exibição existente 
      como um modelo. (As marcas são descritas na próxima seção deste 
      tópico.) Você pode excluir todas as outras exibições no arquivo 
      de modo que as alterações sejam óbvias para qualquer pessoa que 
      examine o arquivo.


      Depois de salvar as alterações, use o cmdlet Update-FormatData 
      para adicionar o novo arquivo à sua sessão do Windows 
      PowerShell. Se desejar que sua exibição tenha precedência sobre 
      outra definida nos arquivos internos, use o parâmetro 
      PrependData do cmdlet Update-FormatData. Update-FormatData 
      afeta somente a sessão atual. Para fazer a alteração para todas 
      as sessões futuras, adicione o comando Update-FormatData a seu 
      perfil do Windows PowerShell.


  Exemplo: adicionar dados do calendário a objetos de cultura

      Esse exemplo mostra como alterar a formatação dos objetos de cultura 
      (System.Globalization.CultureInfo) gerados pelo cmdlet Get-Culture.
      Os comandos no exemplo adicionam a propriedade calendar à 
      exibição da tabela padrão de objetos de cultura.


      A primeira etapa é localizar o arquivo Format.ps1xml que contém 
      a exibição atual dos objetos de cultura. O comando 
      Select-String a seguir localiza o arquivo:


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


      Esse comando revela que a definição está no arquivo 
      DotNetTypes.Format.ps1xml.


      O próximo comando copia o conteúdo do arquivo para um novo arquivo, 
      MyDotNetTypes.Format.ps1xml.


	  copy-item DotNetTypes.Format.ps1xml MyDotNetTypes.Format.ps1xml


      Em seguida, abra o arquivo MyDotNetTypes.Format.ps1xml em 
      qualquer editor de XML ou de texto, como o Bloco de Notas. 
      Localize a seção de objeto System.Globalization.CultureInfo. O 
      XML a seguir define as exibições do objeto CultureInfo.
      O objeto tem apenas uma exibição 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>


      Exclua o restante do arquivo, exceto as marcas <?XML>, 
      <Configuration> e <ViewDefinitions> de abertura e as marcas 
      <ViewDefintions> e <Configuration> de fechamento. Você também 
      precisa excluir a 
      assinatura digital sempre que alterar o arquivo.


      <?xml version="1.0" encoding="utf-8" ?>
      <Configuration>
          <ViewDefinitions>
              <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>
          </ViewDefinitions>
      </Configuration>


      Em seguida, crie uma nova coluna para a propriedade Calendar 
      adicionando um novo conjunto de marcas <TableColumnHeader>. O 
      valor da propriedade Calendar pode ser long, para que seja usado 
      um valor de 45 caracteres, da seguinte forma:


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

                        <TableColumnHeader/>
                    </TableHeaders>


      Agora, adicione um novo item de coluna nas linhas da tabela, da 
      seguinte forma:


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



      Depois de salvar o arquivo e fechá-lo, use um comando 
      Update-FormatData, como o mostrado a seguir, para adicionar o 
      novo arquivo de formato à sessão atual. O comando usa o 
      parâmetro PrependData para colocar o novo arquivo em uma ordem 
      de precedência mais alta que a do arquivo original. (Para obter 
      mais informações sobre Update-FormatData, digite "get-help 
      update-formatdata".)


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


      Para testar a alteração, digite "get-culture" e examine a 
      saída, que inclui a propriedade Calendar.


      C:\PS> get-culture

      LCID Name  Calendar                               DisplayName
      ---- ----  --------                               -----------
      1033 en-US System.Globalization.GregorianCalendar English (United States)


  O XML nos arquivos Format.ps1xml

      A seção ViewDefinitions de cada arquivo Format.ps1xml contém as 
      marcas <View> que definem cada exibição. Uma marca <View> 
      típica inclui as seguintes marcas:

    
          <Name>
              Uma marca <Name> identifica o nome da exibição.


          <ViewSelectedBy>
              A marca <ViewSelectedBy> especifica o(s) tipo(s) de 
              objeto ao(s)qual(ais) a exibição se aplica.

    
          <GroupBy>
              Uma marca <GroupBy> especifica como os itens na 
              exibição serão combinados em grupos.


          <TableControl>
          <ListControl>
          <WideControl>
          <ComplexControl>
              Essas marcas contêm as marcas que especificam como cada 
              item será exibido.

    
      A marca <ViewSelectedBy> pode conter uma marca <TypeName> para 
      cada tipo de objeto ao qual a exibição se aplica. Ou contém uma 
      marca <SelectionSetName> que faz referência a um conjunto de 
      seleção definido em outro lugar com o uso de uma marca 
      <SelectionSet>.


      A marca <GroupBy> contém uma marca <PropertyName> que 
      especifica a propriedade do objeto pela qual os itens serão 
      agrupados. Também contém uma marca <Label> que especifica uma 
      cadeia de caracteres a ser usada como um rótulo para cada grupo 
      ou uma marca <ComplexControlName> que faz referência a um 
      controle complexo definido em outro lugar com o uso de uma 
      marca <Control>. A marca <Control> contém uma marca <Name> e 
      uma marca <ComplexControl>. 

    
      A marca <TableControl> normalmente contém marcas <TableHeaders> e 
      <TableRowEntries> que definem a formatação para os títulos e as 
      linhas da tabela. A marca <TableHeaders> normalmente contém marcas 
      <TableColumnHeader> que contêm marcas <Label>, <Width> e <Alignment>. 
      A marca <TableRowEntries> contém marcas <TableRowEntry> para cada 
      linha na tabela. A marca <TableRowEntry> contém uma marca 
      <TableColumnItems> que contém uma marca <TableColumnItem> para cada 
      coluna da linha. Normalmente, a marca <TableColumnItem> contém uma 
      marca <PropertyName> que identifica a propriedade do objeto a ser 
      exibida no local definido ou uma marca <ScriptBlock> que contém 
      o código de script que calcula um resultado a ser exibido no local. 


      Observação: blocos de script também podem ser usados em outros 
      		  locais onde resultados calculados podem ser úteis. 

    
      A marca <TableColumnItem> também pode conter uma marca 
      <FormatString> que especifica como a propriedade ou os 
      resultados calculados serão exibidos.

    
      A marca <ListControl> normalmente contém uma marca 
      <ListEntries>. A marca <ListEntries> contém uma marca 
      <ListItems>. A marca <ListItems> contém marcas <ListItem>, que 
      contêm marcas <PropertyName>. As marcas <PropertyName> 
      especificam a propriedade do objeto a ser exibida no local 
      especificado na lista. Se a seleção de exibição for definida 
      com o uso de um conjunto de seleção, a marca <ListControl> 
      também poderá conter uma marca <EntrySelectedBy>, que, por sua 
      vez, contém uma ou mais marcas <TypeName>. Essas marcas 
      <TypeName> especificam o tipo de objeto que a marca 
      <ListControl> deve exibir.

    
      A marca <WideControl> normalmente contém uma marca 
      <WideEntries>. A marca <WideEntries> contém uma ou mais marcas 
      <WideEntry>. Uma marca <WideEntry> normalmente contém uma marca 
      <PropertyName> que especifica a propriedade a ser exibida no 
      local especificado na exibição. A marca <PropertyName> pode 
      conter uma marca <FormatString> que especifica como a 
      propriedade deve ser exibida. 

    
      A marca <ComplexControl> contém combinações mais complexas de 
      marcas que outros tipos de exibição. Uma marca <ComplexControl> 
      normalmente contém uma marca <ComplexEntries>. Uma marca 
      <ComplexEntries> contém várias marcas <ComplexEntry>. Uma marca 
      <ComplexEntry> normalmente contém uma marca <ComplexItem>. Essa 
      marca, por sua vez, pode conter várias marcas que especificam o 
      conteúdo e a formatação para o local especificado na exibição, 
      incluindo marcas <Text>, <Indentation>, <ExpressionBinding> e 
      <NewLine>.


  Update-FormatData

      Para carregar seus arquivos Format.ps1xml em uma sessão do 
      Windows PowerShell, use o cmdlet Update-FormatData. Se quiser 
      que as exibições no seu arquivo tenham precedência sobre as do 
      arquivo Format.ps1xml interno, use o parâmetro PrependData de 
      Update-FormatData. Update-FormatData afeta somente a sessão 
      atual. Para fazer a alteração para todas as sessões futuras, 
      adicione o comando Update-FormatData a seu perfil do Windows 
      PowerShell.


  Exibições padrão em Types.ps1xml

      As exibições padrão de alguns tipos de objeto básicos são 
      definidas no arquivo Types.ps1xml no diretório $pshome. Os nós são 
      PsStandardMembers nomeados, e o subnós usam uma das seguintes marcas:


          <DefaultDisplayProperty>
          <DefaultDisplayPropertySet>
          <DefaultKeyPropertySet>


      Para obter mais informações, digite o seguinte comando:

	  get-help about_types.ps1xml
 

  Rastreando o uso do arquivo Format.ps1xml

      Para detectar erros no carregamento ou na aplicação de arquivos 
      Format.ps1xml, use o cmdlet Trace-Command com qualquer um dos 
      seguintes componentes de formato como valor do parâmetro Name:


	  FormatFileLoading
          UpdateFormatData
          FormatViewBinding


      Para obter mais informações, digite os seguintes comandos:


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


  Assinando um arquivo Format.ps1xml

      Para proteger os usuários do seu arquivo Format.ps1xml, assine 
      o arquivo usando uma assinatura digital. Para obter 
      informações, digite:

          get-help about_signing


CONSULTE TAMBÉM
    Update-FormatData
    Trace-Command
    Get-TraceSource




Sumário