【发布时间】:2021-09-21 18:33:09
【问题描述】:
我有一个 foreach 循环,目前在我的哈希表中放入三个条目:
$result = foreach($key in $serverSpace.Keys){
if($serverSpace[$key] -lt 80){
[pscustomobject]@{
Server = $key
Space = $serverSpace[$key]}}}
当我使用时
$result.count
我按预期得到了 3 个。 我更改了 foreach 循环以排除小于或等于 1 的条目使用
$result = foreach($key in $serverSpace.Keys){
if($serverSpace[$key] -lt 80 -and $serverSpace[$key] -gt 1){
[pscustomobject]@{
Server = $key
Space = $serverSpace[$key]}}}
$result.count 应该有 1 作为其输出,但它不会将 .count 识别为建议的命令,并且 $result.count 不再输出任何内容。我假设当哈希表中只有一个条目时它不允许计数?不确定发生了什么,但我的脚本条件取决于 $result 的计数。任何帮助将不胜感激。
【问题讨论】:
-
强制为数组:
@($result).count -
[1] PSCO 不是哈希表。 [grin] [2] 如果您希望单个对象具有
.Count属性,则需要将该对象放入一个集合中。最简单的方法是在 $Var 名称前加上[array]。 -
哦,哇,我很笨。这就说得通了。谢谢你们俩
-
这能回答你的问题吗? Powershell being too clever
-
术语说明:
foreach循环返回的是一个或多个自定义对象([pscustomobject]实例),而不是hashtables。
标签: powershell count hashtable