In Windows PowerShell è disponibile un insieme di cmdlet che consentono di controllare quali proprietà visualizzare per particolari oggetti. I nomi di tutti questi cmdlet iniziano con il verbo Format. Consentono di selezionare una o più proprietà da visualizzare.

I cmdlet Format sono Format-Wide, Format-List, Format-Table e Format-Custom. In questo Manuale dell'utente verranno descritti solo i cmdlet Format-Wide, Format-List e Format-Table.

Ogni cmdlet di formattazione ha proprietà predefinite che verranno utilizzate qualora non si specifichino proprietà particolari da visualizzare. Ogni cmdlet utilizza inoltre lo stesso nome di parametro, ossia Property, per specificare quali proprietà si desidera visualizzare. Poiché Format-Wide consente di visualizzare una sola proprietà, il relativo parametro Property accetta solo un valore, mentre i parametri di proprietà per Format-List e Format-Table accettano un elenco di nomi di proprietà.

Se si utilizza il comando Get-Process -Name powershell con due istanze di Windows PowerShell in esecuzione, si ottiene un output analogo al seguente:

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    995       9    30308      27996   152     2.73   2760 powershell
    331       9    23284      29084   143     1.06   3448 powershell

Nella parte restante di questa sezione verrà descritto l'utilizzo dei cmdlet Format per modificare il modo in cui l'output di questo comando viene visualizzato.

Utilizzo di Format-Wide per l'output di Single-Item

Per impostazione predefinita, tramite il cmdlet Format-Wide viene visualizzata solo la proprietà predefinita di un oggetto. Le informazioni associate a ciascun oggetto vengono visualizzate in una singola colonna:

PS> Get-Process -Name powershell | Format-Wide

powershell                              powershell

È anche possibile specificare una proprietà non predefinita:

PS> Get-Process -Name powershell | Format-Wide -Property Id

2760                                    3448

Controllo della visualizzazione di Format-Wide mediante il parametro Column

Mediante il cmdlet Format-Wide è possibile visualizzare solo una proprietà alla volta. Ciò si dimostra utile per visualizzare elenchi semplici che contengano un solo elemento per riga. Per visualizzare un elenco semplice, impostare il valore del parametro Column su 1 digitando:

Get-Command Format-Wide -Property Name -Column 1

Utilizzo di Format-List per una visualizzazione elenco

Il cmdlet Format-List consente di visualizzare un oggetto sotto forma di elenco, con ciascuna proprietà etichettata e visualizzata su una riga distinta:

PS> Get-Process -Name powershell | Format-List

Id      : 2760
Handles : 1242
CPU     : 3.03125
Name    : powershell

Id      : 3448
Handles : 328
CPU     : 1.0625
Name    : powershell

È possibile specificare tutte le proprietà che si desidera:

PS> Get-Process -Name powershell | Format-List -Property ProcessName,FileVersion
,StartTime,Id


ProcessName : powershell
FileVersion : 1.0.9567.1
StartTime   : 2006-05-24 13:42:00
Id          : 2760

ProcessName : powershell
FileVersion : 1.0.9567.1
StartTime   : 2006-05-24 13:54:28
Id          : 3448

Come ottenere informazioni dettagliate utilizzando Format-List con i caratteri jolly

Il cmdlet Format-List consente di utilizzare un carattere jolly come valore del parametro Property, così da poter visualizzare informazioni dettagliate. Spesso gli oggetti includono più informazioni del necessario, ragione per cui in Windows PowerShell per impostazione predefinita non vengono visualizzati tutti i valori delle proprietà. Per visualizzare tutte le proprietà di un oggetto, utilizzare il comando Format-List -Property * . Il comando seguente consente di generare oltre 60 righe di output per un singolo processo:

Get-Process -Name powershell | Format-List -Property *

Sebbene il comando Format-List sia utile per visualizzare i dettagli, qualora si desideri una panoramica di un output che include molti elementi, spesso si dimostra più utile una semplice visualizzazione tabulare.

Utilizzo di Format-Table per l'output tabulare

Se si utilizza il cmdlet Format-Table senza specificare nomi di proprietà per formattare l'output del comando Get-Process , si ottiene esattamente lo stesso output di quando non viene effettuata alcuna formattazione. Il motivo è che i processi vengono in genere visualizzati nel formato tabulare, come accade per la maggior parte degli oggetti di Windows PowerShell.

PS> Get-Process -Name powershell | Format-Table

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
   1488       9    31568      29460   152     3.53   2760 powershell
    332       9    23140        632   141     1.06   3448 powershell

Miglioramento dell'output di Format-Table (parametro AutoSize)

Sebbene la visualizzazione tabulare sia utile per mostrare molte informazioni confrontabili, può rivelarsi difficile interpretarle qualora la capienza della visualizzazione sia eccessivamente ridotta per i dati. Se ad esempio si cerca di visualizzare il percorso, l'ID, il nome e l'azienda produttrice di un processo, l'output viene troncato nella colonna del percorso e dell'azienda produttrice:

PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company

Path                Name                                 Id Company
----                ----                                 -- -------
C:\Program Files... powershell                         2836 Microsoft Corpor...

Se si specifica il parametro AutoSize quando si esegue il comando Format-Table, la larghezza delle colonne viene calcolata in base ai dati effettivi da visualizzare. Ciò rende leggibile la colonna Path, ma la colonna dell'azienda produttrice resta troncata:

PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company -
AutoSize

Path                                                    Name         Id Company
----                                                    ----         -- -------
C:\Program Files\Windows PowerShell\v1.0\powershell.exe powershell 2836 Micr...

Il cmdlet Format-Table potrebbe continuare a troncare i dati, ma solo alla fine della schermata. Alle proprietà diverse dall'ultima visualizzata viene assegnato lo spazio necessario per visualizzare correttamente l'elemento di dati più lungo. Si può osservare che, se si scambiano le posizioni di Path e Company nell'elenco dei valori per Property, il nome dell'azienda produttrice rimane visibile ma il percorso viene troncato:

PS> Get-Process -Name powershell | Format-Table -Property Company,Name,Id,Path -
AutoSize

Company               Name         Id Path
-------               ----         -- ----
Microsoft Corporation powershell 2836 C:\Program Files\Windows PowerShell\v1...

Il comando Format-Table suppone che più una proprietà è vicina all'inizio dell'elenco delle proprietà più è importante. Pertanto viene tentata la visualizzazione completa delle proprietà più vicine all'inizio. Se il comando Format-Table non riesce a visualizzare tutte le proprietà, rimuoverà alcune colonne segnalandolo con un avviso. È possibile osservare questo comportamento rendendo la proprietà Name l'ultima dell'elenco:

PS> Get-Process -Name powershell | Format-Table -Property Company,Path,Id,Name -
AutoSize

WARNING: column "Name" does not fit into the display and was removed.

Company               Path                                                    I
                                                                              d
-------               ----                                                    -
Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\powershell.exe 6

Nell'output precedente, la colonna dell'ID è troncata per poterla contenere nell'elenco, mentre le intestazioni di colonna risultano impilate. Il ridimensionamento automatico delle colonne non sempre sortisce gli effetti desiderati.

Ritorno a capo dell'output nelle colonne con il comando Format-Table (parametro Wrap)

Quando si utilizza Format-Table, è possibile imporre il ritorno a capo di dati lunghi nelle rispettive colonne di visualizzazione ricorrendo al parametro Wrap. L'utilizzo del solo parametro Wrap non assicura tuttavia il conseguimento del risultato desiderato in quanto vengono utilizzate le impostazioni predefinite qualora non venga specificato anche il parametro AutoSize:

PS> Get-Process -Name powershell | Format-Table -Wrap -Property Name,Id,Company,
Path

Name                                 Id Company             Path
----                                 -- -------             ----
powershell                         2836 Microsoft Corporati C:\Program Files\Wi
                                        on                  ndows PowerShell\v1
                                                            .0\powershell.exe 

Un vantaggio dell'utilizzo del solo parametro Wrap è che l'elaborazione non viene molto rallentata. Se si utilizza il parametro AutoSize e si esegue un'elencazione ricorsiva dei file di una directory di grandi dimensioni, potrebbe essere necessario molto tempo ed essere utilizzata una grande quantità di memoria prima che i primi elementi dell'output vengano visualizzati.

Se il carico sul sistema non rappresenta una preoccupazione, l'utilizzo del parametro AutoSize insieme con il parametro Wrap risulta ottimale. Alle colonne iniziali viene sempre assegnata la larghezza necessaria per visualizzare gli elementi su una sola riga, proprio come quando si specifica AutoSize senza il parametro Wrap. La sola differenza è che nella colonna finale verrà effettuato il ritorno a capo, se necessario:

PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I
d,Company,Path

Name         Id Company               Path
----         -- -------               ----
powershell 2836 Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\
                                      powershell.exe

Può accadere che alcune colonne non vengano visualizzate se si specificano prima le colonne più larghe, pertanto è preferibile specificare per primi gli elementi di dati più piccoli. Nell'esempio seguente viene specificato come primo elemento il percorso, che è molto lungo; tuttavia, nonostante l'utilizzo del ritorno a capo, si perde la colonna finale Name:

 PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Path,I
d,Company,Name

WARNING: column "Name" does not fit into the display and was removed.

Path                                                      Id Company
----                                                      -- -------
C:\Program Files\Windows PowerShell\v1.0\powershell.exe 2836 Microsoft Corporat
                                                             ion

Organizzazione dell'output della tabella (parametro GroupBy)

Un altro utile parametro per il controllo dell'output tabulare è GroupBy. Gli elenchi tabulari lunghi sono particolarmente difficili da comparare. Il parametro GroupBy consente di raggruppare l'output in base al valore di una proprietà. Ad esempio, è possibile raggruppare i processi per azienda per poterli analizzare meglio, omettendo il valore dell'azienda dall'elenco delle proprietà:

PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I
d,Path -GroupBy Company


   Company: Microsoft Corporation

Name         Id Path
----         -- ----
powershell 1956 C:\Program Files\Windows PowerShell\v1.0\powershell.exe
powershell 2656 C:\Program Files\Windows PowerShell\v1.0\powershell.exe




Argomenti della Guida