探索物件
當 Cmdlet 執行時,其會傳回物件。 當您叫用 Cmdlet 時,您看到的回應都已進行格式設定,而且不一定代表回應的所有可用資訊。 若要深入了解傳回的內容,以及如何修改傳回的內容,您可以使用 Get-Member
命令。
使用 Get-Member 探索物件
Get-Member
Cmdlet 的目的是為了在您執行的命令上方進行「傳送」,以便篩選輸出。 Get-Member
的典型命令列叫用看起來可能就像下列範例:
Get-Process -Name 'name-of-process' | Get-Member
此命令會先呼叫 Get-Process
來產生物件結果。 該結果會使用直立線符號 (|
) 作為輸入傳遞給 Get-Member
。 接著,您會得到一個包含 Name
、MemberType
和 Definition
資料行的資料表結果。 以及傳回物件的類型。
提示
若要取得機器上執行的流程清單,請執行 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
命令時,只要指定所需的資料行。 在此案例中,資料行為 Name
和 MemberType
。 命令列看起來像這樣:
Get-Process -Name 'name-of-process' | Get-Member | Select-Object Name, MemberType
此篩選模式所傳回的輸出包含較少的資料行。 篩選結果的範例如下:
Name MemberType
---- ----------
Handles AliasProperty
您也可以依資料列篩選回應。 例如,您可以使用 -MemberType Method
旗標,來指定您對成員類型為方法的資料列感興趣。 例如,如果想要找出並執行特定的方法,您可能只想要顯示特定的資料列。
提示
通常建議使用專用的 Cmdlet,而非在物件上執行方法。