Grundlegende PowerCLI-Skripterstellung für VMware vSphere

Zuvor haben wir uns mit PowerCLI befasst – was es ist, wie man es installiert und wie man es in Windows Powershell ISE integriert. Nun wollen wir uns mit grundlegenden Skripten befassen, darunter Verbinden, PowerCLI-Befehlslet-Befehle sowie Schleifen.

NAKIVO for VMware vSphere Backup

NAKIVO for VMware vSphere Backup

Complete data protection for VMware vSphere VMs and instant recovery options. Secure backup targets onsite, offsite and in the cloud. Anti-ransomware features.

Grundlegende PowerCLI-Skripte

Sehen wir uns einige grundlegende PowerCLI-Befehlslet-Befehle an, um zu zeigen, wie einfach es ist, mit PowerCLI Informationen von unserer vSphere-Umgebung abzurufen. Beachten Sie, dass es sich hierbei keineswegs um ein umfassendes Tutorial handelt, sondern vielmehr um eine Einführung in PowerCLI und darum, wie Sie mit der Ausführung von Befehlssätzen beginnen und lernen können, Ihre Umgebung zu automatisieren.

Der erste Befehlssatz, den wir ausführen müssen, ist derjenige, mit dem wir tatsächlich mit dem Verbinden mit unserer vSphere-Umgebung beginnen. Sie können entweder eine direkte Verbindung zu einem ESXi-Host oder zu vCenter Server herstellen.

Um sich zu verbinden, führen Sie den folgenden Befehl in einer PowerCLI-aktivierten PowerShell-Sitzung aus:

  • connect-viserver –server 〈yourserver〉

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

Basic PowerCLI scripting

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

  • Get-VM - The get-vm commandlet lists VMs running on the connected host

get-vm commandlet

Um ausführlichere Informationen vom Befehl „ <“ > zu erhalten, können wir die vollständigen Informationen mit dem folgenden Befehl anzeigen: „
<“ >

  • Get-VM | fl – Zeigt ausführlichere Informationen an, wie z. B. das Gastbetriebssystem, Ressourcenpools, die Version der VM-Hardware, den Ordner, in dem sie sich befindet, und viele andere Details.
  • Get VM Full Information

    Nun wollen wir spezifische nützliche Informationen von dem Befehl Get-VM abrufen. Suchen wir die VMs, die sich im Status „PoweredOff“ befinden. Wir können Informationen von dem Befehl Get-VM abrufen und diese dann in where-object weiterleiten, um die spezifischen Informationen auszuwählen, die wir abfragen möchten – in diesem Fall PowerState. Wie Sie sehen, gibt es unzählige Möglichkeiten, verschiedene VM-Informationen abzurufen und diese Informationen in ein anderes PowerShell-Befehlselement zu leiten.

    • Get-VM | where-object {$_.PowerState –eq “PoweredOff”}

    Get-VM PowerState

    Wie Sie sehen, wird hier nur die Anzeige der VMs angezeigt, die sich im PowerState „PoweredOff” befinden. Dies kann äußerst nützlich sein. Wir können das Ergebnis des obigen Befehls sogar in das Start-VM Commandlet einleiten. Im Wesentlichen können wir also alle ausgeschalteten VMs abrufen und diese VMs dann einschalten.

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

    Start-VM commandlet

    Wie sieht es mit dem Herunterfahren bestimmter VMs aus? Auch das ist möglich. Wir können die VM anhand ihres Namens aufrufen und dann das Stop-VMGuest Befehlselement verwenden, das das Herunterfahren des Gastbetriebssystems initiiert.

    • Get-VM 〈yourvm〉 | Stop-VMguest

    Stop-VMguest commandlet

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

    Stop-VMguest –confirm:false

    Angenommen, wir möchten sehen, wie viele VMs wir haben, denen mehr als 1 CPU zugewiesen ist. Auch hier können wir das where-object Befehlselement verwenden, um das NumCpu Objekt auszuwählen.

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

    where-object commandlet

    PowerCLI-Schleifen

    Mit Schleifen können Sie denselben Vorgang mal für ausgewählte Objekte oder mal für eine bestimmte Anzahl von Durchläufen ausführen. Mit einer foreach-Schleife können wir beispielsweise eine bestimmte Aktion mal wiederholen. Die Einrichtung erfolgt wie im folgenden Pseudocode gezeigt:

    foreach ($var in $vars){
    Do something…
    }

    Wenn wir genau festlegen möchten, auf welche Objekte die Aktion angewendet werden soll, können wir beispielsweise eine bestimmte Liste von VMs von einer Textdatei durchlaufen. Um die Textdatei zu füllen, können wir unser Get-VM Commandlet ausführen, die gewünschten Eigenschaften auswählen und diese dann in eine Textdatei leiten. Anschließend können wir PowerShell verwenden, um die Textdatei zu lesen und die VMs in ein Array zu platzieren, das wir durchlaufen und eine Aktion ausführen können. Im Folgenden fügen wir den VMs in der Liste einen neuen 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

    Im Internet gibt es viele großartige Ressourcen, darunter persönliche Blogs, offizielle Dokumentationen, Code-Beispiele usw. Ich habe festgestellt, dass es höchstwahrscheinlich jemanden gibt, der bereits eine PowerCLI-Codezeile geschrieben hat, die das tut, was Sie tun möchten, wenn Sie sich etwas vorstellen können, das Sie tun möchten. Das Gute daran ist auch, dass Sie in der Regel etwas finden können, das Ihren Vorstellungen sehr nahe kommt, und dass Sie es nach dem Erlernen der Grundlagen mit nur wenigen Änderungen an Ihre Bedürfnisse anpassen können. Auf diese Weise lernen Sie PowerCLI und seine Funktionsweise kennen und erfahren, wie Sie den Code anpassen können, um die gewünschte Aufgabe auszuführen.

    Ein guter Ausgangspunkt für Dokumentationen und andere Ressourcen ist die offizielle Website von VMware PowerCLI mit Releases und Dokumentationen. Hier können Sie die Binärdateien sowie das offizielle Benutzerhandbuch herunterladen.

    Es gibt auch zahlreiche Bücher mit Skripten und Skriptbeispielen, die analysiert und angepasst werden können. Denken Sie daran, dass es eine Community von VMware-Administratoren gibt, die größtenteils gerne ihr Wissen teilen, das sie von anderen auf ihrem Weg zum PowerCLI-Experten erworben haben. Wenden Sie sich an diese Community-Mitglieder, wenn Sie Hilfe zu bestimmten Themen oder allgemeinen Grundsätzen benötigen.

    Gedanken

    PowerCLI ist, gelinde gesagt, sehr leistungsstark. Die oben gezeigten Beispiele kratzen nur an der Oberfläche. Alle Aufgaben, die Sie wiederholt ausführen oder die im Web-Client mühsam sind, eignen sich hervorragend für die Skripterstellung mit PowerCLI. Tatsächlich lernen die meisten PowerCLI auf diese Weise kennen – sie haben eine Aufgabe, die sie automatisch ausführen müssen, oder eine Aktion, die auf anderen Aktionen in vSphere basiert, oder wiederholte Aktionen, die sich gut für die Skripterstellung eignen.

    Der beste Weg, PowerCLI zu erlernen, besteht darin, es herunterzuladen, zu installieren und in einer Laborumgebung wie einem Heimlabor zu verwenden. Die wahre Leistungsfähigkeit einer VMware vSphere-Umgebung wird erst dann sichtbar, wenn Sie das Potenzial der Automatisierung zur Steuerung von vSphere erkennen. Beginnen Sie also mit der Skripterstellung mit PowerCLI, und Sie werden es nie bereuen!

    Try NAKIVO Backup & Replication

    Try NAKIVO Backup & Replication

    Get a free trial to explore all the solution’s data protection capabilities. 15 days for free. Zero feature or capacity limitations. No credit card required.

    Empfohlene Artikel