Powershell $c.length只输出一吨一';s、 不是长度

Powershell $c.length只输出一吨一';s、 不是长度,powershell,Powershell,我一直在尝试学习一些PowerShell,并尝试编写以下脚本(从Get进程中获取所有Starttime值,并将它们保存在不包括DateTime对象的时间部分的表单中) 我想它做了我想做的事。调用$b[j]-$c[j]只生成分、秒、毫秒的值。然而,当我调用长度时,我得到以下结果 $b.length 175 一, 一, 一, 等等, 为什么会这样?我不太精通powershell(已经玩了大约一周),我觉得$c.length应该给出与$b.length相同的值?我做错了什么?首先,这个问题的解决方案

我一直在尝试学习一些PowerShell,并尝试编写以下脚本(从Get进程中获取所有Starttime值,并将它们保存在不包括DateTime对象的时间部分的表单中)

我想它做了我想做的事。调用
$b[j]-$c[j]
只生成分、秒、毫秒的值。然而,当我调用长度时,我得到以下结果

$b.length
175

一,

一,

一,

等等,


为什么会这样?我不太精通powershell(已经玩了大约一周),我觉得
$c.length
应该给出与
$b.length
相同的值?我做错了什么?

首先,这个问题的解决方案是直接的-使用
Count
获取列表中项目的总计数:

$c.Count

自版本4.0以来,PowerShell支持一种称为“属性枚举”的功能,这意味着当您使用
成员解析运算符引用可枚举对象(例如
列表[Datetime]
)上的属性名称时,被引用对象上不存在该属性,PowerShell将尝试根据可枚举对象中包含的项解析该属性名称


generic
List[]
类型没有
Length
属性,因此175个单独的结果:)

System.Collections.generic.List`1类型没有
Length
属性。使用
Count
而不是toof,我想如果是这样的话,它会抛出一个错误,我甚至没有注意到。有没有办法反复检查某些东西的属性?当我尝试在$b上获取成员时,这也是一个DateTime对象,这是因为从技术上讲它不是System.Collections.Generic.List吗?或者还有其他原因吗?管道默认情况下会分解可枚举对象,因此您希望执行
Get Member-InputObject$c
,而不是
$c | Get Member
:)啊,是的,这很有意义。管道一个接一个地发送东西,我知道这一点(尽管显然我不太了解xD)。谢谢
$c.length
$c.Count