Troubleshooting: HPEiLOCmdlets für die Powershell

von Magnus Witzik

Wie bekommen wir die HPEiLOCmdlets zum Laufen

Wer vielleicht seine Server Landschaft von HPE (Hewlett Packard Enterprise) bezieht, und diese mit VMware betreibt, stößt bei der Automatisierung via Powershell wahrscheinlich auf ein interessantes Problem: Die HPEiLOCmdlets funktionieren auf einmal nicht mehr.

Dabei schien es bei frisch installierten Instanzen noch ohne Probleme zu funktionieren. Was hat sich also geändert? Eine Frage, die sich nicht immer so einfach beantworten lässt und meist viel Zeit in der Analyse verbraucht.

Die Fehlermeldung

Eigentlich sollte man annehmen, dass alles wie gehabt funktioniert. Doch dann, beim Absetzen eines HPEiLOCmdlets Befehls, erscheint ein unangenehmer Fehler, der die Ausführung verhindert: "Could not load file or assembly 'log4net, Version=2.0.9.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a'. Could not find or load a specific file.".

Doch warum erscheint dieser Fehler? Bringt etwa die Installation der HPEiLOCmdlets die notwendige Bibliothek nicht mit? Oder hat ein Update die Installation "zerschossen"?

Ursache und Lösung

Nun, das eigentliche Problem ist hierbei nicht die Installation der HPEiLOCmdlets - dort sind alle notwendigen Bibliotheken korrekt vorhanden - sondern der parallele Betrieb der PowerCLI Tools von VMware - und eine Eigenart im Verhalten der Powershell: Diese lädt nämlich aus den automatisch geladenen Modulen beim Start die Bibliotheken - und deren Versionen - zuerst und einzig. Bedeutet, die Installation der PowerCLI Tools bringt eine ältere Version mit, welche persistent geladen wird, und mit der die HPEiLOCmdlets wenig anfangen können. Die Lösung ist daher denkbar einfach:

  • Alle Powershell Instanzen schließen (dazu gehört auch MS Code)
  • Die alten log4net.dll Versionen aus der PowerCLI Installation mit den aktuelleren aus der HPEiLOCmdlets Installation überschreiben.
  • Die neuere Version findet sich bei den Powershell Modulen (seit Version 7 im <Benutzer>/Dokumente/Folder/Powershell/Modules/HPEiLOCmdlets zu finden)
  • Die zu überschreibenden Versionen befinden sich in <Benutzer>/Dokumente/Folder/Powershell/Modules/VMware.VimAutomation.Sdk/<Version>/net<Version> und <Benutzer>/Dokumente/Folder/Powershell/Modules/VMware.VimAutomation.Sdk/<Version>/netcoreapp<Version>

Voila! Und schon funktionieren beide Cmdlets wieder, wie sie sollen. Warum VMware / Broadcom hier auf eine ältere Version kann im Moment nicht abschließend geklärt werden. Auf jeden Fall funktionieren beide Cmdlets nach der Prozedur vollständig ordnungsgemäß - also der Austausch hat auf die PowerCLI grundsätzlich keine Auswirkung. Vielleicht wird hier VMware / Broadcom in naher Zukunft Licht in die Sache bringen, bzw. deren Version auf eine aktuellere Variante der log4net.dll umstellen.

Kommentare

zurück zum opti-Blog

Kommentare

Einen Kommentar schreiben

Bitte rechnen Sie 6 plus 9.