关于内部成员
简短说明
提供有关所有 PowerShell 对象可用的 PowerShell 内部成员的信息。
详细说明
创建对象时,PowerShell 会向每个对象添加一些“隐藏”属性和方法。 这些属性和方法称为 内部成员。
这些内部成员通常隐藏在视图中。 可以使用 Get-Member -Force
命令查看其中一些成员。
对象视图
内部成员包括一组代表对象的视图的 MemberSet 属性。 可以使用 命令在任何 PowerShell 对象上查找 MemberSet 属性 Get-Member -Force
。 每个 PowerShell 对象都包含以下 MemberSet 属性。
psbase
此 psbase 包含不带扩展或适应的基本对象的成员。
psadapted
psadapted 视图显示基对象和改编成员(如果存在)。 经过调整的成员由扩展类型系统 (ETS) 添加。
psextended
psextended 视图仅显示 Types.ps1xml 文件和 Add-Member cmdlet 添加的成员。 任何对象都可以在运行时使用 Add-Member
cmdlet 进行扩展。
psobject
所有 PowerShell 对象的基类型为 [PSObject]
。 但是,创建对象时,PowerShell 还会用 [PSObject]
实例包装对象。 psobject 成员允许访问[PSObject]
包装器实例。 包装器包括方法、属性和有关 对象的其他信息。 使用 psobject 成员与使用 Get-Member 相当,但存在一些差异,因为它仅访问包装器实例。
类型信息
pstypenames
PSTypeNames 是 一个 CodeProperty 成员,它按继承顺序列出对象类型层次结构。 例如:
$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object
如上所示,它从最具体的对象类型 开始, System.IO.FileInfo
然后一直延续到最泛型的类型 System.Object
。
方法
PowerShell 向所有 PowerShell 对象添加两个隐藏的方法。 这些方法在使用 Get-Member -Force
命令或选项卡完成时不可见。
ForEach () 和 where ()
ForEach()
和 Where()
方法可用于所有 PowerShell 对象。 但是,在使用集合时,它们最有用。 有关如何使用这些方法的详细信息,请参阅 about_Arrays。
属性
计数和长度
Count 和 Length 属性适用于所有 PowerShell 对象。 它们彼此相似,但根据数据类型,工作方式可能会有所不同。 有关这些属性的详细信息,请参阅 about_Properties。
数组索引标量类型
当对象不是索引集合时,使用 index 运算符访问第一个元素将返回对象本身。 超出第一个元素的索引值返回 $null
。
PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True
有关详细信息,请参阅 about_Operators。
类型的新 () 方法
从 PowerShell 5.0 开始,PowerShell 为所有 .NET 类型添加静态 New()
方法。 以下示例生成相同的结果。
$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')
new()
使用 方法的性能优于使用 New-Object
。
有关详细信息,请参阅 about_Classes。