探索物件

已完成

當 Cmdlet 執行時,其會傳回物件。 當您叫用 Cmdlet 時,您看到的回應都已進行格式設定,而且不一定代表回應的所有可用資訊。 若要深入了解傳回的內容,以及如何修改傳回的內容,您可以使用 Get-Member 命令。

使用 Get-Member 探索物件

Get-Member Cmdlet 的目的是為了在您執行的命令上方進行「傳送」,以便篩選輸出。 Get-Member 的典型命令列叫用看起來可能就像下列範例:

Get-Process -Name 'name-of-process' | Get-Member

此命令會先呼叫 Get-Process 來產生物件結果。 該結果會使用直立線符號 (|) 作為輸入傳遞給 Get-Member。 接著,您會得到一個包含 NameMemberTypeDefinition 資料行的資料表結果。 以及傳回物件的類型。

提示

若要取得機器上執行的流程清單,請執行 Get-Process

依類型搜尋

回應的第一行 (執行 Get-Member 命令) 是傳回物件的類型。 當您知道類型後,即可搜尋在相同類型上運作的其他 Cmdlet。 探索這些相關命令,以便在工作領域中快速增長您的知識。

假設您叫用的 PowerShell 命令會列出特定處理序其所有成員。 其結果的前幾個資料列會類似下列輸出:

  TypeName: System.Diagnostics.Process

Name                       MemberType     Definition
----                       ----------     ----------
Handles                    AliasProperty  Handles = Handlecount

第一個資料列表示其類型為 System.Diagnostics.Process。 使用此類型作為搜尋引數來尋找其他使用此類型的 Cmdlet。 以下是範例命令:

Get-Command -ParameterType Process

其結果是一份在此類型上運作的 Cmdlet 清單。 透過使用 Get-Member 及學習如何解譯 PowerShell 的結果,您即可逐漸地深入了解 PowerShell。

提示

PowerShell 的學習宗旨就是要循序漸進。 探索相關 Cmdlet 的絕佳方式是利用傳回類型,依其類型搜尋 Cmdlet。

使用 Select-Object 篩選 Get-Member 結果

當執行 Get-Member 時,其結果可能會「相當冗長」。 亦即,系統會傳回許多資料列。 該物件可能具有事件與方法之類的屬性。 若想讓結果不要那麼冗長,您可篩選特定資料行,並同時決定要顯示哪些資料行。 請記住,傳回的答案已經是回應中所有資料行的子集。

請查看包含許多資料行的 Get-Member 回應。 透過引進 Select-Object Cmdlet,您可以選擇要在回應中顯示哪些資料行。 該命令預期會有以逗號分隔的資料行名稱清單或萬用字元,例如,表示所有資料行的星號 (*)。

Select-Object Name, MemberType 的內容中使用 Select-Object 命令時,只要指定所需的資料行。 在此案例中,資料行為 NameMemberType。 命令列看起來像這樣:

Get-Process -Name 'name-of-process' | Get-Member | Select-Object Name, MemberType

此篩選模式所傳回的輸出包含較少的資料行。 篩選結果的範例如下:

Name                           MemberType
----                           ----------
Handles                     AliasProperty

您也可以依資料列篩選回應。 例如,您可以使用 -MemberType Method 旗標,來指定您對成員類型為方法的資料列感興趣。 例如,如果想要找出並執行特定的方法,您可能只想要顯示特定的資料列。

提示

通常建議使用專用的 Cmdlet,而非在物件上執行方法。