Format-Table

Formatta l'output come tabella.

Sintassi

Format-Table
      [[-Property] <Object[]>]
      [-AutoSize]
      [-RepeatHeader]
      [-HideTableHeaders]
      [-Wrap]
      [-GroupBy <Object>]
      [-View <string>]
      [-ShowError]
      [-DisplayError]
      [-Force]
      [-Expand <string>]
      [-InputObject <psobject>]
      [<CommonParameters>]

Descrizione

Il Format-Table cmdlet formatta l'output di un comando come tabella con le proprietà selezionate dell'oggetto in ogni colonna. Il tipo di oggetto determina il layout e le proprietà predefiniti visualizzati in ogni colonna. È possibile utilizzare il parametro Property per selezionare le proprietà da visualizzare.

PowerShell usa formattatori predefiniti per definire la modalità di visualizzazione dei tipi di oggetto. È possibile usare .ps1xml i file per creare visualizzazioni personalizzate che visualizzano una tabella di output con le proprietà specificate. Dopo aver creato una vista personalizzata, usare il parametro View per visualizzare la tabella con la visualizzazione personalizzata. Per altre informazioni sulle visualizzazioni, vedere about_Format.ps1xml.

È possibile utilizzare una tabella hash per aggiungere proprietà calcolate a un oggetto prima di visualizzarla e specificare le intestazioni di colonna nella tabella. Per aggiungere una proprietà calcolata, utilizzare il parametro Property o GroupBy . Per altre informazioni sulle tabelle hash, vedere about_Hash_Tables.

Esempio

Esempio 1: Formattare l'host di PowerShell

In questo esempio vengono visualizzate informazioni sul programma host per PowerShell in una tabella.

Get-Host | Format-Table -AutoSize

Il Get-Host cmdlet ottiene gli oggetti System.Management.Automation.Internal.Host.InternalHost che rappresentano l'host. Gli oggetti vengono inviati nella pipeline a Format-Table e visualizzati in una tabella. Il parametro AutoSize regola la larghezza della colonna per ridurre al minimo il troncamento.

Esempio 2: Formattare i processi per BasePriority

In questo esempio i processi vengono visualizzati in gruppi con la stessa proprietà BasePriority .

Get-Process | Sort-Object -Property BasePriority | Format-Table -GroupBy BasePriority -Wrap

Il Get-Process cmdlet ottiene oggetti che rappresentano ogni processo nel computer e li invia alla pipeline a Sort-Object. Gli oggetti vengono ordinati nell'ordine della proprietà BasePriority .

Gli oggetti ordinati vengono inviati nella pipeline a Format-Table. Il parametro GroupBy dispone i dati del processo in gruppi in base al valore della proprietà BasePriority . Il parametro Wrap garantisce che i dati non siano troncati.

Esempio 3: Formattare i processi in base alla data di inizio

In questo esempio vengono visualizzate informazioni sui processi in esecuzione nel computer. Gli oggetti vengono ordinati e Format-Table usano una visualizzazione per raggruppare gli oggetti in base alla data di inizio.

Get-Process | Sort-Object StartTime | Format-Table -View StartTime

Get-Process ottiene gli oggetti System.Diagnostics.Process che rappresentano i processi in esecuzione nel computer. Gli oggetti vengono inviati alla pipeline a Sort-Objecte vengono ordinati in base alla proprietà StartTime .

Gli oggetti ordinati vengono inviati nella pipeline a Format-Table. Il parametro View specifica la visualizzazione StartTime definita nel file di PowerShell DotNetTypes.format.ps1xml per gli oggetti System.Diagnostics.Process . La visualizzazione StartTime converte ogni ora di inizio dei processi in una data breve e quindi raggruppa i processi in base alla data di inizio.

Il DotNetTypes.format.ps1xml file contiene una visualizzazione Priorità per i processi. È possibile creare file personalizzati format.ps1xml con visualizzazioni personalizzate.

Esempio 4: Usare una vista personalizzata per l'output della tabella

In questo esempio, una visualizzazione personalizzata visualizza il contenuto di una directory. La vista personalizzata aggiunge la colonna CreationTime all'output della tabella per gli oggetti System.IO.DirectoryInfo e System.IO.FileInfo creati da Get-ChildItem.

La visualizzazione personalizzata in questo esempio è stata creata dalla vista definita nel codice sorgente di PowerShell. Per altre informazioni sulle visualizzazioni e sul codice usato per creare la visualizzazione di questo esempio, vedere about_Format.ps1xml.

Get-ChildItem  -Path C:\Test | Format-Table -View mygciview

Directory: C:\Test

Mode                LastWriteTime              CreationTime         Length Name
----                -------------              ------------         ------ ----
d-----        11/4/2019     15:54       9/24/2019     15:54                Archives
d-----        8/27/2019     14:22       8/27/2019     14:22                Drawings
d-----       10/23/2019     09:38       2/25/2019     09:38                Files
-a----        11/7/2019     11:07       11/7/2019     11:07          11345 Alias.txt
-a----        2/27/2019     15:15       2/27/2019     15:15            258 alias_out.txt
-a----        2/27/2019     15:16       2/27/2019     15:16            258 alias_out2.txt

Get-ChildItem ottiene il contenuto della directory corrente, C:\Test. Gli oggetti System.IO.DirectoryInfo e System.IO.FileInfo vengono inviati nella pipeline. Format-Table usa il parametro View per specificare la visualizzazione personalizzata mygciview che include la colonna CreationTime .

L'output predefinito Format-Table per non include la colonna CreationTimeGet-ChildItem.

Esempio 5: Usare le proprietà per l'output della tabella

In questo esempio viene utilizzato il parametro Property per visualizzare tutti i servizi del computer in una tabella a due colonne che mostra le proprietà Name e DependentServices.

Get-Service | Format-Table -Property Name, DependentServices

Get-Service ottiene tutti i servizi nel computer e invia gli oggetti System.ServiceProcess.ServiceController nella pipeline. Format-Table utilizza il parametro Property per specificare che le proprietà Name e DependentServices vengono visualizzate nella tabella.

Name e DependentServices sono due delle proprietà del tipo di oggetto. Per visualizzare tutte le proprietà: Get-Service | Get-Member -MemberType Properties.

Esempio 6: Formattare un processo e calcolarne il tempo di esecuzione

In questo esempio viene visualizzata una tabella con il nome del processo e il tempo totale di esecuzione per i processi del Blocco note del computer locale. Il tempo di esecuzione totale viene calcolato sottraendo l'ora di inizio di ogni processo dall'ora corrente.

Get-Process notepad |
  Format-Table ProcessName, @{Label="TotalRunningTime"; Expression={(Get-Date) - $_.StartTime}}

ProcessName TotalRunningTime
----------- ----------------
notepad     03:20:00.2751767
notepad     00:00:16.7710520

Get-Processottiene tutti i processi del Blocco note del computer locale e invia gli oggetti nella pipeline. Format-Table visualizza una tabella con due colonne: ProcessName, una Get-Process proprietà e TotalRunningTime, una proprietà calcolata.

La proprietà TotalRunningTime viene specificata da una tabella hash con due chiavi, Label ed Expression. La chiave Label specifica il nome della proprietà. La chiave espressione specifica il calcolo. L'espressione ottiene la proprietà StartTime di ogni oggetto processo e la sottrae dal risultato di un Get-Date comando, che ottiene la data e l'ora correnti.

Esempio 7: Formattare Blocco note processi

Questo esempio usa Get-CimInstance per ottenere il tempo di esecuzione per tutti i processi del Blocco note nel computer locale. È possibile usare Get-CimInstance con il parametro ComputerName per ottenere informazioni dai computer remoti.

$Processes = Get-CimInstance -Class win32_process -Filter "name='notepad.exe'"
$Processes | Format-Table ProcessName, @{
    Label = "Total Running Time"
    Expression={(Get-Date) - $_.CreationDate}
}

ProcessName Total Running Time
----------- ------------------
notepad.exe 03:39:39.6260693
notepad.exe 00:19:56.1376922

Get-CimInstanceottiene le istanze della classe Win32_Process WMI che descrive tutti i processi del computer locale denominati notepad.exe. Gli oggetti processo vengono archiviati nella $Processes variabile .

Gli oggetti processo nella $Processes variabile vengono inviati nella pipeline a Format-Table, che visualizza la proprietà ProcessName e una nuova proprietà calcolata Total Running Time.

Il comando assegna il nome della nuova proprietà calcolata Total Running Time alla chiave Label . Il blocco di script della chiave di espressione calcola per quanto tempo il processo è stato eseguito sottraendo la data di creazione dei processi dalla data corrente. Il Get-Date cmdlet ottiene la data corrente. La data di creazione viene sottratta dalla data corrente. Il risultato è il valore di Total Running Time.

Esempio 8: Risoluzione degli errori di formato

Negli esempi seguenti vengono illustrati i risultati dell'aggiunta dei parametri DisplayError o ShowError con un'espressione.

Get-Date | Format-Table DayOfWeek,{ $_ / $null } -DisplayError

DayOfWeek  $_ / $null
--------- ------------
Wednesday #ERR

Get-Date | Format-Table DayOfWeek,{ $_ / $null } -ShowError

DayOfWeek  $_ / $null
--------- ------------
Wednesday

InvalidArgument: Failed to evaluate expression " $_ / $null ".

Parametri

-AutoSize

Indica che il cmdlet regola le dimensioni della colonna e il numero di colonne in base alla larghezza dei dati. Per impostazione predefinita, le dimensioni e il numero di colonne dipendono dalla visualizzazione.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisplayError

Indica che il cmdlet visualizza gli errori nella riga di comando. Questo parametro può essere usato come supporto per il debug quando si formattano espressioni in un Format-Table comando ed è necessario risolvere i problemi delle espressioni.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Expand

Specifica il formato dell'oggetto raccolta e degli oggetti nell'insieme. Questo parametro è progettato per formattare gli oggetti che supportano l'interfaccia ICollection (System.Collections). Il valore predefinito è EnumOnly. I valori accettabili per questo parametro sono i seguenti:

  • EnumOnly: visualizza le proprietà degli oggetti nell'insieme.
  • CoreOnly: visualizza le proprietà dell'oggetto raccolta.
  • Entrambi: visualizza le proprietà dell'oggetto insieme e le proprietà degli oggetti nell'insieme.
Type:String
Accepted values:CoreOnly, EnumOnly, Both
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Indica che il cmdlet indirizza il cmdlet a visualizzare tutte le informazioni sull'errore. Usare con il parametro DisplayError o ShowError . Per impostazione predefinita, quando un oggetto errore viene scritto nei flussi di errore o di visualizzazione, vengono visualizzate solo alcune informazioni sull'errore.

Obbligatorio anche per la formattazione di determinati tipi .NET. Per altre informazioni, vedere la sezione Note .

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-GroupBy

Specifica l'output ordinato in tabelle separate in base a un valore della proprietà. Ad esempio, è possibile usare GroupBy per elencare i servizi in tabelle separate in base al relativo stato.

Immettere un'espressione o una proprietà. Il parametro GroupBy prevede che gli oggetti siano ordinati. Usare il Sort-Object cmdlet prima di usare Format-Table per raggruppare gli oggetti.

Il valore del parametro GroupBy può essere una nuova proprietà calcolata. La proprietà calcolata può essere un blocco di script o una tabella hash. Le coppie chiave-valore valide sono:

  • Nome (o Etichetta) - <string>
  • Espressione - <string> o <script block>
  • Formatstring- <string>

Per altre informazioni, vedere about_Calculated_Properties.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HideTableHeaders

Omette le intestazioni di colonna dalla tabella.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Specifica gli oggetti da formattare. Immettere una variabile che contiene gli oggetti oppure digitare un comando o un'espressione che ottiene gli oggetti.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Property

Specifica le proprietà dell'oggetto che vengono presentate nella visualizzazione e l'ordine in cui appaiono. Digitare uno o più nomi di proprietà, separati da virgole o utilizzare una tabella hash per visualizzare una proprietà calcolata. I caratteri jolly sono consentiti.

Se si omette questo parametro, le proprietà visualizzate nella visualizzazione dipendono dalle proprietà del primo oggetto. Ad esempio, se il primo oggetto ha PropertyA e PropertyB , ma gli oggetti successivi hanno PropertyA, PropertyB e PropertyC, vengono visualizzate solo le intestazioni PropertyA e PropertyB .

Il parametro Property è facoltativo. Non è possibile usare i parametri Property e View nello stesso comando.

Il valore del parametro Property può essere una nuova proprietà calcolata. La proprietà calcolata può essere un blocco di script o una tabella hash. Le coppie chiave-valore valide sono:

  • Nome (o Etichetta) <string>
  • Espressione - <string> o <script block>
  • Formatstring- <string>
  • Larghezza : <int32> deve essere maggiore di 0
  • Allineamento: il valore può essere Left, Centero Right

Per altre informazioni, vedere about_Calculated_Properties.

Type:Object[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-RepeatHeader

Ripete la visualizzazione dell'intestazione di una tabella dopo ogni schermo pieno. L'intestazione ripetuta è utile quando l'output viene inviato tramite pipe a un cercapersone, ad less esempio o more a un paging con un'utilità per la lettura dello schermo.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ShowError

Questo parametro invia errori tramite la pipeline. Questo parametro può essere usato come supporto per il debug quando si formattano espressioni in un Format-Table comando ed è necessario risolvere i problemi delle espressioni.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-View

A partire da PowerShell 6, le visualizzazioni predefinite vengono definite nel codice sorgente di PowerShell C# . I *.format.ps1xml file di PowerShell 5.1 e versioni precedenti non esistono in PowerShell 6 e versioni successive.

Il parametro View consente di specificare un formato alternativo o una vista personalizzata per la tabella. È possibile usare le visualizzazioni predefinite di PowerShell o creare visualizzazioni personalizzate. Per altre informazioni su come creare una vista personalizzata, vedere about_Format.ps1xml.

Le viste alternative e personalizzate per il parametro View devono usare il formato di tabella, in caso contrario, Format-Table non riesce. Se la visualizzazione alternativa è un elenco, usare il Format-List cmdlet . Se la visualizzazione alternativa non è un elenco o una tabella, usare il Format-Custom cmdlet .

Non è possibile usare i parametri Property e View nello stesso comando.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Wrap

Visualizza nella riga successiva il testo di dimensioni superiori alla larghezza della colonna. Per impostazione predefinita, il testo di dimensioni superiori alla larghezza della colonna viene troncato.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

PSObject

È possibile inviare tramite pipe qualsiasi oggetto a questo cmdlet.

Output

Microsoft.PowerShell.Commands.Internal.Format

Questo cmdlet restituisce oggetti di formato che rappresentano la tabella.

Note

PowerShell include gli alias seguenti per Format-Table:

  • Tutte le piattaforme:
    • ft

PowerShell 7.2 ha introdotto nuove funzionalità per colorare l'output. I colori possono essere gestiti usando la $PSStyle variabile automatica. La $PSStyle.Formatting.TableHeader proprietà definisce il colore utilizzato per l'intestazione della tabella visualizzata da Format-Table. Per altre informazioni su questa impostazione, vedere about_ANSI_Terminals.

Se si vuole usare Format-Table con il parametro Property , è necessario includere il parametro Force in una delle condizioni seguenti: