共用方式為


Get-Member

取得對象的屬性和方法。

語法

Get-Member
   [[-Name] <String[]>]
   [-InputObject <PSObject>]
   [-MemberType <PSMemberTypes>]
   [-View <PSMemberViewTypes>]
   [-Static]
   [-Force]
   [<CommonParameters>]

Description

Get-Member Cmdlet 會取得對象的成員、屬性和方法。

若要指定物件,請使用 InputObject 參數,或使用管線將物件 傳送至 get-Member。 若要取得靜態成員的相關信息,類別的成員,而不是 實例的成員,請使用 Static 參數。 若要只取得特定類型的成員,例如 NoteProperties,請使用 MemberType 參數。

範例

範例 1:取得進程對象的成員

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 命令的一部分沒有任何參數,所以它會使用所有預設值。 因此,它會取得所有成員類型,但不會取得靜態成員,也不會顯示內建成員。

範例 2:取得服務對象的成員

PS> Get-Service | Get-Member -Force
PS> (Get-Service Schedule).PSBase

這個範例會取得由 Get-Service Cmdlet 擷取之服務物件的所有成員(屬性和方法),以及get_和set_方法。

第一個命令會使用 Get-Service Cmdlet 來取得代表系統上服務的物件。 它會使用管線運算符 (|) 將服務對象傳遞至 get-Member Cmdlet

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

您可以使用這些屬性和方法,就像使用 對象的調整方法一樣。 第二個命令示範如何顯示 Schedule 服務的 PSBase 屬性值。

範例 3:取得服務對象的擴充成員

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:取得事件記錄檔物件的腳本屬性

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 屬性。

範例 5:取得具有指定屬性的物件

PS> $A = "Get-Process", "Get-Service", "Get-Culture", "Get-PSDrive", "Get-ExecutionPolicy"
PS> ForEach ($Cmdlet in $A) {Invoke-Command $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 屬性。

範例 6:取得陣列的成員

PS> $A = @(1)
PS> $A.Count
1
PS> Get-Member -InputObject $A
TypeName: System.Object[]
Name               MemberType    Definition
----               ----------    ----------
Count              AliasProperty Count = Length
Address            Method        System.Object& Address(Int32 )
Clone              Method        System.Object Clone()
...
PS> $A = @(1,2,3)
PS> Get-Member -InputObject $A
TypeName: System.Object[]
Name               MemberType    Definition
----               ----------    ----------
Count              AliasProperty Count = Length
Address            Method        System.Object& Address(Int32 )
Clone              Method        System.Object Clone()
...
PS> $A.Count
3

這個範例示範當您只有一個指定型別的物件時,如何尋找 物件陣列的屬性和方法。

因為命令的目標是尋找陣列的屬性,因此第一個命令會使用 inputObject 參數 。 它會使用符號 (@) 來表示陣列。 在此情況下,陣列只包含一個物件,整數 1。

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

第四個命令會使用陣列的 Count 屬性來尋找$A變數中的物件數目。

範例 7:判斷您可以設定的物件屬性

PS> $File = Get-Item c:\test\textFile.txt
PS> $File.psobject.properties | Where-Object {$_.issettable} | Format-Table -Property name
Name
----
PSPath
PSParentPath
PSChildName
PSDrive
PSProvider
PSIsContainer
IsReadOnly
CreationTime
CreationTimeUtc
LastAccessTime
LastAccessTimeUtc
LastWriteTime
LastWriteTimeUtc
Attributes
PS> [appdomain]::CurrentDomain.GetAssemblies() | ForEach-Object { $_.getexportedtypes() } | ForEach-Object {$_.getproperties() | Where-Object {$_.canwrite }} | Select-Object reflectedtype, name

這個範例示範如何判斷物件的哪些屬性可以變更。 此範例使用檔案,但您可以使用此命令格式來尋找 Windows PowerShell 中任何物件的可變更屬性。

第一個命令會使用 Get-Item Cmdlet 來取得文字文件,然後將檔案物件儲存在 $File 變數中。

第二個命令會取得$File變數中檔案物件的所有可變更屬性,並在數據表中顯示屬性的名稱。

第三個命令會取得 Windows PowerShell 工作階段中所有物件的可變更屬性。

範例 8:取得集合中每個項目的成員

PS> $S = Get-Service
PS> $S | Get-Member
TypeName: System.ServiceProcess.ServiceController
Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
RequiredServices          AliasProperty RequiredServices = ServicesDependedOn
Disposed                  Event         System.EventHandler Disposed(System.Object, System.EventArgs
Close                     Method        System.Void Close()
Continue                  Method        System.Void Continue()
CreateObjRef              Method        System.Runtime.Remoting.ObjRef CreateObjRef(type requestedTy
Dispose                   Method        System.Void Dispose()
...
PS> Get-Member -InputObject $S
TypeName: System.Object[]
Name           MemberType    Definition
----           ----------    ----------
Count          AliasProperty Count = Length
Address        Method        System.Object&, mscorlib, Version=2.0.0.0, Cultu
Clone          Method        System.Object Clone()
CopyTo         Method        System.Void CopyTo(array array, int index), Syst
Equals         Method        bool Equals(System.Object obj)
Get            Method        System.Object Get(int )
GetEnumerator  Method        System.Collections.IEnumerator GetEnumerator()
GetHashCode    Method        int GetHashCode()
...

此範例示範 InputObject 參數如何在 get-Member Cmdlet 運作。 當您使用 InputObject 參數來取得集合的成員時,Get-Member 取得集合的成員。 當您使用管線將 物件的集合 傳送至 get-Member時,Get-Member 取得集合中每個項目的成員。

第一個命令會取得本機計算機上的服務,並將服務儲存在 $S 變數中。

第二個命令會將$S變數傳送至 Get-Member Cmdlet。 Get-Member 會取得$S和該類型成員的每個成員類型。 在此情況下,它會取得 ServiceController 對象,並列出成員,例如 RequiredServices 和 Close。

第三個命令會使用 Get-MemberInputObject 參數來提交$S變數。 Get-Member 會取得 type(System.Object[]),以及 serviceController 物件之 集合的成員,例如 Count 和 Clone。

參數

-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 PowerShellPSObject 物件的配接器。
  • PSTypeNames。 以特定順序描述物件的物件類型清單。 格式化物件時,Windows PowerShell 會在 Windows PowerShell 安裝目錄中的 Format.ps1xml 檔案中搜尋類型($pshome)。 它會針對找到的第一個類型使用格式定義。
類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-InputObject

指定擷取其成員的物件。

使用 InputObject 參數與將物件管線 Get-Member不同。 差異如下:

  • 當您使用管線將 物件集合 傳送至 get-Member時,Get-Member 取得集合中個別對象的成員,例如字串陣列中每個字元串的屬性。
  • 當您使用 InputObject 來提交物件的集合時,Get-Member 取得集合的成員,例如字元串陣列中的陣列屬性。
類型:PSObject
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-MemberType

指定這個 Cmdlet 取得的成員類型。 預設值為 All。

此參數可接受的值為:

  • AliasProperty
  • CodeProperty
  • 財產
  • NoteProperty
  • ScriptProperty
  • 性能
  • PropertySet
  • 方法
  • CodeMethod
  • ScriptMethod
  • 方法
  • ParameterizedProperty
  • MemberSet
  • 事件
  • 動態

如需這些值的相關信息,請參閱 MSDN 連結庫中 PSMemberTypes 列舉

並非所有物件都有每種成員類型。 如果您指定對象沒有的成員類型,Windows PowerShell 會傳回 Null 值。

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

類型:PSMemberTypes
別名:Type
接受的值:AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet, Event, Dynamic, All
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Name

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

如果您使用 Name 參數搭配 MemberTypeViewStatic 參數,Get-Member 只會取得滿足所有參數準則的成員。

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

類型:String[]
Position:0
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Static

表示這個 Cmdlet 只會取得 對象的靜態屬性和方法。

靜態屬性和方法是在 對象的類別上定義,而不是定義於類別的任何特定實例上。

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

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-View

指定此 Cmdlet 只會取得特定的型別屬性和方法。 指定一或多個值。 預設值為 Adapted、Extended。

有效值為:

  • 基礎。 只取得 .NET Framework 物件的原始屬性和方法(不含延伸或調整)。
  • 適應。 只取得 Windows PowerShell 擴充類型系統中定義的屬性和方法。
  • 擴展。 只取得 Types.ps1xml 檔案中新增的屬性和方法,或使用 Add-Member Cmdlet。
  • 都。 取得Base、Adapted和Extended檢視中的成員。

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

若要取得特定成員類型,例如腳本屬性,請使用 MemberType 參數。 如果您在相同的命令中使用 MemberTypeView 參數,Get-Member 取得屬於這兩個集合的成員。 如果您在相同的命令中使用 StaticView 參數,則會忽略 View 參數。

類型:PSMemberViewTypes
接受的值:Extended, Adapted, Base, All
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

PSObject

您可以使用管線將任何物件傳送至 Get-Member

輸出

MemberDefinition

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

備註

  • 您可以使用 InputObject 參數,或是使用逗號開頭的管線來 Get-Member,來取得集合對象的相關信息。

    您可以在定義新屬性和方法值的腳本區塊中使用$This自動變數。 $This變數是指要加入屬性和方法的物件實例。 如需$This變數的詳細資訊,請參閱about_Automatic_Variables。