Es scheint, dass einige Informationen, die Sie benötigen, in der Ausgabe enthalten sind Get-VM
und verloren gehen, wenn Sie nur die NetworkAdapters-Eigenschaft auswählen. Deshalb habe ich es unten geändert. Es läuft jetzt über die VMs und wählt die NetworkAdapters-Eigenschaft während der Schleife aus.
Ich auch:
- Setze alles
PSCustomObject
direkt ein, also keine NotwendigkeitNew-Object
oder[ordered]
- Setzen Sie die
$results
Variable vor dieforeach
Schleife - Zu
| ft -Autosize
IhremWrite-Output
Format hinzugefügt, so dass Sie es wie gewünscht formatieren können (wenn Sie die Ausgabe des Skripts in Ihrem Skript weiter verwenden möchten, entfernen Sie es| ft -autosize
erneut, es ist nur aus kosmetischen Gründen von Vorteil) - Spezifiziert die
ClusterObject
in IhremGet-VM
- ich bin nicht so sicher, dass ich da nicht mit Clustern arbeiten, aber ich denke, Sie diese Informationen angeben müssen, sonst wäre es nur lokale VM gelesen, nie von einem Remote - Cluster. - Es gab kein Eigentum für
OSStatus
. Ich glaube, du gemeintOperationalStatus
. Ich habe es geändert.
Hier ist der Code
$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