首页/系统/Windows 运维速查/Get-Member 查看对象成员
PowerShell 基础66 条

Get-Member 查看对象成员

查看管道中对象的类型、属性与方法,是 PowerShell 最常用的侦察手段:不确定能取哪些字段就先 Get-Member。

Windows 运维速查系统更新于 2026-10-13

Get-Member 是什么

Get-Member 用来查看对象有哪些属性和方法,是 PowerShell 里最常用的侦察手段。管道里流动的对象类型在各环节之间会变化,想对它们做过滤、排序或计算,第一步必须知道能取哪些字段、字段叫什么名字、类型是什么。把上一条命令的结果直接接给 Get-Member,就能看到完整的成员清单,包括属性、方法、事件与别名属性。养成「不确定就先 Get-Member」的习惯,可以避免大量靠猜属性名导致的空值输出。

基本信息

适用平台Windows PowerShell 5.1 与 PowerShell 7 及以上
语法Get-Member [-InputObject <对象>] [-MemberType <类型>] [-Name <筛选>] [-Static]
常用裁剪-MemberType Property 只看属性、Method 只看方法;-Name 支持通配符
管道用法Get-Service | Get-Member 查看服务对象的成员
变量用法Get-Member -InputObject $变量,避免把变量名当字符串传入
输出字段TypeName 是对象类型,Name 与 MemberType 描述具体成员

典型使用场景

  • 写过滤条件前确认属性名,避免因为拼错而得到一列空值
  • 判断属性与方法的区别,方法调用需要加括号
  • 查看对象类型全名,用于判断后续可用的命令与转换方式
  • 确认某个对象的属性是否只读,决定用哪些命令修改
  • 比较不同命令返回的对象差异,理清管道中的数据形态
  • 查静态成员:类型本身提供的常量与方法

常用示例

常用示例
# 查看命令返回对象的全部成员
Get-Service | Get-Member
# 只看属性,忽略方法
Get-Service | Get-Member -MemberType Property
# 过滤名称含时间或长度的属性
Get-ChildItem | Get-Member -MemberType Property -Name *Time*
# 查看对象类型全名
(Get-Process)[0].GetType().FullName
# 对变量使用 -InputObject,避免被当成字符串
$svc = Get-Service -Name Spooler
Get-Member -InputObject $svc -MemberType Property
# 查看类型的静态成员
Get-Member -InputObject ([datetime]) -Static

成员与用法对照

成员类型含义调用方式
Property描述对象状态的属性,多为只读$对象.属性名 直接取值
Method对象能执行的动作$对象.方法() 需要括号,否则只会打印签名
ScriptProperty由脚本动态计算的属性读取时会执行表达式,可能较慢
NoteProperty附加的自定义属性常见于自定义对象,便于扩展字段
AliasProperty属性的别名与真实属性同值,写脚本优先用真实名字
对集合使用 Get-Member 时显示的是集合类型的成员,看不到元素的属性。要查看单个元素的成员,需要取其中一个对象或用输入对象参数传入单个实例。
属性与方法的区别容易被忽略:写成 $服务.停止 只会打印方法签名而不会执行,必须写 $服务.Stop() 才会真正停止。看到输出是一行签名,基本就是漏了括号。
属性名确认之后,就可以放心用在筛选、排序与投影里。若某个属性在 Get-Member 里不存在,后续取值只会得到空列,不会报错,这正是最难察觉的一类脚本问题。

查成员之后怎么用

  • 类型是日期时间时,可以直接做差得到间隔,也可以按格式转字符串
  • 类型是数值时,排序与求和才有意义,字符串参与排序会按字面顺序排列
  • 只读属性适合做判断依据,要修改配置需要改用对应的设置命令
  • 名称带嵌套结构的属性,需要继续往下取一层才能拿到真正需要的值
  • 属性很多的对象先想清楚要哪几列,再动手写投影,避免输出过宽

易错点

  • 对集合调用 Get-Member 后以为取不到属性:看到的是集合类型成员,需要取单个元素或用输入对象参数
  • 把方法当属性使用:漏写括号只会输出签名,看起来像没执行,实际是语法上的误用
  • 属性名拼错不会报错:只会得到一列空值,先 Get-Member 核对能避免这类静默错误
  • 直接写变量名传给 Get-Member:会被当作字符串对象的成员来查看,应使用输入对象参数
  • 忽略动态属性:脚本属性读取时会执行表达式,在大批量数据上反复读取可能明显变慢

数据来源与参考

  • Microsoft Learn:Get-Member
  • Microsoft Learn:about_Objects

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌