gpt4 book ai didi

powershell - 通过数组枚举失败

转载 作者:行者123 更新时间:2023-12-03 11:27:14 25 4
gpt4 key购买 nike

我正在枚举 VMware 环境中的所有数据存储以获取名称和已用空间。

当我运行 foreach 循环时,它既枚举数组,又不枚举数组。

这是我的脚本:

$list = @()
$row = '' | select Name, UsedSpace
$datastores = Get-Datastore

foreach ($store in $datastores) {
$row.name = $store.name;
$row.usedspace = [math]::Round(($store.extensiondata.summary.capacity - $store.extensiondata.summary.freespace)/1gb)
Write-Host $row; #To Verify that each row is different, and that enumeration is working#
$list += $row;
}

控制台输出:

@{name=datastore1; usedspace=929}@{name=datastore2; usedspace=300}@{name=datastore3; usedspace=400}

$list变量输出:

Name        UsedspaceDatastore3  400Datastore3  400Datastore3  400

所以它正在枚举。获取所有正确的数据。但由于某种原因,行 $list += $row 正在等待,直到数组中的最后一个对象,仅获取该数据,但知道数组中有 3 个对象,并用该数据填充每个索引对象数据。

我所做的唯一的故障排除就是退回我的 PowerShell 控制台。

最佳答案

原因是 $row 是单个对象。您创建它一次,然后不断更改其属性的值。当您将其添加到数组时,您将添加一个引用,而不是副本。因此看到的值将始终是最近设置的值。

在循环的每次迭代中重新创建 $row

关于powershell - 通过数组枚举失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54188650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com