#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_方法
默认视图为
Adapted和Extended,不会显示静态成员和内在成员。
#示例
查看对象的成员
> 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内在成员可以判断哪些属性可以修改。