Проблема связана с командлетом New-Object
, который ожидает, что для параметра -Property
будет предоставлена хеш-таблица.
Не думаю, что вам вообще нужно New-Object
, чтобы получить то, что ядумаю, что вы после.
Вы также можете рассмотреть возможность использования Select-Object
вместо Format-Table
, а затем использовать Format-Table
в конце, чтобы дать вам больше гибкости в том, как вы можете дополнительно манипулировать результатами при необходимости.
Вы также можете возвращать результат ForEach
напрямую, вместо добавления в массив, что менее эффективно, поскольку массив воссоздается каждый раз:
$output = foreach ($comp in $maschines.name) {
invoke-command -computer comp3 -ScriptBlock {
get-vm –VMName $using:comp | Select-Object VMId | Get-VHD | Select-Object @{ label = "vm"; expression = {$using:comp} },
path,
VhdType,
VhdFormat,
@{label = "file(gb)"; expression = {($_.FileSize / 1GB) -as [int]} },
@{label = "size(gb)"; expression = {($_.Size / 1GB) -as [int]} }
}
}
$output | Format-Table -AutoSize