VMware PowerCLI Installation auf macOS, Ubuntu und Windows
VMware PowerCLI ist ein Command-Line und Skripting Tool basierend auf Windows PowerShell und bietet mehr als 700 Cmdlets um vSphere, vSphere Update Manager, vCloud Director, vRealize Operations Manager, vSAN, NSX-T, VMware Cloud on AWS, VMware HCX, VMware Site Recovery Manager und VMware Horizon Umgebungen verwalten und automatisieren zu können. Derzeit aktuell ist die Version 11.5.0.
Die PowerCLI eignet sich neben Administration und Automatisierung auch hervorragend zur Erstellung von Reports aller Art. Ob manuell oder per Skript und geplantem Task, mit Versand über Mail oder Ablage auf einem Fileshare, in HTML oder als CSV.
Im Nachfolgenden möchte ich kurz auf die Anforderungen und die Voraussetzungen eingehen, um anschließend die Installation auf verschiedenen Betriebssystemen (macOS, Ubuntu, Windows 10 / 2016 / 2019 / 2012 R2) zu demonstrieren.
Unterstützte Betriebssysteme
VMware PowerCLI 11.5.0 kann auf folgenden Betriebssystemen installiert werden:
OS Type | 64-Bit |
Server | Windows Server 2016 Windows Server 2012 R2 |
Workstation | Windows 10 Ubuntu 16.04 macOS 10.12 |
Unterstützte PowerShell Versionen
VMware PowerCLI 11.5.0 ist zu folgenden PowerShell Versionen kompatibel:
- Windows PowerShell 4.0
- Windows PowerShell 5.0
- Windows PowerShell 5.1
- PowerShell Core 6.x (für Ubuntu und macOS)
Installationsvoraussetzungen
Vor der Installation und Ausführung von VMware PowerCLI 11.5.0 sollte sichergestellt werden, dass die folgende erforderliche Software auf dem System vorhanden is:
OS Type | .NET Version | PowerShell Version |
---|---|---|
Windows | .NET Framework 4.5, 4.5.x, 4.6, 4.6.x or 4.7.x | Windows PowerShell 4.0, 5.0, or 5.1 |
Ubuntu | .NET Core 2.0 | PowerShell Core 6.x |
macOS | .NET Core 2.0 | PowerShell Core 6.x |
Weitere Informationen findet man unter folgendem Link:
https://code.vmware.com/web/dp/tool/vmware-powercli/
Installation unter macOS
Um PowerCLI auf dem Mac nutzen zu können, muss zuerst einmal PowerShell Core in Version 6.x installiert werden.
Bei PowerShell Core (derzeit Version 6.2.4) handelt es sich um die plattformübergreifende (macOS, Linux, Windows), Open Source Variante der PowerShell, die auf .NET Core 2.1 (ebenfalls Open Source) basiert und im Gegensatz zur Windows PowerShell (derzeit Version 5.1) aktiv weiterentwickelt wird.
Der Download steht hier zur Verfügung:
https://github.com/PowerShell/PowerShell
Unter „Get PowerShell“ wählt man für macOS ab Version 10.13 das gewünschte .pkg entweder stable oder preview. Ich entscheide mich in diesem Fall für die Stable-Variante powershell-6.2.4-osx-x64.pkg. Alternativ wäre auch eine Installation über Homebrew möglich, auf das ich in diesem Beitrag allerdings nicht weiter eingehen möchte. Eine Anleitung für PowerCLI über Homebrew findet man hier.
Ein Doppelklick auf den Download wird leider vom macOS Gatekeeper abgefangen.
Abhilfe schafft hier ein Rechtsklick bzw. Sekundärklick auf den Installer und durch bestätigen von Öffnen wird die Installationsroutine schließlich auch gestartet.
Nach erfolgreicher Installation
kann man noch darüber entscheiden, ob man den Installer behalten oder in den Papierkorb legen möchte und findet zudem im Launchpad einen PowerShell Starter.
Alternativ lässt sich PowerShell Core durch Eingabe von
pwsh
in einem Terminal starten. Mit
$PSVersionTable
kann man sich einen Überblick über die eingesetzte Version verschaffen. Ob Skript-Ausführung (notwendig für PowerCLI) erlaubt ist, lässt sich mit
Get-ExecutionPolicy
prüfen. Die Execution Policy bei PowerShell Core ist standardmäßig auf Unrestricted gesetzt und kann auch nicht geändert werden.
Die Installation von PowerCLI erfolgt mit folgenden Befehl:
Install-Module -Name VMware.PowerCLI -Scope CurrentUser
Der angegebene Parameter -Scope CurrentUser bewirkt, dass PowerCLI auch ohne Administratorrechte installiert werden kann. Die Frage zum Untrusted repository ‚PSGallery‘ wird mit Y bestätigt und im Anschluss werden die PowerCLI Module geladen und installiert.
Hinweis:
Wenn man eine bestimmte, ältere Version der PowerCLI oder einer Dependency installieren möchte, kann man sich alle verfügbaren Versionen folgendermaßen anzeigen lassen und anschließend die gewünschte installieren:
Find-Module VMware.PowerCLI -AllVersions
Install-Module -Name VMware.PowerCLI -Scope CurrentUser -RequiredVersion 11.5.0.14912921
Als nächsten Schritt sollte man noch folgendes durchführen:
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $true -InvalidCertificateAction Ignore
Zum einen entscheidet man damit über die freiwillige Teilnahme am VMware Customer Experience Program ($true oder $false) und zum anderen ignoriert man damit Zertifikatswarnungen, die beim Verwenden von den standardmäßigen Self-signed bzw. VMCA Zertifikaten von vCenter, ESXi, … auftreten und eine erfolgreiche Verbindungsherstellung unterbinden würden. Bei PowerShell Core nur Fail oder Ignore möglich. Näheres hierzu erhält man mit
help about_ceip
und
help about_invalid_certificates
Die PowerCLI-Config kann man sich mit
Get-PowerCLIConfiguration
anzeigen lassen. Ansonsten findet man sie auch in der Datei PowerCLI_Settings.xml (s.unten).
Durch Eingabe von
Get-Module -Name VMware.* -ListAvailable
kann man sich die installierten Module inkl. Versionen anzeigen lassen.
Nun aber endgültig zum eigentlichen Start und der Nutzung der PowerCLI. Leider sind derzeit noch nicht alle PowerCLI Module mit PowerShell Core kompatibel, wodurch beim Start
Import-Module VMware.PowerCLI
folgende Fehlermeldung auftritt:
„Exception: VMware.VimAutomation.License module is not currently supported on the Core edition of PowerShell.“
Derzeit noch nicht unter PowerShell Core supportet:
- VMware.VimAutomation.License (Provides the Get-LicenseDataManager cmdlet for managing VMware License components.)
- VMware.VimAutomation.vROps (Provides cmdlets for automating vRealize Operations Manager features.)
- VMware.VimAutomation.HorizonView
- VMware.ImageBuilder (Provides cmdlets for managing depots, image profiles, and VIBs.)
- VMware.DeployAutomation (Provides cmdlets that provide an interface to VMware Auto Deploy for provisioning physical hosts with ESXi software.)
- VMware.VumAutomation (Provides cmdlets for automating vSphere Update Manager features.)
Wer eines dieser Module benötigt ist leider noch auf die Verwendung der Windows PowerShell angewiesen.
Für PowerShell Core wird in den Release Notes von PowerCLI daher als Workaround empfohlen die gewünschten, unterstützen Module direkt aufzurufen.
Import-Module VMware.VimAutomation.Core
Etwas eleganter ist allerdings die Variante die inkompatiblen Module im PowerCLI Start-Skript auszukommentieren:
vi ~/.local/share/powershell/Modules/VMware.PowerCLI/11.5.0.14912921/VMware.PowerCLI.psd1
Tipp: In vim/vi kann man Zeilennummern und Syntax Highlighting mit
:set number -> Enter
:syntax on -> Enter
aktivieren.
Anschließend lässt sich PowerCLI auch mit PowerShell Core wie gewohnt und ohne Fehlermeldung starten.
Import-Module VMware.PowerCLI
Die Konfigurationsdatei PowerCLI_Settings.xml findet man unter diesem Pfad:
~/Library/Preferences/VMware/PowerCLI/
Installation unter Ubuntu 18.04
Die Installation von PowerShell und PowerCLI erfolgt auf einem vollständig gepatchten Ubuntu 18.04.4 LTS (Bionic Beaver).
Ich verwende analog zur macOS Installation hier ebenfalls den direkten Download anstelle eines Repositorys. Wer jedoch lieber die Paketquelle verwenden möchte findet die Anleitung dazu hier.
In einem geöffneten Terminal oder auf der Console werden folgende Befehle ausgeführt:
cd ~/Downloads
wget -q https://github.com/PowerShell/PowerShell/releases/download/v6.2.4/powershell_6.2.4-1.ubuntu.18.04_amd64.deb
Im Anschluss wird PowerShell Core installiert:
sudo dpkg -i powershell_6.2.4-1.ubuntu.18.04_amd64.deb
Bei der Abfrage des sudo Passworts bitte das Kennwort aktuellen Benutzers eingeben.
Die dpkg-Fehlermeldung war so zu erwarten, da powershell Abhängigkeiten zu anderen Paketen hat, die mit nachfolgendem Befehl aufgelöst werden können:
sudo apt-get install -f
Die Frage „Möchten Sie fortfahren?“ mit J bestätigen.
Nach Installation der fehlenden Pakete liblttng-ust-ctl4, liblttng-ust0, liburcu6 wird auch powershell erfolgreich eingerichtet und PowerShell Core kann gestartet werden:
pwsh
Die Installation von PowerCLI erfolgt analog zu macOS (s. oben).
Die Konfigurationsdatei PowerCLI_Settings.xml findet man unter diesem Pfad:
~/.local/share/VMware/PowerCLI/
Installation unter Windows 10
Unter Windows 10 (getestet unter Version 1909 OS build 18363.720) sind alle notwendigen Voraussetzungen bereits vorhanden. Theoretisch könnte man zwar auch unter Windows die PowerShell Core installieren und parallel zur Windows PowerShell nutzen, aber aufgrund der noch unvollständigen Unterstützung einiger PowerCLI Module (s. oben) macht dies derzeit nur bedingt Sinn.
$PSVersionTable
Die Windows PowerShell liegt hier in Version 5.1.18362.628 vor und erfüllt somit alle Anforderungen. Einzig die Execution Policy sollte vor der Installation von PowerCLI noch geprüft werden.
Get-ExecutionPolicy
Standardmäßig steht die Execution Policy auf Restricted und würde somit die Ausführung von PowerCLI unterbinden. Mit folgendem Befehl lässt sich dies korrigieren:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Die Installation von PowerCLI erfolgt dann mit:
Install-Module -Name VMware.PowerCLI -Scope CurrentUser
Die Abfragen zu „NuGet provider“ und „Untrusted repository“ einfach mit „Y“ [Yes] beantworten.
Nachdem die Installation abgeschlossen ist, setzt man noch die Parameter für CEIP (Customer Experience Improvement Program) und die Zertifikatsprüfung. Bestätigung auch hier mit „Y“ [Yes] (Erläuterung s. oben)
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $true -InvalidCertificateAction Ignore
Abschließend startet man die PowerCLI mit folgendem Cmdlet:
Import-Module VMware.PowerCLI
Installation unter Windows Server 2016 / 2019
Auch Windows Server 2016 und 2019 erfüllen bereits alle Voraussetzungen für die Installation von PowerCLI.
$PSVersionTable
Server 2016 (Version 1607 OS build 14393.3564):
PSVersion = 5.1.14393.3471
Server 2019 (Version 1809 OS build 17763.1098):
PSVersion = 5.1.17763.1007
Get-ExecutionPolicy
Die Execution Policy ist unter Server 2016 und 2019 bereits standardmäßig RemoteSigned.
Ansonsten erfolgt die Installation der PowerCLI analog zu Windows 10 (s. oben).
Installation unter Windows Server 2012 R2
Bei Windows Server 2012 R2 (Version 6.3.9600 Build 9600) verhält es sich etwas anders. Ein
$PSVersionTable
ergibt, dass Windows PowerShell hier in der Version 4.0 vorliegt. Was erstmal eigentlich kein Problem darstellt, da offiziell unterstützt, allerdings erkennt Windows PowerShell 4.0 das Install-Module Cmdlet nicht. Fehlermeldung: „Install–Module : The term ‚Install–Module‚ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, …„
Dieser Umstand lässt sich durch die Installation des Windows Management Framework 5.1 beheben. Den Download findet man hier:
https://www.microsoft.com/en-us/download/details.aspx?id=54616
Hier wählt man den passenden Download für 2012 R2 „Win8.1AndW2K12R2-KB3191564-x64.msu“ aus und klickt auf Next. WMF 5.1 steht übrigens auch für Windows 7 SP1, 8.1, Server 2008 R2 SP1 und 2012 zur Verfügung.
Die heruntergeladene Datei wird anschließend mit Administrator-Rechten wie gewohnt installiert. Zum Abschluss muss ein Neustart durchgeführt werden.
Nun meldet man sich mit dem Benutzer, unter dem PowerCLI installiert und genutzt werden soll, an.
Prüft mit
$PSVersionTable
erneut die PowerShell Version (jetzt 5.1.14409.1005) und stellt mit
Get-ExecutionPolicy
sicher, dass RemoteSigned konfiguriert ist.
Die Installation von PowerCLI verläuft identisch zu Windows 10 (s. oben).