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