在傳統殼層中,每項工具或命令都會決定其輸出的格式。有些工具可讓您自訂輸出,因此會提供用來控制輸出格式的特殊工具。

在 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




目錄