Nelle shell tradizionali ogni strumento o comando determina il formato del proprio output. Alcuni strumenti consentono di personalizzare l'output e includono parametri speciali per il controllo della formattazione.
In Windows PowerShell gli unici cmdlet che consentono di formattare l'output sono i cmdlet Format:
-
Format-List
-
Format-Custom
-
Format-Table
-
Format-Wide
Nessuno degli altri cmdlet consente di formattare l'output. Di conseguenza, non è necessario apprendere parametri e routine di formattazione di più strumenti, ma è sufficiente apprendere l'utilizzo dei cmdlet Format e dei relativi parametri.
Quando si esegue un comando, tramite Windows PowerShell viene chiamato il formattatore predefinito, determinato dal tipo di dati da visualizzare. Il formattatore determina quali sono le proprietà dell'output da visualizzare e se tali proprietà vengono visualizzate in un elenco o in una tabella.
Quando si utilizza, ad esempio, il cmdlet Get-Service, la visualizzazione predefinita è costituita da una tabella con tre colonne, come illustrato di seguito:
C:\PS> get-service Status Name DisplayName ------ ---- ----------- Running AdtAgent Event Forwarder Stopped Alerter Alerter Running ALG Application Layer Gateway Service
Per modificare il formato dell'output di qualsiasi cmdlet, utilizzare l'operatore pipeline (|) per inviare l'output del comando a un cmdlet Format.
Ad esempio, il comando seguente invia l'output di un comando Get-Service al cmdlet Format-List. Di conseguenza, i dati dei servizi vengono formattati sotto forma di un elenco per ogni servizio.
C:\PS> get-service | format-list Name : AdtAgent DisplayName : Event Forwarder Status : Running DependentServices : {} ServicesDependedOn : {eventlog, dnscache} CanPauseAndContinue : False CanShutdown : True CanStop : True ServiceType : Win32OwnProcess Name : Alerter DisplayName : Alerter Status : Stopped DependentServices : {} ServicesDependedOn : {LanmanWorkstation} CanPauseAndContinue : False CanShutdown : False CanStop : False ServiceType : Win32ShareProcess Name : ALG DisplayName : Application Layer Gateway Service Status : Running DependentServices : {}
In questo formato i dati vengono visualizzati in un elenco anziché in una tabella e sono disponibili maggiori informazioni su ogni servizio. Anziché tre colonne di dati per ogni servizio, sono presenti nove righe di dati. Format-List non ha recuperato le informazioni sul servizio aggiuntive. I dati erano presenti anche negli oggetti recuperati da Get-Service, ma sono stati omessi da Format-Table, il formattatore predefinito, in quanto sullo schermo è possibile visualizzare un massimo di tre colonne.
Oltre a impostare la visualizzazione dei dati in un elenco o in una tabella, è anche possibile determinare quali proprietà dell'oggetto devono essere visualizzate. Nella visualizzazione predefinita di Get-Service, ad esempio, sono incluse solo le proprietà Status, Name e DisplayName dell'oggetto servizio.
Per visualizzare tutte le proprietà di un oggetto, utilizzare un operatore pipeline (|) per inviare l'output di un comando al cmdlet Get-Member. Per visualizzare, ad esempio, tutte le proprietà di un oggetto servizio, digitare:
get-service | get-member -membertype *property TypeName: System.ServiceProcess.ServiceController Name MemberType Definition ---- ---------- ---------- Name AliasProperty Name = ServiceName CanPauseAndContinue Property System.Boolean CanPauseAndContinue {get;} CanShutdown Property System.Boolean CanShutdown {get;} CanStop Property System.Boolean CanStop {get;} Container Property System.ComponentModel.IContainer Container {get;} DependentServices Property System.ServiceProcess.ServiceController[] DependentServices {get;} DisplayName Property System.String DisplayName {get;set;} MachineName Property System.String MachineName {get;set;} ServiceHandle Property System.Runtime.InteropServices.SafeHandle ServiceHandle {get;} ServiceName Property System.String ServiceName {get;set;} ServicesDependedOn Property System.ServiceProcess.ServiceController[] ServicesDependedOn {get;} ServiceType Property System.ServiceProcess.ServiceType ServiceType {get;} Site Property System.ComponentModel.ISite Site {get;set;} Status Property System.ServiceProcess.ServiceControllerStatus Status {get;}
Poiché tutte queste proprietà sono incluse nell'oggetto recuperato da Get-Service per ogni servizio, è possibile visualizzarle tutte o solo alcune. Utilizzare il parametro Property dei cmdlet Format per selezionare le proprietà da visualizzare e l'ordine di visualizzazione. Nel comando seguente, ad esempio, viene utilizzato Format-Table per visualizzare solo le proprietà Name, ServiceType e CanShutDown del servizio.
get-service | format-table name, Servicetype, Canshutdown
Le operazioni descritte sono solo alcune tra le operazioni di base che è possibile utilizzare per definire le modalità di visualizzazione in Windows PowerShell. Per ulteriori informazioni, utilizzare i comandi seguenti per visualizzare la Guida per i cmdlet Format:
get-help format-list get-help format-table get-help format-wide get-help format-custom