Condividi tramite


Informazioni su Format.ps1XML

Descrizione breve

I Format.ps1xml file in PowerShell definiscono la visualizzazione predefinita degli oggetti nella console di PowerShell. È possibile creare file personalizzati Format.ps1xml per modificare la visualizzazione degli oggetti o per definire le visualizzazioni predefinite per i nuovi tipi di oggetto creati in PowerShell.

Descrizione lunga

I Format.ps1xml file in PowerShell definiscono la visualizzazione predefinita degli oggetti in PowerShell. È possibile creare file personalizzati Format.ps1xml per modificare la visualizzazione degli oggetti o per definire le visualizzazioni predefinite per i nuovi tipi di oggetto creati in PowerShell.

Quando in PowerShell viene visualizzato un oggetto, vengono utilizzati i dati nei file di formattazione strutturata per determinare la visualizzazione predefinita dell'oggetto. I dati nei file di formattazione determinano se l'oggetto viene sottoposto a rendering in una tabella o in un elenco e determina quali proprietà vengono visualizzate per impostazione predefinita.

La formattazione influisca solo sulla visualizzazione. Non influisce sulle proprietà dell'oggetto che vengono passate alla pipeline o sul modo in cui vengono passate. Format.ps1xmlnon è possibile utilizzare i file per personalizzare il formato di output per Hashtable.

PowerShell include sette file di formattazione. Questi file si trovano nella directory di installazione ( $PSHOME ). Ogni file definisce la visualizzazione di un gruppo di Microsoft .NET oggetti Framework:

  1. Certificate.Format.ps1xml

    Oggetti nell'archivio certificati, ad esempio certificati X. 509 e archivi certificati.

  2. DotNetTypes.Format.ps1xml

    Altri tipi di .NET Framework, ad esempio gli oggetti CultureInfo, FileVersionInfo e EventLogEntry.

  3. FileSystem.Format.ps1xml

    Oggetti del file System, ad esempio file e directory.

  4. Help.Format.ps1xml

    Viste della guida, ad esempio viste dettagliate e complete, parametri ed esempi.

  5. PowerShellCore.format.ps1xml

    Oggetti generati dai cmdlet di PowerShell core, ad esempio Get-Member e Get-History .

  6. PowerShellTrace.format.ps1xml

    Oggetti Trace, ad esempio quelli generati dal Trace-Command cmdlet.

  7. Registry.format.ps1xml

    Oggetti del registro di sistema, ad esempio chiavi e voci.

Un file di formattazione può definire quattro visualizzazioni diverse di ogni oggetto:

  • Tabella
  • Elenco
  • Largo
  • Personalizzato.

Ad esempio, quando l'output di un Get-ChildItem comando viene reindirizzato a un Format-List comando, Format-List Usa la visualizzazione nel file "FileSystem.format.ps1XML" per determinare come visualizzare gli oggetti file e cartella come elenco.

Quando un file di formattazione include più di una visualizzazione di un oggetto, PowerShell applica la prima vista individuata.

In un Format.ps1xml file, una vista è definita da un set di tag XML che descrivono il nome della vista, il tipo di oggetto a cui è possibile applicare, le intestazioni di colonna e le proprietà visualizzate nel corpo della visualizzazione. Il formato nei Format.ps1xml file viene applicato immediatamente prima che i dati vengano presentati all'utente.

Creazione di nuovi file di Format.ps1XML

I .ps1xml file installati con PowerShell sono firmati digitalmente per evitare manomissioni perché la formattazione può includere blocchi di script. Pertanto, per modificare il formato di visualizzazione di una visualizzazione di oggetti esistente o per aggiungere visualizzazioni per nuovi oggetti, creare Format.ps1xml file personalizzati e quindi aggiungerli alla sessione di PowerShell.

Per creare un nuovo file, copiare un Format.ps1xml file esistente. Il nuovo file può avere un nome qualsiasi, ma deve avere un' .ps1xml estensione del nome file. È possibile inserire il nuovo file in qualsiasi directory accessibile a PowerShell, ma è utile inserire i file nella directory di installazione di PowerShell ( $PSHOME ) o in una sottodirectory della directory di installazione.

Per modificare la formattazione di una visualizzazione corrente, individuare la visualizzazione nel file di formattazione e quindi usare i tag per modificare la visualizzazione. Per creare una vista per un nuovo tipo di oggetto, creare una nuova vista oppure utilizzare una vista esistente come modello. I tag sono descritti nella sezione successiva di questo argomento. È quindi possibile eliminare tutte le altre viste del file in modo che le modifiche siano evidenti per chiunque esamini il file.

Dopo aver salvato le modifiche, usare il Update-FormatData cmdlet per aggiungere il nuovo file alla sessione di PowerShell. Se si vuole che la vista abbia la precedenza su una vista definita nei file predefiniti, usare il parametro prependpath . Update-FormatDatainteressa solo la sessione corrente. Per apportare la modifica a tutte le sessioni future, aggiungere il Update-FormatData comando al profilo di PowerShell.

Esempio: aggiunta di dati del calendario agli oggetti culture

Questo esempio Mostra come modificare la formattazione degli oggetti impostazioni cultura System. Globalization. CultureInfo generati dal Get-Culture cmdlet. I comandi nell'esempio aggiungono la proprietà Calendar alla visualizzazione tabella predefinita degli oggetti impostazioni cultura.

Il primo passaggio consiste nel trovare il Format.ps1xml file che contiene la visualizzazione corrente degli oggetti impostazioni cultura. Il comando seguente consente Select-String di trovare il file:

Select-String -Path $PSHOME\*format.ps1xml `
  -Pattern System.Globalization.CultureInfo

Questo comando rivela che la definizione si trova nel DotNetTypes.Format.ps1xml file.

Il comando successivo copia il contenuto del file in un nuovo file MyDotNetTypes.Format.ps1xml .

Copy-Item $PSHome\DotNetTypes.Format.ps1xml MyDotNetTypes.Format.ps1xml

Successivamente, aprire il MyDotNetTypes.Format.ps1xml file in qualsiasi editor XML o di testo, ad esempio Notepad.exe. Trovare la sezione oggetto System. Globalization. CultureInfo . Il codice XML seguente definisce le visualizzazioni dell'oggetto CultureInfo . L'oggetto dispone solo di una visualizzazione Table ( .

<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>
    </TableHeaders>
    <TableRowEntries>
      <TableRowEntry>
        <TableColumnItems>
          <TableColumnItem>
            <PropertyName>LCID</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>Name</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>DisplayName</PropertyName>
          </TableColumnItem>
        </TableColumnItems>
      </TableRowEntry>
    </TableRowEntries>
  </TableControl>
</View>

Eliminare il resto del file, eccetto i tag di apertura <?xml> , <Configuration> , e <ViewDefinitions> i tag di chiusura <ViewDefinitions> e <Configuration> . Ogni volta che si modifica il file, è necessario eliminare anche la firma digitale.

Il MyDotNetTypes.Format.ps1xml file dovrebbe essere simile a quello riportato di seguito.

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

Successivamente, creare una nuova colonna per la proprietà Calendar aggiungendo un nuovo set di <TableColumnHeader> tag. Il valore della proprietà Calendar può essere Long, quindi specificare un valore di 45 caratteri come <Width> .

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

A questo punto, aggiungere un nuovo elemento colonna nelle righe della tabella, come indicato di seguito:

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

Dopo aver salvato il file e averlo chiuso, utilizzare il Update-FormatData cmdlet per aggiungere il nuovo file di formato alla sessione corrente.

Questo esempio usa il parametro prependpath per inserire il nuovo file con un ordine di precedenza superiore rispetto al file originale. Per ulteriori informazioni, vedere Update-FormatData.

Update-FormatData -PrependPath $PSHOME\MyDotNetTypes.format.ps1xml

Per verificare la modifica, digitare Get-Culture , quindi esaminare l'output, che include la proprietà Calendar.

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

XML in Format.ps1file XML

La sezione ViewDefinitions di ogni Format.ps1xml file contiene i <View> tag che definiscono ogni visualizzazione. Un <View> tag tipico include i tag seguenti:

  • <Name>identifica il nome della vista.
  • <ViewSelectedBy>Specifica il tipo di oggetto o i tipi a cui si applica la visualizzazione.
  • <GroupBy>Specifica il modo in cui gli elementi nella visualizzazione verranno combinati nei gruppi
  • <TableControl>, <ListControl> , <WideControl> e <CustomControl> contengono i tag che specificano come verrà visualizzato ogni elemento

Tag ViewSelectedBy

Il <ViewSelectedBy> tag può contenere un <TypeName> tag per ogni tipo di oggetto a cui viene applicata la visualizzazione. In alternativa, può contenere un <SelectionSetName> tag che fa riferimento a un set di selezione definito altrove usando un <SelectionSet> tag.

GroupBy (tag)

Il <GroupBy> tag contiene un <PropertyName> tag che specifica la proprietà dell'oggetto in base alla quale devono essere raggruppati gli elementi. Contiene anche un <Label> tag che specifica una stringa da usare come etichetta per ogni gruppo o un <CustomControlName> tag che fa riferimento a un controllo personalizzato definito altrove usando un <Control> tag. Il <Control> tag contiene un tag <Name> e un tag <CustomControl> .

TableControlTag

Il <TableControl> tag contiene in genere i <TableHeaders> <TableRowEntries> tag e che definiscono la formattazione per le intestazioni e le righe della tabella. Il <TableHeaders> tag contiene in genere <TableColumnHeader> tag che <Label> contengono <Width> tag, e <Alignment> . Il <TableRowEntries> tag contiene <TableRowEntry> tag per ogni riga della tabella. Il <TableRowEntry> tag contiene un tag <TableColumnItems> che contiene un <TableColumnItem> tag per ogni colonna della riga. In genere, il <TableColumnItem> tag contiene un <PropertyName> tag che identifica la proprietà dell'oggetto da visualizzare nella posizione definita o un <ScriptBlock> tag che contiene codice script che calcola un risultato da visualizzare nella posizione.

Nota

I blocchi di script possono essere usati anche altrove in posizioni in cui i risultati calcolati possono essere utili.

Il <TableColumnItem> tag può inoltre contenere un <FormatString> tag che specifica la modalità di visualizzazione della proprietà o dei risultati calcolati.

Tag ListControl

Il <ListControl> tag contiene in genere un <ListEntries> tag. Il <ListEntries> tag contiene un <ListEntry> tag. Il <ListEntry> tag contiene un <ListItems> tag. Il <ListItems> tag contiene <ListItem> tag che contengono <PropertyName> tag. I <PropertyName> tag specificano la proprietà dell'oggetto da visualizzare nella posizione specificata nell'elenco. Se la selezione della vista viene definita utilizzando un set di selezione, i <ListControl> <ListEntry> tag e possono contenere anche un <EntrySelectedBy> tag che contiene uno o più <TypeName> tag. Questi <TypeName> tag specificano il tipo di oggetto che deve essere <ListControl> visualizzato dal tag.

Tag WideControl

Il <WideControl> tag contiene in genere un <WideEntries> tag. Il <WideEntries> tag contiene uno o più <WideEntry> tag. Un <WideEntry> tag contiene in genere un <PropertyName> tag che specifica la proprietà da visualizzare nella posizione specificata nella visualizzazione. Il <PropertyName> tag può contenere un <FormatString> tag che specifica come deve essere visualizzata la proprietà.

Tag CustomControl

Il <CustomControl> tag consente di usare un blocco di script per definire un formato. Un <CustomControl> tag contiene in genere un <CustomEntries> tag che contiene più <CustomEntry> tag. Ogni <CustomEntry> tag contiene <CustomItem> tag che possono contenere diversi tag che specificano il contenuto e la formattazione della posizione specificata nella visualizzazione, inclusi i <Text> tag, <Indentation> , <ExpressionBinding> e <NewLine> .

Il valore predefinito viene visualizzato in Types.ps1XML

Le visualizzazioni predefinite di alcuni tipi di oggetto di base sono definite nel Types.ps1xml file nella $PSHOME Directory. I nodi sono denominati PSStandardMemberse i sottonodi usano uno dei tag seguenti:

  • <DefaultDisplayProperty>
  • <DefaultDisplayPropertySet>
  • <DefaultKeyPropertySet>

Per ulteriori informazioni, vedere about_Types.ps1XML.

Traccia Format.ps1uso di file XML

Per rilevare errori durante il caricamento o l'applicazione di Format.ps1xml file, utilizzare il Trace-Command cmdlet con uno dei componenti di formato seguenti come valore del parametro Name :

  • FormatFileLoading
  • FormatViewBinding
  • UpdateFormatData

Per altre informazioni, vedere Trace-Command e Get-TraceSource.

Firma di un file di Format.ps1XML

Per proteggere gli utenti del file Format.ps1XML, firmare il file utilizzando una firma digitale. Per ulteriori informazioni, vedere about_Signing.

Vedere anche

Update-FormatData

Trace-Command

Get-TraceSource

Guida di riferimento XML dello schema di formattazione