En los shells tradicionales, cada herramienta o comando determina el formato de su salida. Algunas herramientas permiten personalizar la salida y contienen parámetros especiales para controlar el formato de los resultados.
En Windows PowerShell, los únicos cmdlets que aplican un formato a la salida son los cmdlets de formato:
-
Format-List
-
Format-Custom
-
Format-Table
-
Format-Wide
Ningún otro cmdlet aplica formato a la salida. Por tanto, no es necesario aprender las rutinas de formato y los parámetros de numerosas herramientas; basta con conocer los cmdlets Format y sus parámetros.
Cuando se ejecuta un comando, Windows PowerShell llama al formateador predeterminado, que depende del tipo de los datos mostrados. El formateador determina las propiedades de la salida que se van a mostrar y si van a aparecer en una lista o una tabla.
Por ejemplo, para el cmdlet Get-Service, la presentación predeterminada es una tabla de tres columnas como la siguiente:
C:\PS> get-service Status Name DisplayName ------ ---- ----------- Running AdtAgent Event Forwarder Stopped Alerter Alerter Running ALG Application Layer Gateway Service
Si desea modificar el formato de salida de un cmdlet, utilice el operador de canalización (|) para enviar el resultado del comando a un cmdlet Format.
Por ejemplo, el comando siguiente envía el resultado de un comando Get-Service al cmdlet Format-List. Como resultado, los datos de servicio se presentan en forma de una lista por cada servicio.
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 : {}
En este formato no sólo se muestran los datos en una lista en lugar de en una tabla; también se incluye más información sobre cada servicio. En lugar de tres columnas de datos para cada servicio, hay nueve filas de datos. Format-List no recuperó la información de servicio adicional. Estos datos están siempre en los objetos recuperados por Get-Service, pero Format-Table, el formateador predeterminado, los omite porque no puede mostrar más de tres columnas en la pantalla.
Además de determinar si los datos van a aparecer en una lista o una tabla, también puede establecer las propiedades del objeto que se van a mostrar. Por ejemplo, en la presentación predeterminada de Get-Service únicamente se muestran las propiedades Status, Name y DisplayName del objeto de servicio.
Si desea ver todas las propiedades de un objeto, utilice el operador de canalización (|) para enviar el resultado de un comando al cmdlet Get-Member. Por ejemplo, para ver todas las propiedades de un objeto de servicio, escriba:
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;}
Dado que todas estas propiedades se encuentran en el objeto que Get-Service recupera para cada servicio, pueden mostrarse algunas o todas ellas. Utilice el parámetro Property de los cmdlets Format para seleccionar las propiedades que se van a mostrar y el orden en el que van a aparecer. Por ejemplo, en el comando siguiente se utiliza el cmdlet Format-Table para mostrar únicamente las propiedades Name, ServiceType y CanShutDown del servicio.
get-service | format-table name, Servicetype, Canshutdown
Esto no es más que una pequeña parte de lo que se puede hacer con las presentaciones de Windows PowerShell. Si desea obtener información más detallada, utilice los comandos siguientes para consultar la ayuda de los cmdlets Format:
get-help format-list get-help format-table get-help format-wide get-help format-custom