Powershell 属性未出现在Get-Member cmdlet中,并且在放入时正在注册值。符号
属性未出现在Get-Member cmdlet中,并且在放入时正在注册值。符号Powershell 属性未出现在Get-Member cmdlet中,并且在放入时正在注册值。符号,powershell,Powershell,属性未出现在Get-Member cmdlet中,并且在放入时正在注册值。符号 Running Get-ChildItem | Get-member TypeName: System.IO.DirectoryInfo Name MemberType Definition ---- ---------- ---------- LinkType CodeProper
Running
Get-ChildItem | Get-member
TypeName: System.IO.DirectoryInfo
Name MemberType Definition
---- ---------- ----------
LinkType CodeProperty System.String LinkType{get=GetLinkType;}
Mode CodeProperty System.String Mode{get=Mode;}….
没有Count属性,对于GCI cmdlet,度量对象cmdlet有Count属性,如图所示
PS C:\Users\NiceTry5> measure-object | get-member
TypeName: Microsoft.PowerShell.Commands.GenericMeasureInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Average Property System.Nullable[double] Average {get;set;}
Count Property int Count {get;set;}
那么,为什么度量对象cmdlet的count属性为GCI cmdlet注册一个值
PS C:\Users\NiceTry5> (GCI).count
32
我相信count属性必须属于某种包含GCI cmdlet的超集,并且在运行Get member时隐藏,尽管我不确定。
对通过管道接收的单个对象进行操作,并返回关于其中不同类型的信息Get-Member
- 因此,通过以文件系统为目标的
命令的输出,您将看到有关类型Get ChildItem
和/或system.IO.DirectoryInfo
-的信息,而这些类型没有system.IO.FileInfo
属性.Count
- 要检查类似集合的类型本身(而不是其元素),请将其传递给
获取成员的
参数,而不是使用管道;e、 g,-InputObject
获取成员-InputObject(获取子项)
- 因此,通过以文件系统为目标的
围绕一个输出多个对象的命令隐式地将这些对象收集到一个(…)
数组中,并且任何数组都有一个[object[]
属性,这得益于它实现的.Count
接口IList
- 这就是说,PowerShell(从v3开始)隐式地提供了
属性,即使是在标量上,也是为了统一标量和集合的处理;e、 例如,.Count
产生(获取日期).Count
,以及1
和'foo'。Count
(原文如此)-然而,(42).Count
不显示此隐式Get Member
属性。.Count
- 您甚至可以将索引(
)与标量一起使用,以便将它们视为单个元素数组;e、 例如,[…]
与(42)[0]
相同-有关更多信息,请参阅(一个显著的例外是42
,因为该类型本身将索引定义为访问字符串中的单个字符;例如,[string]
是'foo'[0]
)'f'
- 您甚至可以将索引(
- 这就是说,PowerShell(从v3开始)隐式地提供了
明显的陷阱:
- 当
或更高版本生效时,使用隐式设置StrictMode-版本2
属性失败:.Count
- e、 例如,
失败,因为在此对象上找不到属性“Count”。设置严格模式-版本2;(42).计数
- 中讨论了这种有问题的行为
- e、 例如,
- 类似集合的类型本身没有
属性,例如惰性枚举,会导致对每个元素调用.Count
,原因是:.Count
- e、 例如,
-因为[System.IO.Directory]::EnumerateFiles('..).Count
返回一个延迟枚举的EnumerateFiles()
实例,因此该实例不能有[System.Collections.Generic.IEnumerable[string]
属性-在每个枚举的路径上调用.Count
,产生一个.Count
s的数组,因为每个单独的路径(作为标量)都有一个1
的计数1
- e、 例如,