Grundlegendes PowerCLI-Skripting für VMware vSphere

Zuvor haben wir uns PowerCLI angesehen – was es ist, wie man es installiert und in die Windows Powershell ISE integriert. Jetzt werfen wir einen Blick auf grundlegendes Skripting, einschließlich der Verbindung, PowerCLI-Befehle und Schleifen.

Grundlegendes PowerCLI-Skripting

Lassen Sie uns einige grundlegende PowerCLI-Befehle betrachten, um zu sehen, wie einfach es ist, Informationen aus unserer vSphere-Umgebung mit PowerCLI abzurufen. Beachten Sie, dass das Folgende keineswegs ein umfassendes Tutorial sein soll, sondern vielmehr eine Einführung in PowerCLI und wie man damit beginnt, Befehle auszuführen und Ihre Umgebung zu automatisieren.

Der erste Befehl, den wir ausführen müssen, ist der, um tatsächlich eine Verbindung zu unserer vSphere-Umgebung herzustellen. Sie können sich entweder direkt mit einem ESXi-Host oder mit dem vCenter Server verbinden.

Um eine Verbindung herzustellen, führen Sie den folgenden Befehl in einer PowerCLI-fähigen PowerShell-Sitzung aus:

  • connect-viserver –server 〈IhrServer〉

Wenn Sie den Befehl ausführen, werden Sie zur Eingabe Ihrer Anmeldeinformationen aufgefordert. Geben Sie Ihren Benutzernamen und Ihr Passwort für entweder Ihren ESXi-Server oder vCenter Server ein.

Einer der grundlegendsten Befehle, die wir ausführen können, wenn wir uns mit ESXi oder vCenter verbinden, ist das Anzeigen aller VMs in der Umgebung. Wir verwenden das Befehllet get-vm, um Informationen über die Gast-VMs anzuzeigen.

  • Get-VM - Der get-vm-Befehl listet VMs auf, die auf dem verbundenen Host ausgeführt werden

Um ausführlichere Informationen aus dem get-vm-Befehl zu erhalten, können wir die vollständigen Informationen mit dem Befehl anzeigen:

  • Get-VM | fl – Zeigt ausführlichere Informationen wie das Gastbetriebssystem, Ressourcenpools, VM-Hardwareversionsstufe, Ordner, in dem es sich befindet, und viele andere Details an.

Jetzt wollen wir spezifische nützliche Informationen aus dem Get-VM-Befehl zurückgeben. Lassen Sie uns die VMs finden, die sich im PoweredOff-Zustand befinden. Wir können Informationen aus dem Get-VM-Befehl erhalten und dann das in where-object pipen, um die spezifischen Informationen auszuwählen, nach denen wir abfragen möchten – in diesem Fall PowerState. Wie Sie sehen können, gibt es viele Möglichkeiten, verschiedene VM-Informationen zu erhalten und diese Informationen in einen anderen PowerShell-Befehl zu pipen.

  • Get-VM | where-object {$_.PowerState -eq "PoweredOff"}

Wie Sie sehen können, werden nur die VMs angezeigt, die sich im „PoweredOff“ PowerState befinden. Das kann äußerst nützlich sein. Wir können sogar das Ergebnis des obigen Befehls in den Start-VM-Befehl pipen. So können wir im Grunde genommen alle ausgeschalteten VMs abrufen und diese VMs dann einschalten.

  • Get-VM | where-object {$_.PowerState -eq "PoweredOff"} | Start-VM

Was ist mit dem Herunterfahren bestimmter VMs? Das können wir auch tun. Wir können die VM nach Namen aufrufen und dann den Stop-VMGuest-Befehl verwenden, der einen Herunterfahren des Gastbetriebssystems initiiert.

  • Get-VM 〈deinevm〉 | Stop-VMguest

Wenn Sie die Bestätigung der Aktion nicht erhalten möchten, können wir den –confirm:false-Parameter hinzufügen:

Lassen Sie uns sehen, wie viele VMs wir laufen haben, denen mehr als 1 CPU zugewiesen sind. Erneut können wir das where-object-Befehlslet verwenden, um das NumCpu-Objekt auszuwählen.

  • Get-VM | where-object {$_.NumCpu -gt 1 }

PowerCLI-Schleifen

Schleifen ermöglichen es Ihnen, dieselbe Operation mehrmals gegen ausgewählte Objekte oder für eine bestimmte Anzahl von Durchläufen auszuführen. Zum Beispiel können wir mit einer foreach-Schleife eine bestimmte Aktion mehrmals durchführen. Es ist wie im Pseudocode unten aufgebaut:

foreach ($var in $vars){
Etwas tun…
}

Wenn wir genauer angeben möchten, auf welche Objekte wir die Aktion ausführen, können wir beispielsweise eine bestimmte Liste von VMs aus einer Textdatei durchlaufen. Um die Textdatei zu füllen, können wir unser Get-VM-Befehlslet ausführen und die gewünschten Eigenschaften auswählen, dann das Ergebnis in eine Textdatei umleiten. Wir können dann PowerShell verwenden, um die Textdatei zu lesen und die VMs in ein Array zu platzieren, auf dem wir eine Aktion durchführen können. Im Folgenden fügen wir VMs in der Liste eine neue Netzwerkadapter hinzu.

Get-vm | where-object {$_.MemoryGB -eq 4 } | select -ExpandProperty Name | out-file c:\VMs.txt

$vms = get-content c:\VMs.txt

Foreach-object ($vm in $vms) {
new-networkadapter -vm $vms -NetworkName "〈Port group name〉" -Type "VMXNET3" –startconnected
}

Ressourcen

Es gibt viele großartige Ressourcen im Web, einschließlich persönlicher Blogseiten, offizieller Dokumentationen, Codebeispiele usw. Was ich festgestellt habe, ist, dass wenn Sie etwas tun möchten, höchstwahrscheinlich jemand bereits eine Zeile PowerCLI-Code geschrieben hat, die das tut, was Sie wollen. Das Gute daran ist auch, dass Sie normalerweise etwas finden können, das sehr nahe an dem liegt, was Sie tun möchten, und mit sehr geringfügigen Änderungen nach dem Erlernen der Grundlagen können Sie es an Ihre Bedürfnisse anpassen. Indem Sie dies auch tun, lernen Sie PowerCLI und wie es funktioniert, sowie wie Sie den Code ändern können, um die Aufgabe zu erledigen, die Sie erreichen müssen.

A great place to start with documentation and other resources is the official VMware PowerCLI release and documentation site. Here, you can download the binaries as well as the official User’s Guide.

Es gibt auch Unmengen von Büchern mit Skripten und Skriptbeispielen, die zerlegt und modifiziert werden können. Denken Sie auch an die Gemeinschaft von VMware-Administratoren da draußen, die größtenteils gerne das Wissen teilen, das sie von jemand anderem auf dem Weg zum Erlernen von PowerCLI gelernt haben. Wenden Sie sich an diese in Ihrer Gemeinschaft um Hilfe bei Spezifika oder einfach allgemeine Prinzipien.

Gedanken

PowerCLI ist sagenhaft leistungsstark. Wir haben nur an der Oberfläche gekratzt in den oben gezeigten Beispielen. Alle Aufgaben, die Sie wiederholt ausführen oder die umständlich im Webclient durchzuführen sind, eignen sich hervorragend für das Skripten mit PowerCLI. Tatsächlich ist das in der Regel, wie die meisten mit PowerCLI in Berührung kommen – sie haben eine Aufgabe, die sie automatisch ausführen müssen, oder eine Aktion, die auf anderen Aktionen in vSphere basiert, oder wiederkehrende Aktionen, die sich gut für das Skripten eignen.

Der beste Weg, PowerCLI zu lernen, ist, sie herunterzuladen, zu installieren und damit in einer Laborumgebung wie einem Heimlabor zu beginnen. Die wahre Kraft einer VMware vSphere-Umgebung wird nur freigesetzt, wenn Sie das Potenzial der Automatisierung zur Kontrolle von vSphere erkennen. Also fangen Sie an, mit PowerCLI zu skripten, und Sie werden nie zurückblicken!

Source:
https://www.nakivo.com/blog/basic-powercli-scripting-vmware-vsphere/