mig*_*llo 2 arrays powershell psobject
我有一个对象数组,每个对象都有 N 个属性。我使用这样的方法执行子集操作Where-Object,例如:
$mySubset = $myArrayOfObjects | Where-Object {($_.Property1 -eq 'ABC') -and ($_.Property2 -eq 'DEF')}
Run Code Online (Sandbox Code Playgroud)
然后我需要检查这个数组中有多少个对象。我这样做:
$mySubset.Count
Run Code Online (Sandbox Code Playgroud)
当子集数组中有多个对象时,它会显示对象的数量。但是,当我只剩下一个对象时$mySubset,它不会将其视为只有一个元素的数组,而是$mySubset.Count返回 N - 每个对象中的属性数量。这就是问题。在这种情况下,如何说服 Powershell 将$mySubset其视为包含 1 项的数组?
最符合 PowerShell 习惯的解决方案是使用@(),即数组子表达式运算符,它可以确保命令的输出被视为数组,即使只返回一个对象:
$mySubset = @($myArrayOfObjects | ...)
Run Code Online (Sandbox Code Playgroud)
直接获取计数:@($myArrayOfObjects | ...).Count
您还可以使用[array] 类型约束- 本质上是放置在目标变量左侧的强制转换 - 这不需要修改 RHS:
[array] $mySubset = $myArrayOfObjects | ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14030 次 |
| 最近记录: |