Я использую этот сценарий, чтобы получить основную информацию из виртуальных машин на нашем HyperV кластере:Powershell выход не форматировать правильно
#Establish global variables and MasterList array
$VMList = Get-VM
$MasterList = @()
#Loop through VMs and get Name, Processor count, assigned memory, add to MasterList
foreach($vm in $VMList) {
$ALLVHD = Get-VHD $vm.harddrives.path -ComputerName $vm.computername
$MyObject = New-Object PSObject -Property @{
Name = ($vm).VMName
ProcessorCount = (Get-VMProcessor $vm).Count
AssignedMemory = ($vm).MemoryAssigned
DiskType = $VHD.VhdType
'Total(GB)' = [math]::Round($VHD.Size/1GB)
'Used(GB)' = [math]::Round($VHD.FileSize/1GB)
'Free(GB)' = [math]::Round($VHD.Size/1GB- $VHD.FileSize/1GB)
}
$MasterList += $MyObject
}
$MasterList | Out-GridView
В основном это работает, но есть несколько проблем. Порядок столбцов неверен, он выводит DiskType, Name, AssignedMemory, Free (GB), ProcessorCount, Used (GB), Total (GB), и я не знаю, почему, потому что теперь это то, как это упорядочено в коде. Кроме того, бесплатные, используемые и общие суммы составляют 71, 29 и 100 для всех элементов, если это неверно.
Если кто-либо из экспертов Powershell может помочь мне в этом, он будет очень признателен.
См [Изменить порядок столбцов в объекте] (// stackoverflow.com/a/19625107). – wOxxOm
Где вы присвоили значение '$ VHD'? – PetSerAl