共用方式為


Get-Member

取得對象的屬性和方法。

語法

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

Description

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

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

Get-Member 會傳回依字母順序排序的成員清單。 方法會先列出,後面接著屬性。

範例

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

此命令會顯示 Cmdlet 所產生的 Get-Service 服務物件屬性和方法。

Get-Member因為命令的元件沒有任何參數,所以它會使用參數的預設值。 根據預設, Get-Member 不會取得靜態或內部成員。

Get-Service | Get-Member

TypeName: System.Service.ServiceController#StartupType

Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
RequiredServices          AliasProperty RequiredServices = ServicesDependedOn
Disposed                  Event         System.EventHandler Disposed(System.Object, System.EventArgs)
Close                     Method        void Close()
Continue                  Method        void Continue()
Dispose                   Method        void Dispose(), void IDisposable.Dispose()
Equals                    Method        bool Equals(System.Object obj)
ExecuteCommand            Method        void ExecuteCommand(int command)
GetHashCode               Method        int GetHashCode()
GetLifetimeService        Method        System.Object GetLifetimeService()
GetType                   Method        type GetType()
InitializeLifetimeService Method        System.Object InitializeLifetimeService()
Pause                     Method        void Pause()
Refresh                   Method        void Refresh()
Start                     Method        void Start(), void Start(string[] args)
Stop                      Method        void Stop()
WaitForStatus             Method        void WaitForStatus(System.ServiceProcess.ServiceControllerSt...
BinaryPathName            Property      System.String {get;set;}
CanPauseAndContinue       Property      bool CanPauseAndContinue {get;}
CanShutdown               Property      bool CanShutdown {get;}
CanStop                   Property      bool CanStop {get;}
Container                 Property      System.ComponentModel.IContainer Container {get;}
DelayedAutoStart          Property      System.Boolean {get;set;}
DependentServices         Property      System.ServiceProcess.ServiceController[] DependentServices {get;}
Description               Property      System.String {get;set;}
DisplayName               Property      string DisplayName {get;set;}
MachineName               Property      string MachineName {get;set;}
ServiceHandle             Property      System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName               Property      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;}
StartType                 Property      System.ServiceProcess.ServiceStartMode StartType {get;}
StartupType               Property      Microsoft.PowerShell.Commands.ServiceStartupType {get;set;}
Status                    Property      System.ServiceProcess.ServiceControllerStatus Status {get;}
UserName                  Property      System.String {get;set;}
ToString                  ScriptMethod  System.Object ToString();

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

這個範例會取得 Cmdlet 擷Get-Service取之服務物件的所有成員(屬性和方法),包括 PSBasePSObject 等內建成員,以及get_set_方法。

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

此命令 Get-Member 會使用 Force 參數,將物件的內建成員和編譯程式產生的成員新增至顯示。 您可以使用這些屬性和方法,就像使用 對象的調整方法一樣。 第二個命令示範如何顯示 Schedule 服務的 PSBase 屬性值。 如需內部成員的詳細資訊,請參閱 about_Intrinsic_Members

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

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

Get-Service | Get-Member -View Extended

TypeName: System.Service.ServiceController#StartupType

Name             MemberType    Definition
----             ----------    ----------
Name             AliasProperty Name = ServiceName
RequiredServices AliasProperty RequiredServices = ServicesDependedOn
ToString         ScriptMethod  System.Object ToString();

此命令 Get-Member 會使用 View 參數,只取得服務對象的擴充成員。 在此情況下,擴充成員是 Name 屬性,這是 ServiceName 屬性的別名屬性。

範例 4:取得事件記錄檔物件的腳本屬性

本範例會取得系統記錄檔中事件記錄檔物件的腳本屬性 事件檢視器。

Get-WinEvent -LogName System -MaxEvents 1 | Get-Member -MemberType NoteProperty

TypeName: System.Diagnostics.Eventing.Reader.EventLogRecord

Name    MemberType   Definition
----    ----------   ----------
Message NoteProperty string Message=The machine-default permission settings do not grant Local ...

MemberType 參數只會取得其 MemberType 屬性值為 NoteProperty 的物件。

此命令會傳回 EventLogRecord 物件的 Message 屬性

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

這個範例會從 Cmdlet 清單取得輸出中具有 MachineName 屬性的物件。

變數 $list 包含要評估的 Cmdlet 清單。 語句 foreach 會叫用每個命令,並將結果傳送至 Get-Member。 Name 參數會將結果Get-Member限制為名稱為 MachineName 的成員。

$list = "Get-Process", "Get-Service", "Get-Culture", "Get-PSDrive", "Get-ExecutionPolicy"
foreach ($cmdlet in $list) {& $cmdlet | Get-Member -Name MachineName}

TypeName: System.Diagnostics.Process

Name        MemberType Definition
----        ---------- ----------
MachineName Property   string MachineName {get;}

   TypeName: System.Service.ServiceController#StartupType

Name        MemberType Definition
----        ---------- ----------
MachineName Property   string MachineName {get;set;}

結果顯示只有處理對象和服務物件具有 MachineName 屬性。

範例 6:取得陣列的成員

此範例示範如何尋找 物件陣列的成員。 當您使用管線將 對象陣列和數位傳送至 Get-Member時,Cmdlet 會傳回數位中每個唯一物件類型的成員清單。 如果您使用 InputObject 參數傳遞陣列,則會將陣列視為單一物件。

$array = @(1,'hello')
$array | Get-Member

TypeName: System.Int32

Name        MemberType Definition
----        ---------- ----------
CompareTo   Method     int CompareTo(System.Object value), int CompareTo(int value), int ICompar...
Equals      Method     bool Equals(System.Object obj), bool Equals(int obj), bool IEquatable[int...
GetHashCode Method     int GetHashCode()
GetType     Method     type GetType()
GetTypeCode Method     System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()
ToBoolean   Method     bool IConvertible.ToBoolean(System.IFormatProvider provider)
ToByte      Method     byte IConvertible.ToByte(System.IFormatProvider provider)
...

   TypeName: System.String

Name                 MemberType            Definition
----                 ----------            ----------
Clone                Method                System.Object Clone(), System.Object ICloneable.Clone()
CompareTo            Method                int CompareTo(System.Object value), int CompareTo(str...
Contains             Method                bool Contains(string value), bool Contains(string val...
CopyTo               Method                void CopyTo(int sourceIndex, char[] destination, int ...
EndsWith             Method                bool EndsWith(string value), bool EndsWith(string val...
EnumerateRunes       Method                System.Text.StringRuneEnumerator EnumerateRunes()
Equals               Method                bool Equals(System.Object obj), bool Equals(string va...
GetEnumerator        Method                System.CharEnumerator GetEnumerator(), System.Collect...
GetHashCode          Method                int GetHashCode(), int GetHashCode(System.StringCompa...
...

Get-Member -InputObject $array

TypeName: System.Object[]

Name           MemberType            Definition
----           ----------            ----------
Add            Method                int IList.Add(System.Object value)
Address        Method                System.Object&, System.Private.CoreLib, Version=4.0.0.0, Cu...
Clear          Method                void IList.Clear()
Clone          Method                System.Object Clone(), System.Object ICloneable.Clone()
CompareTo      Method                int IStructuralComparable.CompareTo(System.Object other, Sy...
...

變數 $array 包含 Int32 物件和 字串 物件,如將數位管道傳送至 Get-Member時所見。 使用 InputObject 參數傳遞時$array,會傳回 Object[] 類型的成員。Get-Member

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

這個範例示範如何判斷物件的哪些屬性可以變更。

$File = Get-Item c:\test\textFile.txt
$File.PSObject.Properties | Where-Object isSettable | Select-Object -Property Name

Name
----
PSPath
PSParentPath
PSChildName
PSDrive
PSProvider
PSIsContainer
IsReadOnly
CreationTime
CreationTimeUtc
LastAccessTime
LastAccessTimeUtc
LastWriteTime
LastWriteTimeUtc
Attributes

範例 8:依建立對象的順序列出對象的屬性

此範例會建立新的 PSObject ,並將屬性加入其中。 Get-Member 會依字母順序列出屬性。 若要查看屬性新增至 對象的順序,您必須使用 PSObject 內部成員。

$Asset = New-Object -TypeName PSObject
$d = [ordered]@{Name="Server30";System="Server Core";PSVersion="4.0"}
$Asset | Add-Member -NotePropertyMembers $d -TypeName Asset
$Asset.PSObject.Properties | Select-Object Name, Value

Name      Value
----      -----
Name      Server30
System    Server Core
PSVersion 4.0

參數

-Force

將內部成員和編譯程式產生的 get_set_ 方法新增至顯示器。 下列清單描述當您使用 Force 參數時所新增的屬性:

  • PSBase:.NET 物件的原始屬性,不含擴展名或調適。 這些是針對物件類別定義的屬性。
  • PSAdapted:P owerShell擴充類型系統中定義的屬性和方法。
  • PSExtended:檔案中 Types.ps1xml 新增的屬性和方法,或使用 Add-Member Cmdlet。
  • PSObject:將基底對象轉換成 PowerShell PSObject 物件的配接器
  • PSTypeNames:以特定順序描述對象的物件類型清單。 格式化物件時,PowerShell 會在 PowerShell 安裝目錄 ($PSHOME) 的檔案中Format.ps1xml搜尋類型。 它會針對找到的第一個類型使用格式定義。

根據預設,Get-Member在BaseAdapted以外的所有檢視中取得這些屬性,但不會顯示它們。

類型: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
  • Property
  • NoteProperty
  • ScriptProperty
  • Properties
  • PropertySet
  • Method
  • CodeMethod
  • ScriptMethod
  • Methods
  • ParameterizedProperty
  • MemberSet
  • Event
  • Dynamic
  • All

這些值會定義為旗標型列舉。 您可以將多個值結合在一起,以使用此參數來設定多個旗標。 這些值可以傳遞至 MemberType 參數做為值的陣列,或是這些值的逗號分隔字串。 Cmdlet 會使用二進位 OR 作業來合併值。 將值當做數位傳遞是最簡單的選項,也可讓您在值上使用 Tab 鍵自動完成。

如需這些值的相關信息,請參閱 PSMemberTypes 列舉

並非所有物件都有每種成員類型。 如果您指定對象沒有的成員類型,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 參數搭配 ViewForce 參數,Cmdlet 會忽略這些參數。 如果您使用 Static 參數搭配 MemberType 參數, Get-Member 則只會取得屬於這兩個集合的成員。

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

-View

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

此參數可接受的值為:

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

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

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

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

輸入

PSObject

您可以使用管線將任何物件傳送至此 Cmdlet。

輸出

MemberDefinition

此 Cmdlet 會針對其取得的每個屬性或方法傳回 MemberDefinition

備註

PowerShell 包含下列的 Get-Member別名:

  • 所有平臺:
    • gm

您可以使用 InputObject 參數,或將前面加上逗號的物件管線傳送至 Get-Member,以取得集合對象的相關信息。

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

如果您傳遞代表型別的物件,例如類型常值,則[int]Get-Member傳回類型的相關信息[System.RuntimeType]。 不過,當您使用 Static 參數時, Get-Member 會傳回 實例所 System.RuntimeType 代表之特定類型的靜態成員。