In größeren produktiven VMware Umgebungen stößt man natürlich gerne auf Fehler, die in der kleinen Testumgebungen nie auftreten. So ist mir schon das ein oder andere Mal folgender PowerCLI Fehler vorgekommen, welcher mein Skript bereits in den ersten Sekunden scheitern ließ: unable to read data from the transport connection. Was will die PowerCLI damit sagen?!?
Zumeist wird bei der Datenabfrage get-vm oder get-view -viewtype virtualmachine ein Wert angefordert, welcher einer der betroffenen ESX Host nicht verarbeiten kann. In dem Fall muss man herausfinden, um welchen Server es sich eigentlich handelt, z. B. mit einer recht unschönen aber zuverlässigen Schleife
get-cluster | %{$_.name + ” ¬† ¬†” + $_.host; $_ | get-vm | %{$_.name; $_ | get-view}}
Diese Schleife wird an einer VM stehen bleiben und man kann damit den Cluster und den Host rausfiltern, der das Problem hat. Zumeist genügt es diesen aus dem vCenter zu trennen (Disconnect) und danach direkt wieder zu verbinden.
Alternativ kann man ein get-view um die benötigten Eigenschaften anpassen, was gleichzeitig das Skript wesentlich beschleunigt:
get-view -viewtype virtualmachine -property name,guest,datastore
Mit ein wenig Glück hat man die problematische Eigenschaft ausgefiltert und das Skript läuft durch.