Parece que algumas informações de que você precisa estão na saída de Get-VM e são perdidas quando você seleciona apenas a propriedade NetworkAdapters. É por isso que eu mudei abaixo. ele faz um loop sobre a VM agora e seleciona a propriedade NetworkAdapters durante o loop.
Eu também:
- Coloque tudo em um
PSCustomObjectdiretamente, sem necessidade deNew-Objectou[ordered] - Coloque a variável
$resultsantes do cicloforeach - Adicionado
| ft -Autosizeao seuWrite-Output, para que seja formatado da maneira que você quiser (se quiser usar a saída do script ainda mais no script, remova| ft -autosizenovamente, só é bom por razões estéticas) - Especifiquei o
ClusterObjectno seuGet-VM- não tenho tanta certeza disso, pois não trabalho com clusters, mas acho que você precisa especificar essas informações, senão só leria VMs locais, nunca de um cluster remoto. - Não havia propriedade para
OSStatus. Eu acho que você quis dizerOperationalStatus. Eu mudei para isso.
Aqui está o código
$clus = Read-Host 'Enter the Cluster Name'
$Nodes = Get-clusternode -Cluster $clus
$results = @()
foreach($Node in $Nodes)
{
$VMs = Get-VM -ClusterObject $Node
foreach($VM in $VMs)
{
$VMtmp = $VM | select -expand NetworkAdapters
$results += [PSCustomObject]@{
'NodeName' = $Node;
'VMName' = $VM.VMName;
'IPaddress' = $VMtmp.IPAddresses[0];
'Status' = $VM.State;
'AdapterStatus' = $VMtmp.Status[0];
'OSStatus' = $VM.OperationalStatus[0];
'Uptime' = $VM.Uptime
}
}
}
Write-Output $results | ft -AutoSize