获取对象的属性和方法。

语法

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 获取对象的“成员”(属性和方法)。

若要指定对象,请使用 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 部分没有任何参数,所以它将使用所有默认值。同样,它将获取所有成员类型,但不获取静态成员且不显示固有成员。






示例 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 会获取这些成员,但默认情况下会隐藏它们。

可以像使用对象的改编方法一样使用这些属性和方法。第二条命令演示如何显示 Schedule 服务的 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 属性值为 AliasProperty 的对象。

此命令返回 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 属性的对象。

第一个命令在 $a 变量中存储多个 cmdlet 的名称。

第二个命令使用 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 变量中对象的数目。






另请参阅




目录