Info2soft verwendet Cookies, um Ihnen ein besseres und angenehmeres Surferlebnis auf unserer Website zu ermöglichen. Datenschutzerklärung
Wird geladen...
Die Verwaltung von VMware-Umgebungen über den vSphere Client funktioniert gut für kleine Bereitstellungen. Wenn Ihre Infrastruktur jedoch wächst, wird die manuelle Administration schnell ineffizient. VMware PowerCLI bietet eine leistungsstarke Möglichkeit, Routineaufgaben zu automatisieren, mehrere Hosts und virtuelle Maschinen zu verwalten sowie Massenoperationen mühelos durchzuführen.
Dieser Leitfaden zeigt Ihnen Schritt für Schritt, wie Sie PowerCLI installieren, eine Verbindung zu Ihrer vSphere-Umgebung herstellen und grundlegende Befehle sowie sofort ausführbare Skripte verwenden, um tägliche VMware-Aufgaben zu automatisieren.
PowerCLI ist eine Befehlszeilenschnittstelle zur Verwaltung und Automatisierung jeder Ebene einer VMware-Umgebung. Es besteht aus einer Sammlung von PowerShell-Modulen mit über 700 Cmdlets, die alle Bereiche abdecken – von Netzwerk und Speicher bis hin zu virtuellen Maschinen und Gastbetriebssystemeinstellungen.
PowerShell ist das zugrundeliegende Automatisierungsframework von Microsoft. PowerCLI erweitert es um VMware-spezifische Funktionen. Dadurch können Sie standardmäßige PowerShell-Logik (Schleifen, Bedingungen, Variablen) gemeinsam mit VMware-spezifischen Aktionen in einem einzigen Skript verwenden.
PowerCLI unterstützt eine breite Palette von VMware-Produkten, darunter:
Vergleich von PowerCLI mit anderen VMware-Automatisierungstools
| Tool | Einsatzzweck | Lernaufwand | VMware-nativ? | Zustandsbehaftet? |
|---|---|---|---|---|
| PowerCLI | vSphere-Automatisierung, Berichterstellung, laufender Betrieb | Niedrig–Mittel | Ja | Nein |
| Ansible | Konfigurationsverwaltung, plattformübergreifende Playbooks | Mittel | Über Modul | Nein |
| Terraform | Infrastruktur-Bereitstellung (IaC) | Mittel–Hoch | Über Provider | Ja |
| vSphere REST API | Integration benutzerdefinierter Anwendungen, Entwicklerworkflows | Hoch | Ja | Nein |
Für Administratoren, die bereits mit PowerShell vertraut sind, ist der Einstieg in PowerCLI am einfachsten. Tools wie Terraform zeichnen sich zwar durch die Bereitstellung von Infrastruktur aus, doch PowerCLI eignet sich besser für laufende Betriebsaufgaben: Massenaktualisierungen, schnelle Berichte und Ad-hoc-Fehlerbehebung ohne den Aufwand für die Verwaltung von Zustandsdateien.
Die Installation von PowerCLI ist unkompliziert. Wenn Sie jedoch zuerst die Voraussetzungen erfüllen, vermeiden Sie später häufige Fehler.
-Scope CurrentUser.Dies ist die einfachste Möglichkeit, PowerCLI einzurichten. Es lädt die aktuelle Version direkt aus dem PowerShell Gallery herunter.
Install-Module -Name VCF.PowerCLI
Install-Module -Name VCF.PowerCLI -Scope CurrentUser
Get-Module -Name VCF.PowerCLI -ListAvailable
Bei erfolgreicher Ausführung werden die verfügbaren Module inklusive Versionsnummer und Installationsverzeichnis angezeigt.
Verwenden Sie diese Methode, wenn der Zielcomputer keinen Internetzugriff hat.
$env:PSModulePath
cd Pfad_zum_PowerShell_Modulordner
Get-ChildItem * -Recurse | Unblock-File
Get-Module -Name VCF.PowerCLI -ListAvailable
Nach der Installation ist der erste Schritt das Herstellen einer Verbindung zu Ihrer VMware-Umgebung. Sie können sich direkt mit einem einzelnen ESXi-Host verbinden, um lokale Fehler zu beheben. Die meisten Administratoren stellen jedoch eine Verbindung zum vCenter Server her, um den gesamten Cluster über eine einzige Sitzung zu verwalten.
Das Cmdlet Connect-VIServer erstellt eine Sitzung zwischen Ihrem Arbeitsplatz und der vSphere-API. Nach erfolgreicher Verbindung wird der Server in der Variable $DefaultVIServers gespeichert, sodass nachfolgende Cmdlets automatisch gegen diesen Server ausgeführt werden.
# Verbindung zum vCenter Server herstellen
Connect-VIServer -Server vcenter.example.com
Wenn Ihre Windows-Sitzungsanmeldeinformationen über die erforderlichen Berechtigungen verfügen, stellt PowerCLI die Verbindung ohne Abfrage her. Andernfalls wird ein Anmeldefenster angezeigt.
Standardmäßig gibt PowerCLI Warnungen aus oder blockiert Verbindungen bei nicht vertrauenswürdigen Zertifikaten – ein häufiger Fall in Testumgebungen mit selbst signierten Zertifikaten. Um das Verhalten von PowerCLI hierfür anzupassen, führen Sie folgenden Befehl einmalig vor der Verbindungsherstellung aus:
# PowerCLI anweisen, Zertifikatsfehler zu ignorieren
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
Ignore nur in Test- oder vertrauenswürdigen internen Umgebungen. In Produktivumgebungen empfehlt sich die Verwendung ordnungsgemäß signierter Zertifikate statt das Deaktivieren der Zertifikatsprüfung.Das Festcodieren von Passwörtern in Skripte ist ein typischer Anfängerfehler und birgt erhebliche Sicherheitsrisiken. Verwenden Sie stattdessen Get-Credential, um Anmeldedaten interaktiv als verschlüsseltes Objekt im Arbeitsspeicher abzulegen.
# Abfrage der Anmeldedaten und Speicherung
$myCreds = Get-Credential
# Verwendung der gespeicherten Anmeldedaten zur Verbindungsherstellung
Connect-VIServer -Server vcenter.example.com -Credential $myCreds
VICredentialStore (über New-VICredentialStoreItem) oder das PowerShell-Modul SecretManagement, um Anmeldedaten sicher zu speichern und abzurufen.Jeder Aufruf von Connect-VIServer reserviert eine Sitzung auf dem Server. Ressourcen bleiben geöffnet, bis Sie die Verbindung explizit trennen. Schließen Sie daher stets die Sitzung am Ende Ihrer Arbeit oder Ihres Skripts.
# Trennen aller aktiven Serververbindungen
Disconnect-VIServer -Server * -Confirm:$false
Disconnect-VIServer nur die letzte Verbindung zu einem Server. Wenn Sie mehrere Verbindungen zum selben Server geöffnet haben, fügen Sie den Parameter -Force hinzu, um alle gleichzeitig zu schließen.Nach der Verbindung zum vCenter können Sie mit PowerCLI-Cmdlets die gesamte Infrastruktur über die Befehlszeile verwalten. Im Gegensatz zur grafischen Oberfläche lassen sich mit diesen Befehlen innerhalb weniger Sekunden Daten aus der gesamten Umgebung abrufen und direkt an Berichte oder automatisierte Arbeitsabläufe weitergeben.
Diese Cmdlets decken die gängigsten täglichen VM-Aufgaben ab – von der Statusabfrage bis zur Bereitstellung neuer Ressourcen.
Where-Object können Sie nach beliebigen Eigenschaften filtern. # Alle laufenden VMs auflisten
Get-VM | Where-Object {$_.PowerState -eq "PoweredOn"}
Start-VM -VM "Web-Server-01" -Confirm:$false
New-VM -Name "Test-VM" -ResourcePool "Development" -Datastore "DS-01"
Remove-VM -VM "Test-VM" -DeletePermanently -Confirm:$false
Rufen Sie ESXi-Host-Informationen ab oder versetzen Sie einen Host in den Wartungsmodus, ohne die vCenter-GUI zu öffnen.
Get-VMHost | Select-Object Name, ConnectionState, PowerState
Set-VMHost -VMHost "esxi-01.example.com" -State "Maintenance"
Snapshots eignen sich hervorragend vor Patches oder größeren Änderungen. Unkontrollierte Anhäufungen von Snapshots können jedoch schnell Speicherplatz auf dem Datastore belegen. Mit diesen Cmdlets behalten Sie die Übersicht.
# Einen Snapshot erstellen
Get-VM "DB-Prod" | New-Snapshot -Name "Pre-Patching"
# Alle Snapshots aller VMs auflisten
Get-VM | Get-Snapshot
# Einen bestimmten Snapshot entfernen
Get-Snapshot -VM "DB-Prod" | Remove-Snapshot -Confirm:$false
Die eigentliche Stärke von PowerCLI liegt in der Kombination von Cmdlets mit der PowerShell-Pipeline. Mit den Cmdlets Where-Object und Select-Object können Sie Ausgaben filtern und strukturieren – ohne zusätzliche Tools.
Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"} | Select-Object Name, MemoryGB
Get-VM | Select-Object Name, NumCPUs, MemoryGB, PowerState | Export-Csv -Path "C:\Reports\VM_Inventory.csv" -NoTypeInformation
Speicher und Netzwerk
Get-Datastore | Select-Object Name, FreeSpaceGB, CapacityGB
# Alle standardmäßigen virtuellen Switches auflisten
Get-VirtualSwitch
# Alle verteilten virtuellen Switches auflisten
Get-VDSwitch
-WhatIf, um zu prüfen, ob Sie die korrekten Objekte auswählen.Einzelbefehle sind nützlich, doch Automatisierungsskripte sparen echte Arbeitszeit. Die nachfolgenden Skripte decken die gängigsten Wartungs- und Berichtsaufgaben ab und lassen sich mit minimalen Änderungen sofort ausführen.
Dieses Skript exportiert ein vollständiges VM-Inventar in eine datumsgestempelte CSV-Datei, nützlich für Kapazitätsplanung oder Managementberichte.
# Ruft alle VMs ab und exportiert Ressourcendaten in eine CSV-Datei
Get-VM | Select-Object Name, NumCPUs, MemoryGB, PowerState,
@{N="Datastore"; E={(Get-Datastore -VM $_).Name}},
@{N="IPAddress"; E={$_.Guest.IPAddress[0]}} |
Export-Csv -Path "C:\Reports\VM_Inventory_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
Dieses Skript erstellt für jede VM eines Zielclusters einen benannten Snapshot vor dem Patchen. Dadurch erhalten Sie einen sauberen Wiederherstellungspunkt bei Problemen.
# Zielcluster definieren
$clusterName = "Production-Cluster-01"
# Zeitgestempelten Snapshot für alle VMs im Cluster erstellen
Get-Cluster -Name $clusterName | Get-VM |
New-Snapshot -Name "Pre-Patching-$(Get-Date -Format 'yyyyMMdd')" `
-Description "Automatischer Snapshot vor monatlichem Patchen" `
-Quiesce:$false -Memory:$false
-Quiesce erfordert installierte und laufende VMware Tools auf jedem Gastbetriebssystem. Fehlen die Tools, gibt der Befehl einen Fehler aus. Setzen Sie -Quiesce:$false, es sei denn, Sie bestätigen, dass alle Ziel-VMs mit VMware Tools ausgestattet sind.Zu lange gespeicherte Snapshots belegen Speicherplatz und können langfristig die Leistung der VMs beeinträchtigen. Dieses Skript listet alle Snapshots auf, die älter als sieben Tage sind, damit Sie diese prüfen und bereinigen können.
# Alle Snapshots älter als 7 Tage suchen
$limit = (Get-Date).AddDays(-7)
Get-VM | Get-Snapshot | Where-Object { $_.Created -lt $limit } |
Select-Object VM, Name, Created, SizeGB |
Sort-Object Created
Wenn Ihre VMs nach Ordnern organisiert sind (z. B. Testlabor oder Abteilung), können Sie alle VMs eines Ordners mit einem einzigen Befehl ein- oder ausschalten.
# Einschalten aller ausgeschalteten VMs im Ordner "Dev-Lab"
Get-Folder "Dev-Lab" | Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"} | Start-VM -Confirm:$false
Dieses Skript versetzt einen Host in den Wartungsmodus. Der Parameter -Evacuate löst vMotion aus, um alle laufenden VMs vor dem Eintritt des Hosts in den Wartungsmodus auf andere Cluster-Hosts zu migrieren.
$targetHost = "esxi-hostname.example.com"
# Alle VMs migrieren und Host in den Wartungsmodus versetzen
Set-VMHost -VMHost $targetHost -State "Maintenance" -Evacuate
Dieses Skript markiert alle Datastores mit weniger als 50 GB freiem Speicherplatz. Dadurch erkennen Sie Speicherprobleme frühzeitig, bevor es zu VM-Ausfällen kommt.
# Datastores mit weniger als 50 GB freiem Speicher auflisten
Get-Datastore | Where-Object { $_.FreeSpaceGB -lt 50 } |
Select-Object Name,
@{N="FreeGB"; E={[Math]::Round($_.FreeSpaceGB, 2)}},
@{N="CapacityGB"; E={[Math]::Round($_.CapacityGB, 2)}} |
Format-Table -AutoSize
Selbst erfahrene Administratoren stoßen auf PowerCLI-Fehler – insbesondere bei Zertifikaten, Sicherheitsrichtlinien oder Versionsaktualisierungen. Hier sind die häufigsten Probleme und deren Lösungen.
SSL-Zertifikatsfehler bei der Verbindungsherstellung
Dieser Fehler tritt auf, wenn Ihr vCenter oder ESXi-Host ein selbst signiertes Zertifikat verwendet, das von Ihrem Arbeitsplatz nicht vertraut wird. Um die Verbindung ohne Prüfung der Zertifikatkette zu ermöglichen, führen Sie folgenden Befehl einmalig vor der Verbindungsherstellung aus:
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
Modul nicht gefunden
Dies bedeutet meist, dass das Modul in Ihrer aktuellen Sitzung nicht geladen ist oder der Installationspfad nicht in der Systemvariable $env:PSModulePath hinterlegt ist. Versuchen Sie das Modul manuell zu laden:
Import-Module VCF.PowerCLI
Wenn dies fehlschlägt, prüfen Sie, ob bei der Offline-Installation die Modulordner korrekt entpackt wurden und deren Namen exakt mit den Modulbezeichnungen übereinstimmen.
Ausführung von Skripten blockiert
Die Windows-Ausführungsrichtlinie ist standardmäßig auf Restricted eingestellt und blockiert alle Skriptausführungen. Öffnen Sie PowerShell als Administrator und führen Sie folgenden Befehl aus:
Set-ExecutionPolicy RemoteSigned
Dadurch werden lokal erstellte Skripte ausgeführt, während aus dem Internet heruntergeladene Skripte eine digitale Signatur erfordern.
Ungültige Anmeldedaten bei geplanten Aufgaben
Dieser Fehler tritt typischerweise auf, wenn ein Skript in einer nicht interaktiven Hintergrundsitzung eine interaktive Anmeldung durchführen soll oder gespeicherte Anmeldeobjekte abgelaufen sind. Verzichten Sie auf interaktive Abfragen, speichern Sie stattdessen Ihre Anmeldedaten in einer verschlüsselten Datei und laden Sie diese im Skript:
# Einmaliges Speichern der Anmeldedaten
$cred = Get-Credential
$cred | Export-Clixml -Path "C:\Scripts\cred.xml"
# Laden der Anmeldedaten im Skript
$cred = Import-Clixml -Path "C:\Scripts\cred.xml"
Connect-VIServer -Server vcenter.example.com -Credential $cred
Warnung wegen veralteter Cmdlets
Broadcom stellt regelmäßig alte Cmdlets außer Betrieb, um neue vSphere-API-Standards zu verwenden. Die Warnmeldung gibt in der Regel an, welches Ersatz-Cmdlet verwendet werden soll. Die aktuellste Liste aller Änderungen finden Sie in den PowerCLI-Versionshinweisen auf dem Broadcom Developer-Portal.
PowerCLI gewährt Ihnen leistungsstarke Kontrolle über Ihre VMware-Umgebung, doch Skripte allein schützen Sie nicht vor Datenverlust.
Die Automatisierung von Snapshots und die Erstellung von Inventarberichten sind gute Betriebsgewohnheiten, aber Snapshots sind keine Backups. Sie liegen auf demselben Datastore wie Ihre VMs – ein Speicherausfall zerstört beide gleichzeitig.
Echten Schutz erhalten Sie durch eine dedizierte Backup-Lösung, die parallel zu Ihren Automatisierungen arbeitet. Hier kommt i2Backup ins Spiel.
i2Backup ist eine Enterprise-Backup-Lösung, entwickelt für die Umgebungen, die PowerCLI-Administratoren täglich verwalten: VMware-Infrastrukturen, physische Server und Datenbanken in lokalen und hybriden Cloud-Umgebungen.
Für Umgebungen, die über Backups hinaus mehr benötigen, bietet i2Availability Echtzeit-Replikation und automatisches Failover für Hochverfügbarkeit. i2Migration unterstützt unterbrechungsfreie plattformübergreifende Migrationen, falls Sie Arbeitslasten in die Cloud oder auf eine neue Infrastruktur verlagern möchten. Klicken Sie auf den untenstehenden Button, um eine kostenlose Testversion der Info2soft-Lösungen anzufordern.
Mit PowerCLI wandeln Sie zeitaufwendige, sich wiederholende vSphere-Aufgaben in automatisierte, wiederverwendbare Skripte um. Von der Verbindung zum vCenter und grundlegenden Cmdlets bis hin zu Massenberichten und Wartungsworkflows vermittelt dieser Leitfaden eine solide Grundlage für die Verwaltung von VMware-Infrastrukturen über die Befehlszeile.
Ein guter nächster Schritt: Wählen Sie eine manuelle Aufgabe aus, die Sie regelmäßig durchführen – sei es das Erstellen eines VM-Inventars oder das Anlegen von Snapshots vor Patches – und erstellen Sie Ihr erstes PowerCLI-Skript. Sobald Sie sehen, wie viel Zeit es spart, folgen weitere Automatisierungen von selbst.
Beachten Sie stets: Automatisierung kümmert sich um Betriebsabläufe, nicht um Datenschutz. Kombinieren Sie Ihre PowerCLI-Workflows mit einer dedizierten Backup-Lösung wie i2Backup von Info2soft, um Ihre Umgebung umfassend abzusichern.