取得物件的屬性和方法。

語法

Get-Member [[-Name] <string[]>] [-Force] [-InputObject <psobject>] [-MemberType {<AliasProperty> | <CodeProperty> | <Property> | <NoteProperty> | <ScriptProperty> | <Properties> | <PropertySet> | <Method> | <CodeMethod> | <ScriptMethod> | <Methods> | <ParameterizedProperty> | <MemberSet> | <Event> | <All>}] [-Static] [-View {<Extended> | <Adapted> | <Base> | <All>}] [<CommonParameters>]

描述

Get-Member Cmdlet 會取得物件的「成員」(屬性和方法)。

若要指定物件,請使用 InputObject 參數,或經由管道將物件輸出至 Get-Member。若要擷取靜態成員 (類別的成員,而非執行個體的成員) 的相關資訊,請使用 Static 參數。若只要取得特定型別的成員,例如 NoteProperties,請使用 MemberType 參數。

參數

-Force

將內建成員 (PSBase、PSAdapted、PSObject、PSTypeNames) 和編譯器產生的 get_ 與 set_ 方法新增到顯示端。根據預設,Get-Member 會取得所有檢視中的這些屬性 ("Base" 和 "Adapted" 除外),但不加以顯示。

下列清單說明使用 Force 參數時所新增的屬性。

-- PSBase:.NET Framework 物件的最原始且不經過擴充或改寫的屬性。這些屬性是針對物件類別定義的,您可以在 MSDN 中找到它們。

-- PSAdapted:定義在 Windows PowerShell 擴充型別系統中的屬性和方法。

-- PSExtended:Types.ps1xml 檔案中或以 Add-Member Cmdlet 所加入的屬性和方法。

-- PSObject:用來將基底物件轉換成 Windows PowerShell PSObject 物件的介面卡。

-- PSTypeNames:按照特性描述物件的物件型別清單。在格式化物件時,Windows PowerShell 會在 Windows PowerShell 安裝目錄 ($pshome) 的 Format.ps1xml 檔案中搜尋型別,並使用它所找到的第一個型別的格式定義。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-InputObject <psobject>

指定要擷取其成員的物件。

使用 InputObject 參數與經由管道將物件輸出至 Get-Member,這兩種方式並不相同。其差異如下:

-- 當您經由管道將物件的集合輸出至 Get-Member 時,Get-Member 會取得集合中個別物件的成員,例如整數陣列中整數的屬性。

-- 當您使用 InputObject 參數送出物件的集合時,Get-Member 會取得集合的成員,例如整數陣列中陣列的屬性。

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByValue)

接受萬用字元?

false

-MemberType <PSMemberTypes>

只取得有指定的成員型別的成員。預設為 All。

此參數的有效值為:

-- AliasProperty:為現有屬性定義新名稱的屬性。

-- CodeMethod:參考 .NET Framework 類別之靜態方法的某個方法。

-- CodeProperty:參考 .NET Framework 類別之靜態屬性的某個屬性。

-- Event:表示物件傳送訊息來表示動作或變更所處的狀態。

-- MemberSet:屬性及方法的預先定義的集合,例如 PSBase、PSObject 和 PSTypeNames。

-- Method:基礎 .NET Framework 物件的方法。

-- NoteProperty:有靜態值的屬性。

-- ParameterizedProperty:接受參數和參數值的屬性。

-- Property:基礎 .NET Framework 物件的屬性。

-- PropertySet:物件屬性的預先定義的集合。

-- ScriptMethod:值為指令碼輸出的方法。

-- ScriptProperty:值為指令碼輸出的屬性。

-- All:取得所有成員型別。

-- Methods:取得物件方法的所有型別 (例如 Method、CodeMethod、ScriptMethod)。

-- Properties:取得物件屬性的所有型別 (例如 Property、CodeProperty、AliasProperty、ScriptProperty)。

並不是所有物件都有全部的成員型別。如果指定物件所沒有的成員型別,Windows PowerShell 就會傳回 null 值。

若要取得成員的相關型別,例如所有的擴充成員,請使用 View 參數。如果使用 MemberType 參數搭配 Static 或 View 參數,Get-Member 會取得屬於這兩個集合的成員。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Name <string[]>

為物件的一個或多個屬性或方法指定名稱。Get-Member 只會取得指定的屬性和方法。

如果使用 Name 參數搭配 MemberType、View 或 Static 參數,Get-Member 只會取得符合所有參數條件的成員。

若要依名稱取得靜態成員,請使用 Static 參數搭配 Name 參數。

必要?

false

位置?

1

預設值

接受管線輸入?

false

接受萬用字元?

false

-Static

只取得物件的靜態屬性和方法。

靜態屬性和方法定義於物件的類別,而非於類別的特定執行個體。

如果使用 Static 參數搭配 View 參數,則會忽略 View 參數。如果使用 Static 參數搭配 MemberType 參數,Get-Member 只會取得屬於這兩個集合的成員。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-View <PSMemberViewTypes>

只取得特定型別的成員 (屬性和方法)。請指定一個或多個值。預設為 "Adapted, Extended"。

有效的值包括:

-- Base:只取得 .NET Framework 物件最原始 (不經過擴充或改寫) 的屬性和方法。

-- Adapted:只取得定義在 Windows PowerShell 擴充型別系統中的屬性和方法。

-- Extended:只取得 Types.ps1xml 檔案中或以 Add-Member Cmdlet 所加入的屬性和方法。

-- All:取得 Base、Adapted 和 Extended 檢視中的成員。

View 參數會決定擷取的成員,而不只是顯示這些成員而已。

若要取得特定的成員型別,例如指令碼屬性,請使用 MemberType 參數。如果在同一個命令中同時使用 MemberType 和 View 參數,Get-Member 會取得屬於這兩個集合的成員。如果在同一個命令中同時使用 Static 和 View 參數,則會忽略 View 參數。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

System.Management.Automation.PSObject

您可經由管道將任何物件輸出至 Get-Member

輸出

Microsoft.PowerShell.Commands.MemberDefinition

Get-Member 會針對它所取得的每一個屬性或方法各傳回一個物件。

附註

您可以使用 InputObject 參數,或經由管道將物件 (前面加上逗號) 輸出至 Get-Member,藉以擷取集合物件的相關資訊。

範例 1

C:\PS>get-service | get-member


   TypeName: System.ServiceProcess.ServiceController

Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
Close                     Method        System.Void Close()
Continue                  Method        System.Void Continue()
CreateObjRef              Method        System.Runtime.Remoting.ObjRef CreateObjRef(Type requestedType)
Dispose                   Method        System.Void Dispose()
Equals                    Method        System.Boolean Equals(Object obj)
ExecuteCommand            Method        System.Void ExecuteCommand(Int32 command)
GetHashCode               Method        System.Int32 GetHashCode()
GetLifetimeService        Method        System.Object GetLifetimeService()
GetType                   Method        System.Type GetType()
InitializeLifetimeService Method        System.Object InitializeLifetimeService()
Pause                     Method        System.Void Pause()
Refresh                   Method        System.Void Refresh()
Start                     Method        System.Void Start(), System.Void Start(String[] args)
Stop                      Method        System.Void Stop()
ToString                  Method        System.String ToString()
WaitForStatus             Method        System.Void WaitForStatus(ServiceControllerStatus desiredStatus), System.Voi...
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 Cmdlet 所產生之處理序物件 (System.ServiceProcess.ServiceController) 的屬性和方法。

它會使用管線運算子 (|) 將 Get-Service 命令的輸出傳送給 Get-Member。

因為整個命令的 Get-Member 部分沒有任何參數,所以 Get-Member 會使用所有預設值。Get-Member 本身會取得所有成員型別,但不會取得靜態成員,也不會顯示內建成員。






範例 2

C:\PS>get-service | get-member -force

C:\PS> (get-service -schedule).psbase

描述
-----------
這個範例會取得由 Get-Service Cmdlet 所擷取之服務物件 (System.ServiceProcess.ServiceController) 的所有成員 (屬性和方法),包括像是 PSBase 和 PSObject 等內建成員以及 get_ 和 set_ 方法。

第一個命令會使用 Get-Service Cmdlet 取得代表系統服務的物件,並使用管線運算子 (|) 將服務物件傳遞給 Get-Member Cmdlet。

Get-Member 命令會使用 Force 參數將內建的物件成員和編譯器產生的物件成員新增到顯示端。Get-Member 會取得這些成員,但預設會加以隱藏。

您可以像使用物件的適當方法一樣使用這些屬性和方法。第二個命令示範如何顯示排程服務的 PSBase 屬性值。






範例 3

C:\PS>get-service	| get-member -view extended

   TypeName: System.ServiceProcess.ServiceController

Name MemberType    Definition
---- ----------    ----------
Name AliasProperty Name = ServiceName

描述
-----------
這個命令會取得使用 Types.ps1xml 檔案或 Add-Member Cmdlet 所擴充之服務物件的方法和屬性。


Get-Member 命令會使用 View 參數,以便只取得服務物件的擴充成員。在此例中,擴充成員是 Name 屬性,它是 ServiceName 屬性的別名屬性。






範例 4

C:\PS>get-eventlog -log system | gm -membertype scriptproperty

   TypeName: System.Diagnostics.EventLogEntry

Name    MemberType     Definition
----    ----------     ----------
EventID ScriptProperty System.Object EventID {get=$this.get_EventID() -band 0xFFFF;}

描述
-----------
這個命令會取得事件檢視器的系統記錄檔中事件記錄檔物件的指令碼屬性。在此例中,唯一的指令碼屬性是 EventID。






範例 5

C:\PS>get-eventlog -log system | get-member -membertype scriptproperty


   TypeName: System.Diagnostics.EventLogEntry

Name    MemberType     Definition
----    ----------     ----------
EventID ScriptProperty System.Object EventID {get=$this.get_EventID() -band 0xFFFF;}

描述
-----------
這個命令會取得事件檢視器的系統記錄檔中事件記錄檔物件的指令碼屬性。

它會使用 MemberType 參數,只取得 MemberType 屬性值為 ScriptProperty 的物件。

此命令會傳回 EventLog 物件的 EventID 屬性。






範例 6

C:\PS>$a = "get-process", "get-service", "get-culture", "get-psdrive", "get-executionpolicy"

C:\PS> foreach ($cmdlet in $a) {invoke-expression $cmdlet | get-member -name machinename}

TypeName: System.Diagnostics.Process

Name        MemberType Definition
----        ---------- ----------
MachineName Property   System.String MachineName {get;}


   TypeName: System.ServiceProcess.ServiceController

Name        MemberType Definition
----        ---------- ----------
MachineName Property   System.String MachineName {get;set;}

描述
-----------
這個命令會從 Cmdlet 清單取得有 MachineName 屬性的物件。

第一個命令會將數個 Cmdlet 的名稱儲存到 $a 變數。

第二個命令會使用 ForEach 陳述式,叫用每個命令、將結果傳送給 Get-Member,以及將來自 Get-Member 的結果限制成名稱為 "MachineName" 的成員。

結果會顯示只有處理序物件 (System.Diagnostics.Process) 和服務物件 (System.ServiceProcess.ServiceController) 有 MachineName 屬性。






範例 7

C:\PS>$a = get-member -inputobject @(1)

C:\PS>$a.count

1

C:\PS> $a = get-member -inputobject 1,2,3

   TypeName: System.Object[]
Name               MemberType    Definition
----               ----------    ----------
Count              AliasProperty Count = Length
Address            Method        System.Object& Address(Int32 )
Clone              Method        System.Object Clone()
...

C:\PS>$a.count
1

描述
-----------
這個範例示範如何在只有一個指定的型別物件的情況下,找出物件陣列的屬性和方法。

因為整個命令的目標是要找出陣列的屬性,所以第一個命令會使用 InputObject 參數,並以 "at" 符號 (@) 來表示陣列。在此例中,陣列只有一個物件,即整數 1。

第三個命令會使用 Get-Member Cmdlet 取得整數陣列的屬性和方法,而這個命令會將它們儲存到 $a 變數中。

第四個命令會使用陣列的 Count 屬性,以找出 $a 變數中的物件數目。






請參閱




目錄