约 2769 字

约 14 分钟

#PowerShell 的 Get-Member 命令

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

功能

获取对象的成员,即属性和方法。

类型

Cmdlet,属于 Microsoft.PowerShell.Utility。

参数

  • -InputObject <PSObject> - 要获取成员的对象
  • [-Name] <String[]> - 只获取指定名称的属性或方法
  • -MemberType <PSMemberTypes> - 只获取指定类型的成员;别名 Type;可用值:
    • AliasProperty - 别名属性
    • CodeProperty - 代码属性
    • Property - 属性
    • NoteProperty - 备注属性
    • ScriptProperty - 脚本属性
    • Properties - 所有属性
    • PropertySet - 属性集
    • Method - 方法
    • CodeMethod - 代码方法
    • ScriptMethod - 脚本方法
    • Methods - 所有方法
    • ParameterizedProperty - 参数化属性
    • MemberSet - 成员集
    • Event - 事件
    • Dynamic - 动态成员
    • All - 所有成员
  • -View <PSMemberViewTypes> - 只获取指定视图中的成员;可用值:
    • Base - .NET 对象的原始成员
    • Adapted - PowerShell 扩展类型系统定义的成员
    • Extended - 通过 Types.ps1xml 或 Add-Member 添加的成员
    • All - 以上所有视图
  • -Static - 只获取静态成员,即类本身的成员而非实例成员
  • -Force - 显示内在成员和编译器生成的 get_、set_ 方法

#示例

查看对象的成员

> Get-Service | Get-Member
  • 列出服务对象的属性和方法;方法在前,属性在后,并按字母顺序排序。

显示内在成员

> Get-Service | Get-Member -Force
> (Get-Service Schedule).psbase
  • -Force 会显示 psbase、psobject、pstypenames 等内在成员,以及编译器生成的 get_、set_ 方法。

查看扩展成员

> Get-Service | Get-Member -View Extended
  • 只显示通过 Types.ps1xml 或 Add-Member 添加的成员。

按成员类型筛选

> Get-Service | Get-Member -MemberType Property
> Get-WinEvent -LogName System -MaxEvents 1 | Get-Member -MemberType NoteProperty
  • -MemberType 用于只查看某一类成员。

按名称筛选成员

> Get-Process | Get-Member -Name *Path*
  • 支持按名称筛选属性或方法。

查看集合中元素的成员

> $array = @(1, 'hello')
> $array | Get-Member
  • 使用管道时,Get-Member 会分别列出集合中每种对象类型的成员。

查看集合本身的成员

> Get-Member -InputObject $array
  • 使用 -InputObject 时,集合会被当作一个整体,返回数组类型(System.Object[])的成员。

查看类型的静态成员

> [System.String] | Get-Member -Static
  • 静态成员属于类型本身,而不是某个实例。

查看可修改的属性

> $file = Get-Item C:\test\textFile.txt
> $file.psobject.Properties | Where-Object IsSettable | Select-Object -Property Name
  • 借助 psobject 内在成员可以判断哪些属性可以修改。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2