powershell - $c.length 只输出一吨,而不是长度
问题描述
我一直在尝试学习一些 PowerShell,并且正在尝试制作以下脚本(从 Get-Process 获取所有 Starttime 值并将它们保存在不包括 DateTime 对象的 Time 部分的形式中。)
$a=( Get-Process |Where-Object ProcessName -NotMatch 'Idle' | Select-Object -property starttime);
#I think Select-Object part may not be necessary, but left in as that's how
#I've coded it
$b= $a.starttime;
$c=New-Object System.Collections.Generic.List[DateTime];
$count=0; @(0..($b.length-1)).foreach({ Write-Host $count,$b[$_].ToShortDateString(); $c.add($b[$_].ToShortDateString()); $count++ })
而且我认为它做了我打算做的事情。调用$b[j]-$c[j]
只产生 Minutes、Seconds、Milliseconds 的值。但是,当我调用长度时,我得到以下信息
$b.length
175
$c.length
1
1
1
ETC。,
那么这是为什么呢?我不太精通powershell(已经玩了大约一个星期),我觉得好像$c.length
应该吐出与$b.length
?我做错了什么?
解决方案
首先,这个问题的解决方案很简单 -Count
用于获取列表中项目的总数:
$c.Count
PowerShell,从 4.0 版开始,支持称为“属性枚举”的东西,这意味着当您使用成员解析运算符引用可枚举对象(List[Datetime]
例如)上的属性名称时.
,该属性在被引用的对象上不存在, PowerShell 将尝试根据可枚举对象中包含的项目解析该属性名称。
泛型List[]
类型没有Length
属性,因此有 175 个单独的结果 :)
推荐阅读
- postgresql - Postgres 索引在大表上被忽略
- amazon-web-services - 来自 client_credentials 流的访问令牌导致 401 需要授权
- mongodb - k8s pod连接mongodb失败
- installation - 如何禁用修复?
- amazon-web-services - 如何为 aws kinesis put stream api 将 base64 字符串数据拆分为小于 1 mb 的块?
- vue.js - 多个粘性列 bootstrap-vue vuejs
- r - 使用 R 中的 polyroot 函数返回的值在循环中构造数据框
- webpack - Webpack 代码是否在 switch 语句中拆分?
- vue.js - 如果它们与 VueJS 中的条件匹配,则隐藏单个选择菜单选项
- android - 如何实现居中的recyclerview