Я перечисляю все хранилища данных в нашей среде 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 Usedspace
Datastore3 400
Datastore3 400
Datastore3 400
Так что перечисление до конца. получать все правильные данные. но по какой-то причине строка $list += $row
ожидает до последнего объекта в массиве, захватывает только эти данные, но знает, что в массиве есть 3 объекта, и заполняет каждый индекс данными этих объектов.
Единственное, что я сделал для устранения неполадок, - это отскок моей консоли PowerShell.