ARGOMENTO about_Format.ps1xml DESCRIZIONE BREVE I file Format.ps1xml in Windows PowerShell definiscono la visualizzazione predefinita degli oggetti nella console Windows PowerShell. È possibile creare file Format.ps1xml per modificare la visualizzazione di oggetti o definire visualizzazioni predefinite per i nuovi tipi di oggetti che si creano in Windows PowerShell. DESCRIZIONE DETTAGLIATA I file Format.ps1xml in Windows PowerShell definiscono la visualizzazione predefinita degli oggetti in Windows PowerShell. È possibile creare file Format.ps1xml per modificare la visualizzazione di oggetti o definire visualizzazioni predefinite per i nuovi tipi di oggetti che si creano in Windows PowerShell. Quando Windows PowerShell visualizza un oggetto, utilizza i dati nei file di formattazione strutturati per determinare la visualizzazione predefinita dell'oggetto. I dati nei file di formattazione determinano se viene eseguito il rendering dell'oggetto in una tabella o in un elenco, e determina quali proprietà vengono visualizzate per impostazione predefinita. La formattazione influisce solo sulla visualizzazione. Non influisce su quali proprietà dell'oggetto vengono passate alla pipeline o su come vengono passate. Windows PowerShell include sette file di formattazione. Questi file si trovano nella directory di installazione ($pshome). Ogni file definisce la visualizzazione di un gruppo di oggetti Microsoft .NET Framework: Certificate.Format.ps1xml Oggetti nell'archivio certificati, ad esempio certificati X.509 e archivi certificati. DotNetTypes.Format.ps1xml Altri tipi .NET Framework, quali CultureInfo, FileVersionInfo e oggetti EventLogEntry. FileSystem.Format.ps1xml Oggetti del file system, ad esempio file e directory. Help.Format.ps1xml Visualizzazioni della guida, ad esempio visualizzazioni dettagliate e complete, parametri ed esempio. PowerShellCore.format.ps1xml Oggetti generati dai cmdlet principali di Windows PowerShell, quali Get-Member e Get-History. PowerShellTrace.format.ps1xml Oggetti di analisi, ad esempio quelli generati dal cmdlet Trace-Command. 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, estesa e complessa. Ad esempio, quando l'output di un comando Get-ChildItem viene indirizzato a un comando Format-List, Format-List utilizza la visualizzazione nel file FileSystem.format.ps1xml per determinare come visualizzare gli oggetti file e cartella come un elenco. Nel file Format.ps1xml, una visualizzazione viene definita da un set di tag XML che descrivono il nome della visualizzazione, il tipo di oggetto a cui può essere applicata, le intestazioni di colonna e le proprietà visualizzate nel corpo della visualizzazione. Il formato nei file Format.ps1xml è applicato immediatamente prima che i dati vengano presentati all'utente. Creazione di nuovi file Format.ps1xml I file .ps1xml installati con Windows PowerShell sono firmati digitalmente per impedirne l'alterazione poiché la formattazione può includere blocchi di script. Pertanto, per modificare il formato di visualizzazione di una visualizzazione dell'oggetto esistente o aggiungere visualizzazioni per i nuovi oggetti, creare file Format.ps1xml, quindi aggiungerli alla sessione di Windows PowerShell. Per creare un nuovo file, copiare un file Format.ps1xml esistente. Il nuovo file può avere qualsiasi nome ma deve avere estensione .ps1xml. È possibile inserire il nuovo file in qualsiasi directory accessibile a Windows PowerShell, ma è consigliabile inserirlo nella directory di installazione ($pshome) di Windows PowerShell o in una sottodirectory della directory di installazione. Per modificare la formattazione di una visualizzazione corrente, individuare la visualizzazione nel file di formattazione, quindi utilizzare i tag per modificare la visualizzazione. Per creare una visualizzazione per un nuovo tipo di oggetto, creare una nuova visualizzazione o utilizzare una visualizzazione esistente come modello. I tag vengono descritti nella sezione successiva di questo argomento. È quindi possibile eliminare tutte le altre visualizzazioni nel file in modo che le modifiche risultino ovvie a chiunque esamini il file. Dopo aver salvato le modifiche, utilizzare il cmdlet Update-FormatData per aggiungere il nuovo file alla sessione di Windows PowerShell. Se si desidera che la visualizzazione abbi la precedenza su una visualizzazione definita nei file predefiniti, utilizzare il parametro PrependData del cmdlet Update-FormatData. Update-FormatData ha effetto solo sulla sessione corrente. Per apportare la modifica a tutte le sessioni future di Windows PowerShell, aggiungere il comando Update-FormatData al profilo di Windows PowerShell. Esempio: aggiunta di dati di calendario agli oggetti cultura In questo esempio viene mostrato come modificare la formattazione degli oggetti cultura (System.Globalization.Cultur eInfo) generati dal cmdlet Get-Culture. I comandi nell'esempio aggiungono la proprietà Calendar alla visualizzazione della vista tabella predefinita degli oggetti cultura. Il primo passaggio è trovare il file Format.ps1xml che contiene la visualizzazione corrente degli oggetti cultura. Il comando Select-String seguente trova il file: select-string -path $pshome\*format.ps1xml ` pattern System.Globalization.CultureInfo Questo comando rivela che la definizione si trova nel file DotNetTypes.Format.ps1xml. Il comando successiva copia il contenuto del file in un nuovo file, MyDotNetTypes.Format.ps1xml. copy-item DotNetTypes.Format.ps1xml MyDotNetTypes.Format.ps1xml Quindi, apre il file MyDotNetTypes.Format.ps1xml in un editor XML o di testo, quale Blocco note. Trovare la sezione dell'oggetto System.Globalization.CultureInfo. Il codice XML seguente definisce le visualizzazioni dell'oggetto CultureInfo. L'oggetto dispone solo di una visualizzazione 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> Eliminare la parte restante del file, tranne i tag di apertura <?XML>, <Configuration> e <ViewDefinitions> e i tag di chiusura <ViewDefintions> e <Configuration>. È anche necessario eliminare la firma digitale quando si modifica il file. <?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 tag <TableColumnHeader>. Il valore della proprietà Calendar può essere long, in questo caso viene utilizzato un valore di 45 caratteri, come illustrato di seguito: <TableControl> <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, come segue: <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 e chiuso il file, utilizzare un comando Update-FormatData, come il seguente, per aggiungere il nuovo file di formato alla sessione corrente. Il comando utilizza il parametro PrependData per inserire il nuovo file in un ordine di precedenza maggiore al file precedente. Per ulteriori informazioni su Update-FormatData, digitare: "get-help update-formatdata". update-formatdata -prependpath $pshome\MyDotNetTypes.format.ps1xml Per verificare la modifica, digitare "get-culture", quindi rivedere l'output che include la proprietà Calendar. C:\PS> get-culture LCID Name Calendar DisplayName ---- ---- -------- ----------- 1033 en-US System.Globalization.GregorianCalendar English (United States) Codice XML nei file Format.ps1xml La sezione ViewDefinitions di ogni file Format.ps1xml contiene i tag <View> che definiscono ogni visualizzazione. In genere, un tag <View> contiene i tag seguenti: <Name> Il tag <Name> identifica il nome della visualizzazione. <ViewSelectedBy> Il tag <ViewSelectedBy> specifica il tipo o i tipi di oggetto a cui si applica la visualizzazione. <GroupBy> Il tag <GroupBy> specifica come gli elementi della visualizzazione vengono combinati in gruppi. <TableControl> <ListControl> <WideControl> <ComplexControl> Questi tag contengono i tag che specificano come ogni elemento sarà visualizzato. Il tag <ViewSelectedBy> può contenere un tag <TypeName> per ogni tipo di oggetto a cui la visualizzazione si applica. In alternativa, può contenere un tag <SelectionSetName> che fa riferimento a un set di selezioni definito in un'altra posizione utilizzando un tag <SelectionSet>. Il tag <GroupBy> contiene un tag <PropertyName> che specifica la proprietà dell'oggetto in base a cui devono essere raggruppati gli elementi. Questo tag include inoltre un tag <Label> che specifica una stringa da utilizzare come etichetta per ogni gruppo oppure un tag <ComplexControlName> che fa riferimento a un controllo complesso definito in un'altra posizione utilizzando un tag <Control>. Il tag <Control> contiene un tag <Name> e un tag <ComplexControl>. Il tag <TableControl> contiene in genere i tag <TableHeaders> e <TableRowEntries> che definiscono la formattazione delle righe e delle intestazioni della tabella. Il tag <TableHeaders> contiene in genere il tag <TableColumnHeader> che contiene i tag <Label>, <Width> e <Alignment>. Il tag <TableRowEntries> contiene tag <TableRowEntry> per ogni riga della tabella. Il tag <TableRowEntry> contiene un tag <TableColumnItems> che contiene un tag <TableColumnItem> per ogni colonna della riga. In genere, il tag <TableColumnItem> contiene un tag <PropertyName> che identifica la proprietà dell'oggetto da visualizzare nella posizione definita oppure un tag <ScriptBlock> che contiene codice di script che consente di calcolare un risultato da visualizzare nella posizione. Nota: i blocchi di script possono essere utilizzati anche in altre posizioni in cui i risultati calcolati possono essere utili. Il tag <TableColumnItem> può contenere anche un tag <FormatString> che specifica come verranno visualizzati i risultati calcolati o la proprietà. Il tag <ListControl> in genere contiene un tag <ListEntries>. Il tag <ListEntries> contiene un tag <ListItems>. Il tag <ListItems> contiene tag <ListItem> che contengono tag <PropertyName>. I tag <PropertyName> specificano la proprietà dell'oggetto da visualizzare nella posizione specificata nell'elenco. Se la visualizzazione è definita mediante un set di selezioni, il tag <ListControl> può anche contenere un tag <EntrySelectedBy> che contiene uno o più tag <TypeName>. Questi tag <TypeName> specificano il tipo di oggetto che il tag <ListControl> deve visualizzare. Il tag <WideControl> in genere contiene un tag <WideEntries>. Il tag <WideEntries> contiene uno o più tag <WideEntry>. Un tag <WideEntry> contiene in genere un tag <PropertyName> che specifica la proprietà da visualizzare nella posizione della visualizzazione specificata. Il tag <PropertyName> può contenere anche un tag <FormatString> che specifica come devono essere visualizzati i risultati calcolati o la proprietà. Il tag <ComplexControl> contiene combinazioni più complesse di tag rispetto ad altri tipi di visualizzazioni. Un tag <ComplexControl> contiene in genere un tag <ComplexEntries>. Un tag <ComplexEntries> contiene più tag <ComplexEntry>. Un tag <ComplexEntry> contiene in genere un tag <ComplexItem>. Questo tag, a sua volta, può contenere vari tag che specificano il contenuto e la formattazione per la posizione della visualizzazione specificata, inclusi i tag <Text>, <Indentation>, <ExpressionBinding> e <NewLine>. Update-FormatData Per caricare i file Format.ps1xml in una sessione di Windows PowerShell, utilizzare il cmdlet Update-FormatData. Se si desidera che le visualizzazioni nel file abbiano la precedenza sulle visualizzazioni nel file Format.ps1xml predefinito, utilizzare il parametro PrependData di Update-FormatData. Update-FormatData ha effetto solo sulla sessione corrente. Per apportare la modifica a tutte le sessioni future di Windows PowerShell, aggiungere il comando Update-FormatData al profilo di Windows PowerShell. Visualizzazioni predefinite in Types.ps1xml Le visualizzazioni predefinite dei tipi di oggetti di base sono definite nel file Types.ps1xml nella directory $pshome. I nodi sono denominati PsStandardMembers e i nodi secondari utilizzano uno dei tag seguenti: <DefaultDisplayProperty> <DefaultDisplayPropertySet> <DefaultKeyPropertySet> Per ulteriori informazioni, digitare il comando seguente: get-help about_types.ps1xml Analisi dell'utilizzo del file Format.ps1xml Per rilevare errori nel caricamento o nell'applicazione dei file Format.ps1xml, utilizzare il cmdlet Trace-Command con qualsiasi dei componenti di formato seguenti come valore del parametro Name: FormatFileLoading UpdateFormatData FormatViewBinding Per ulteriori informazioni, digitare i comandi seguenti: get-help trace-command get-help get-tracesource Firma di un file Format.ps1xml Per proteggere gli utenti del file Format.ps1xml, è possibile firmare il file utilizzando una firma digitale. Per ulteriori informazioni, digitare: get-help about_signing VEDERE ANCHE Update-FormatData Trace-Command Get-TraceSource