Skip to the main content.

ScriptRunner Blog

Automatisiere und verwalte VMware vSphere mit PowerShell

Inhaltsverzeichnis

 

 

Post Featured Image

Es liegt wahrscheinlich daran, dass ich meine berufliche Laufbahn als Programmierer mit dem Schreiben von Gerätetreibern für Unix-Systeme in C begann, damals in den 1980er Jahren auf zeichenbasierten Green Screens (80 Spalten x 24 Zeilen!), weshalb ich die Verwaltung von IT-Systemen über eine Kommandozeile einer grafischen Benutzeroberfläche vorziehe. Ich bin kein Masochist, ich finde viele Vorgänge über eine PowerShell-Konsole wirklich einfacher und schneller als über eine (proprietäre) Benutzeroberfläche, selbst wenn diese in einem Webbrowser ausgeführt wird.

PowerShell bietet einige zusätzliche, allgemeine Vorteile gegenüber einer weniger modernen Konsole (cmd). Beachte, dass letztere keine "DOS"-Konsole ist – auch, wenn sie auf den ersten Blick danach aussieht.

Das kann eine PowerShell-Konsole auch. Und sind wir mal ehrlich: die Tage von DOS sind längst vorbei, selbst wenn man DOS immer noch über Microsoft Visual Studio Subscriber (früher MSDN) Downloads beziehen kann, und vor kurzem sogar eine neue Version von FreeDOS bereitgestellt wurde.

Zu den Vorteilen von PowerShell gehören:

  • Durchsuchbarer Befehlsverlauf über Strg+R, der über mehrere Sitzungen und Neustarts bestehen bleibt, wenn du ein dauerhaftes Windows-Benutzerprofil hast. Wenn du ein Kommando schon einmal verwendet hast, kannst du es in der Historie finden und gegebenenfalls mit veränderten Parametern wiederverwenden.
  • Die Tab-Vervollständigung von Cmdlets (PowerShell-Befehle und -Funktionen), sowohl von Cmdlet- als auch Parameternamen, in Verbindung mit bewährten Verben wie Get und Set bedeutet, dass du nur grob wissen musst, wie der Befehl heißt. Ansonsten kannst du auch einfach den Befehl Get-Command mit Platzhaltern (Wildcards) verwenden.
  • Strg+Leertaste – das ist der Turbo für Ihre Tab-Vervollständigung! 
  • Arbeitserleichterung durch integrierte Hilfe für Cmdlets – und mit dem Befehl Get-Help -Online kann man sogar die zugehörige Hilfe-Website im Browser öffnen. Wenn du "Help" eingibst, sucht PowerShell nach einem Cmdlet mit dem Verb "Get", wenn das von dir angegebene Cmdlet kein eigenständiges Cmdlet, keine Funktion oder kein Alias ist.

PowerCLI ist der Name, den VMware seinen PowerShell-Modulen gegeben hat – wovon es sage und schreibe über 70 verschiedene Module gibt. Daher der Tipp, nur die benötigten Module zu importieren, da das sonst sehr zeitaufwändig sein kann. PowerCLI umfasst alle Produkte von VMware. In diesem Artikel werde ich nur vSphere behandeln, obwohl vieles von dem, was hier steht, auch für ESXi ohne vCenter gilt.

Wenn du weißt, wie du VMware vSphere über PowerShell steuernst, kannst du als Administrator noch effizienter arbeiten. Du erreichst einen höheren Automatisierungsgrad und kannst Aufgaben so konfigurieren, dass diese bei Bedarf automatisch, ohne manuelles Eingreifen ausgeführt werden – ideal, wenn das  Wartungsfenster mitten in der Nacht liegt.

In diesem ersten Blog-Beitrag über VMware wollen wir uns mit der Installation und Einrichtung befassen, da hier womöglich einige Probleme auftreten könnten, die einen überraschen. Ich hoffe, dir den Einstieg in das Automatisieren und Verwalten von VMware vSphere mit PowerShell so verständlich und unkompliziert wie möglich zu machen.

 

Installation & Aktualisierung von PowerCLI

Man könnte annehmen, der Befehl Install-Module mit entsprechendem Scope-Parameter sollte ausreichen, um PowerCLI für alle Benutzer zu installieren. Leider muss ich dich enttäuschen. Es gibt doch einige Hürden, die in Verbindung mit der Installation auftreten können. Um Zeitverschwendung und Frustration zu vermeiden, möchte ich im Folgenden näher darauf eingehen.

Bei Updates auf neuere Versionen könnte Ihnen diese Fehlermeldung begegnen:

01_recent versions of PowerCLI have caused this error

Das liegt daran, dass sich der Zertifikatsanbieter, den VMware zum Signieren der Module verwendet, geändert hat und PowerShell dies nicht zu berücksichtigen scheint. Dies kann durch die Verwendung des Cmdlets Uninstall-Module oder durch das Löschen der Ordner für die entsprechenden VMware-Module (in "$env:ProgramFiles\WindowsPowerShell\Modules") behoben werden.

Wenn du das Microsoft Hyper-V PowerShell-Modul bereits installiert habst, wird dieser Fehler angezeigt:

02_error with Microsoft Hyper-V PowerShell module installed

Durch die Verwendung des Parameters -AllowClobber wird Hyper-V nicht überschrieben, sodass es weiterhin verwendet werden kann. Du solltest allerdings darauf achten, die richtigen Cmdlets auszuführen. Dies kann auf mehrere Arten geschehen:

  • Remove-Module -Name Hyper-V -ErrorAction SilentlyContinue
  • VMware.VimAutomation.Core\Get-VM (module qualification)
  • Import-Module -Prefix vmware_ mit Ausführung von Connect-VMware_viserver, Get-VMware_vm etc.

Um die Module auf einen Rechner zu kopieren, der nicht mit dem Internet verbundenen ist, nutze einfach die entsprechenden Modulordner eines anderen Rechners, auf dem diese bereits installiert sind.

 

Eine Verbindung herstellen 

Mit dem Cmdlet Connect-VIserver wird eine Verbindung zu einem oder mehreren vCenter- oder ESXi-Servern hergestellt. Wenn keine Anmeldeinformationen explizit als Parameter übergeben werden, wird eine Pass-Through-Authentifizierung als der Benutzer, der das Cmdlet ausführt, versucht. Wenn dies nicht möglich ist, wird empfohlen, den Parameter -Credential zu verwenden, anstatt die Anmeldeinformationen im Klartext zu übergeben, da diese unverschlüsselt im PowerShell-Verlauf gespeichert werden.

Möglicherweise wird eine Reihe von Warnungen angezeigt, die du im Voraus aber einzeln über das Cmdlet Set-PowerCLIConfiguration deaktivieren kannst. Außerdem kannst du dem Befehl Connect-VIServer den Parameter -Force mitgeben, der alle Benutzereingabeaufforderungen in der Benutzeroberfläche unterdrückt.

Berechtigungsnachweise (Credentials) können mit dem Cmdlet New-VICredentialStoreItem gespeichert werden. Sie werden automatisch an das Cmdlet Connect-VIserver übergeben, wenn es einen gespeicherten Berechtigungsnachweis für diesen Server gibt. Beachte, dass Passwörter aus diesen gespeicherten Anmeldeinformationen ausgelesen werden können, allerdings nur durch den Nutzer, der sie ursprünglich erstellt hat und nur auf dem Rechner, auf dem sie initial erstellt wurden.

Das Cmdlet Connect-VIserver gibt ein Verbindungsobjekt zurück. Prüfe, ob dieses einen anderen Wert als $null hat, bevor du fortfährst.

03_CpmmectVIserver returns a connection object

Denk daran, nach Beendigung des Vorgangs das Cmdlet Disconnect-VIserver auszuführen, und zwar mit demselben Server, mit demselben Serverparameter und der gleichen Befehlspipeline in dem vom Cmdlet Connect-VIserver zurückgegebenen Verbindungsobjekt. Gib den Parameter -Confirm:$false an, wenn du Benutzereingabeaufforderungen automatisch bestätigen möchtest.

Wenn du mehrere vCenter-Server im Einsatz haben, kannst du den Parameter -AllLinked angeben, um eine Verbindung zu allen Servern (gleichzeitig) herzustellen, sodass alle weiteren Befehle standardmäßig gegen alle ausgeführt werden. Wenn die Server nicht verknüpft sind, kannst du trotzdem eine Verbindung zu allen Servern herstellen, indem du das Cmdlet Connect-VIServer ausführst und dessen Parameter -Server eine kommaseparierte Liste der Server mitgibst. Die Liste wird dem Cmdlet als Array übergeben. Den Typ eines bestimmten Parameters kannst du leicht herausfinden, ohne auf RTFM zurückgreifen zu müssen, indem du dir eine Liste aller Parameter anzeigen lassen. Gib dafür den Cmdlet-Namen gefolgt vom Minuszeichen ein und drücken Strg+Leertaste. Mit den Pfeiltasten kannst du dann den gewünschten Parameter ansteuern und der Typ wird unten links angezeigt, etwa so:

04_parameter and type

Sei vorsichtig, wenn du dich direkt mit einem vCenter und einem ESXi-Server verbinden, da du möglicherweise doppelte Objekte zurückerhältst.

 

Fazit

In diesem Beitrag hast du gesehen, wie du die VMware PowerCLI verwenden kannst um dich damit zu einem VMware vCenter oder ESXi zu verbinden und auf welche Probleme du dabei stoßen kannst.

 

Good2know

Next-Level VMware Automatisierung mit PowerCLI

Tauche in unserem Webinar tief in die transformative Welt der VMware-Automatisierung mit PowerCLI ein – bei gleichzeitigem Einsatz der vielseitigen Fähigkeiten von ScriptRunner.

Wenn du deine Kenntnisse im Data Center Management verbessern, den IT-Betrieb optimieren und das Potential von PowerShell und PowerCLI entfesseln möchtest, dann ist dieses Webinar genau das Richtige für dich.

Erfahre, wie du mit ScriptRunner alle deine wiederkehrenden VMware-Managementaufgaben optimieren, automatisieren, delegieren und überwachen kannst.

2024_07_VMware-Webinar-Deutsch-Socials

Das zeigen wir im Webinar:

🎯 Zentralisiertes Skript- und Modulmanagement
💡 Smarte Skripterstellung mit ChatGPT und OpenAI
🔐 Sichere Verwaltung Credentials und Berechtigungen
👍 Flexible und sichere Delegation mit automatisch erstellten Webformularen
⏰ Interaktive, geplante und ereignisgesteuerte Skriptausführung
🔎 Umfassende Überwachung und Reporting

 

 

Hier entlang zur Webinaraufzeichnung!

 

Good2Know – Wissenswertes für ScriptRunner Nutzer

In unseren ActionPacks befinden sich im VMware Bereich neben den Skriptvorlagen auch zusätzlich Queries für die Nutzung in VMware.
Diese befinden sich unter: ActionPacks / VMware / _QUERY_/

Good2Know_1

Die wichtigsten Queries sind z.B:

  • QUY_Get-VMHVDatastores.ps1 - Abfrage aller VMware Datastores
  • QUY_Get-VMHVHostNames.ps1 - Abfrage aller VMware ESXI Hostnamen
  • QUY_Get-VMHVHostNames.ps1 - Abfrage aller VMs
  • QUY_Get-VMHVSnapShots.ps1 - Abfragen aller Snapshots

Diese Queries sind zum Download frei verfügbar und können direkt über die ScriptRunner-Portalanwendung heruntergeladen und eingebunden werden.

Good2Know_2

Nach dem Import kann diese als „Scripted Query“ hinzugefügt werden.

Good2Know_3

Für die Ausführung sind die VMware Anmeldedaten zu hinterlegen.

Good2Know_4

Anschließend kann die Query ausgeführt und getestet werden.

Pro-Tipp:

Je nach Umfang der Query kann es 30 Sekunden bis eine Minute dauern, bis diese erfolgreich abgeschlossen ist. Hier kann es ratsam sein, diese Query zeitlich zu schedulen, die Query also z.B. alle zehn Minuten automatisiert durchläuft. In vielen Fällen ist es gar nicht notwendig, Echtzeitdaten zu verarbeiten.

Good2Know_5

 

 

 

Weiterführende Links

Zusammenhängende Posts

7 min read

Get-View in PowerCLI – so verwaltest du deine VMware-Infrastruktur noch effizienter (Teil 3)

Teil 3 dieser Serie liefert Praxisbeispiele für den Get-View Befehl. So lässt sich Zeit sparen. 

PowerCLI ist eine...

7 min read

Effiziente VM-Verwaltung – Snapshots und Templates mit PowerCLI automatisieren (Teil 2)

In Teil 2 dieser Serie erfährst du mehr über die Anwendungsfelder von Templates und über den Umgang mit Snapshots,...

7 min read

Top PowerCLI Commands für deinen Admin‑Alltag – VM‑Inventory‑Management (Teil 1)

In Teil 1 dieser Serie erfährst du mehr über Meta-Daten in VMware und die Nutzung von Tags und Custom Attributes. 

...

Über den Autor: