Get-Member
取得物件的屬性和方法。
Syntax
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
擷取之服務物件的所有成員 (屬性和) 方法,包括內建成員,例如 PSBase、 PSObject,以及 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 參數Get-Member
傳遞時$array
,會傳回 Object[] 類型的成員。
範例 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 安裝目錄中搜尋類型Format.ps1xml
, ($PSHOME
) 。 它會使用所找到的第一個類型的格式定義。
根據預設, Get-Member
在 Base 和 Adapted以外的所有檢視中取得這些屬性,但不會顯示這些屬性。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
指定要供抓取成員的物件。
使用 InputObject 參數與將物件管線傳送至 Get-Member
不同。 差異如下:
- 當您使用管線將 物件集合傳送至
Get-Member
時,Get-Member
取得集合中個別對象的成員,例如字串陣列中每個字串的屬性。 - 當您使用 InputObject 提交物件的集合時,
Get-Member
取得集合的成員,例如字串陣列中的陣列屬性。
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-MemberType
指定此 Cmdlet 取得的成員類型。 預設為 All
。
此參數可接受的值為:
AliasProperty
CodeProperty
Property
NoteProperty
ScriptProperty
Properties
PropertySet
Method
CodeMethod
ScriptMethod
Methods
ParameterizedProperty
MemberSet
Event
Dynamic
All
這些值會定義為旗標型列舉。 您可以將多個值結合在一起,以使用此參數來設定多個旗標。 這些值可以傳遞至 MemberType 參數做為值的陣列,或是這些值的逗號分隔字串。 Cmdlet 會使用二進位 OR 作業來結合值。 將值當做數位傳遞是最簡單的選項,也可讓您在值上使用索引標籤完成。
如需這些值的相關信息,請參閱 PSMemberTypes 列舉。
並非所有物件都有每個類型的成員。 如果您指定對象沒有的成員類型,PowerShell 會傳回 Null 值。 若要取得相關類型的成員 (例如所有擴充成員),請使用 View 參數。 如果您使用 MemberType 參數搭配 Static 或 View 參數, Get-Member
請取得屬於這兩個集合的成員。
Type: | PSMemberTypes |
Aliases: | Type |
Accepted values: | AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet, Event, Dynamic, All |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
指定一個或多個屬性的名稱或物件的方法。 Get-Member
只會取得指定的屬性和方法。
如果您使用 Name 參數搭配 MemberType、 View 或 Static 參數, Get-Member
則只會取得滿足所有參數準則的成員。
若要依名稱取得靜態成員,請使用 Static 參數搭配 Name 參數。
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Static
指出此 Cmdlet 只會取得物件的靜態屬性和物件。 靜態屬性和方法是在物件的類別上定義,而非在類別的任何特定執行個體上定義。
如果您使用 Static 參數搭配 View 或 Force 參數,Cmdlet 會忽略這些參數。 如果您使用 Static 參數搭配 MemberType 參數, Get-Member
則只會取得屬於這兩個集合的成員。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-View
指定此 Cmdlet 只會取得特定的類型屬性和方法。 請指定一個或多個值。 默認值為 [調整]、 [擴充]。
此參數可接受的值為:
- Base: 只取得 .NET 物件的原始屬性和方法, (沒有延伸或調整) 。
- Adapted: 只取得 PowerShell 擴充類型系統中定義的屬性和方法。
- Extended: 只取得在檔案中
Types.ps1xml
新增的屬性和方法,或使用Add-Member
Cmdlet。 - 全部。 取得 Base、Adapted 及 Extended 檢視中的成員。
View 參數會決定要擷取的成員,而不只是決定那些成員的顯示。
若要取得特定的成員類型 (例如指令碼屬性),請使用 MemberType 參數。 如果您在相同的命令中使用 MemberType 和 View 參數, Get-Member
請取得屬於這兩個集合的成員。 如果您在相同的命令中使用 Static 和 View 參數,則 View 會被忽略。
Type: | PSMemberViewTypes |
Accepted values: | Extended, Adapted, Base, All |
Position: | Named |
Default value: | Adapted, Extended |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
輸入
您可以使用管線將任何物件傳送至此 Cmdlet。
輸出
此 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
之特定類型的靜態成員。