在傳統殼層中,每項工具或命令都會決定其輸出的格式。有些工具可讓您自訂輸出,因此會提供用來控制輸出格式的特殊工具。
在 Windows PowerShell 中,唯一可以格式化輸出的 Cmdlet 就是下列 Format cmdlet:
-
Format-List
-
Format-Custom
-
Format-Table
-
Format-Wide
其他的 Cmdlet 都不能格式化輸出。所以您並不需要了解多種工具的格式化常式和參數。您要認識的只有 Format cmdlet 及其參數。
當您執行命令時,Windows PowerShell 會呼叫預設格式器,這個格式器是由即將顯示資料類型所決定。此格式器會決定要顯示哪些輸出屬性,以及要使用清單或表格格式來顯示這些屬性。
例如,當您使用 Get-Service Cmdlet 時,預設的顯示就是如下所示的 3 欄表格:
C:\PS> get-service Status Name DisplayName ------ ---- ----------- Running AdtAgent Event Forwarder Stopped Alerter Alerter Running ALG Application Layer Gateway Service
若要變更任何 Cmdlet 所產生輸出的格式,請使用管線運算子 (|) 將該命令的輸出傳送到 Format cmdlet。
例如,下列命令將 Get-Service 命令的輸出傳送給 Format-List Cmdlet。最後,服務資料會格式化成包含每項服務的清單。
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 : {}
使用這個 Format 命令時,不僅會將資料顯示於清單中 (而不是顯示於表格),還會顯示每項服務的其他相關資訊。清單中不再以 3 欄格式來顯示每項服務的資料,而是顯示 9 列的資料。Format-List 並沒有擷取額外的服務資訊。這些資料一直存放於 Get-Service 所擷取的物件中,但是 Format-Table (即預設的格式器) 會略過此資料,因為其無法在整個畫面中顯示超過 3 欄的資料。
除了決定資料顯示格式為清單或是表格,您也可以決定要顯示物件的哪些屬性。例如,Get-Service 的預設顯示只會顯示服務物件的 Status、Name 和 DisplayName 屬性。
若要查看物件的所有屬性,請使用管線運算子 (|) 將命令的輸出傳送到 Get-Member Cmdlet。例如,若要查看服務物件的所有屬性,請輸入:
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;}
因為所有的這些屬性都是存放在 Get-Service 為每項服務擷取的物件中,所以您可以顯示其中任何一個或是全部的屬性。請使用 Format Cmdlet 的 Property 參數,選取要顯示的屬性以及屬性顯示的順序。例如,下列命令會使用 Format-Table 命令,僅顯示服務的 Name、ServiceType 和 CanShutDown 屬性。
get-service | format-table name, Servicetype, Canshutdown
以上只是針對 Windows PowerShell 顯示操作的一小部分介紹。如需詳細資料,請使用下列命令讀取 Format cmdlet 的說明:
get-help format-list get-help format-table get-help format-wide get-help format-custom