Wichtige Hyper-V-PowerShell-Befehle: Was sie sind und wie man sie verwendet

Das Verwalten von Hyper-V-Umgebungen kann eine anspruchsvolle Aufgabe sein. Daher benötigen Sie ein leistungsstarkes Verwaltungstool, um Ihre virtuelle Infrastruktur von einer zentralen Konsole aus zu konfigurieren und zu steuern. Neben der grafischen Benutzeroberfläche bietet Hyper-V eine Befehlszeilenschnittstelle, die PowerShell zur Hyper-V-Verwaltung verwendet.

In diesem Blogbeitrag beschreiben wir, wie PowerShell funktioniert, welche Hyper-V-PowerShell-Befehle die Leistung virtueller Maschinen (VMs) verbessern können, und wie dieses CLI-Tool den Prozess der Hyper-V-Verwaltung erheblich vereinfachen kann.

Was ist PowerShell?

PowerShell ist ein Framework für die Aufgabenautomatisierung und Konfigurationsverwaltung, das von Microsoft entwickelt wurde und eine Befehlszeilenumgebung sowie eine zugehörige Skriptsprache auf Basis des .NET Frameworks und .NET Core umfasst.

PowerShell-Befehle, auch als Cmdlets bekannt, können verwendet werden, um verschiedene Aufgaben zu automatisieren, indem mehrere Cmdlets in einem einzigen PowerShell-Skript angeordnet werden. Microsoft hat mehr als einhundert Kern-PowerShell-Befehle entwickelt, die für die Ausführung komplexer sowie grundlegender Aufgaben verwendet werden können.

Was kann PowerShell tun?

PowerShell kann Hyper-V-Administratoren dabei helfen, Aufgaben zur Verwaltung von Betriebssystemen (Linux, macOS und Windows) und zugehörigen Prozessen schnell zu automatisieren. Im Gegensatz zu GUI-Tools können Sie mit PowerShell das gesamte System nur über die Befehlszeile verwalten.

Außerdem können Sie erforderliche Hyper-V-PowerShell-Befehle in einer Textdatei (mit der Erweiterung .ps1) speichern und dann dieses Skript ausführen, um bestimmte Aufgaben auszuführen. Darüber hinaus können Sie PowerShell-Skripte mithilfe des Taskplaners zeitgesteuert ausführen lassen.

Wie öffnet man PowerShell?

Es gibt ein paar Möglichkeiten, wie wir PowerShell in Hyper-V ausführen können. Ein einfacher Weg, um Zugriff auf PowerShell zu erhalten, besteht darin, sich direkt mit einem Hyper-V-Server zu verbinden und es von dort aus zu starten. Um eine Remoteverbindung zu einem Hyper-V-Host herzustellen, müssen wir sicherstellen, dass Remote Desktop aktiviert ist. Sobald Remote Desktop aktiviert ist, können wir das Remote Desktop-Dienstprogramm verwenden und uns remote mit dem Server verbinden, wie wir es mit jeder Windows Server-GUI (grafischen Benutzeroberfläche) tun würden.

Öffnen von PowerShell aus der GUI

Um PowerShell in einem auf der GUI basierenden Betriebssystem zu öffnen, befolgen Sie diese Schritte:

  1. Sie müssen auf Start klicken und PowerShell in die Suchleiste eingeben.
  2. Klicken Sie mit der rechten Maustaste auf das PowerShell-Symbol und wählen Sie Als Administrator ausführen, um PowerShell im erhöhten Modus zu öffnen.

Öffnen von PowerShell aus der Befehlszeile

Um PowerShell auszuführen, wenn Sie Windows Server Core oder Hyper-V Server ausführen, befolgen Sie diese Schritte:

  1. Geben Sie PowerShell in die Eingabeaufforderung ein und drücken Sie Enter.
  2. A Windows PowerShell session should start automatically in the Command Prompt window. A PS prefix is then added to the command prompt to indicate that you have started a Windows PowerShell session.
  3. Sobald Sie in PowerShell sind, können Sie Hyper-V-spezifische PowerShell-Befehle verwenden, die wir weiter unten in diesem Beitrag behandeln.

Remote-Einstellungen

Um die Remotedesktop-Einstellungen in Windows Server Core oder Hyper-V Server zu überprüfen, können Sie das sconfig-Dienstprogramm starten, wenn es noch nicht gestartet wurde, und es mit Option 7 konfigurieren. Außerdem können Sie, sobald Sie remote mit dem Hyper-V-Host verbunden sind, Option 15 verwenden, um zur Befehlszeile zu wechseln.

Sobald Sie dort sind, befinden Sie sich in einer regulären cmd.exe-Umgebung – nicht PowerShell. Um eine PowerShell-Umgebung zu starten, geben Sie einfach powershell in die Befehlszeile ein.

Remote PowerShell

Mit PowerShell können Sie auch remote mit Hyper-V interagieren. Mit anderen Worten, Sie können PowerShell-Befehle auf dem Hyper-V-Host remote ausführen, ohne eine Remote-Desktop-Verbindung herzustellen.

Von der Administrationsarbeitsstation aus, auf der wir Hyper-V-Verwaltungstools geladen haben, können wir unsere Hyper-V-Befehle ausführen. Zunächst müssen wir die Hyper-V-Tools installieren, einschließlich dieser Befehle (Cmdlets).

Install-WindowsFeature RSAT-Hyper-V-Tools

Sobald wir die Tools geladen haben, können wir dieselben Arten von Befehlen mit dem Parameter -computername ausführen, der auf unseren Hyper-V-Host zeigt, wie im folgenden Screenshot. Wir übergeben den Namen unseres Hosts dem get-vm-PowerShell-Cmdlet.

12 essentielle Hyper-V-PowerShell-Befehle

Es gibt eine Reihe effektiver Hyper-V-PowerShell-Befehle, die den Prozess der Verwaltung von Hyper-V einfach und unkompliziert machen können. Schauen wir uns an, wie Sie verschiedene Hyper-V-PowerShell-Befehle verwenden können.

Get-Command

Beginnen wir mit einem Hyper-V-PowerShell-Befehl, der für Benutzer hilfreich ist, die neu in PowerShell sind und nicht wissen, welche Cmdlets verwendet werden sollen und wie. Durch Ausführen des Cmdlets Get-Command können Sie die vollständige Liste aller verfügbaren Cmdlets (Windows PowerShell-Befehle), Funktionen und Aliasse sehen, die auf dem Computer installiert sind.

Jedoch, wenn Sie Ihre Suche eingrenzen möchten und die Liste der Hyper-V-PowerShell-Befehle erhalten möchten, die bestimmten Kriterien entsprechen, können Sie das Get-Command *-VM-Cmdlet verwenden, um die Liste der Befehle zu finden, mit denen Sie VMs steuern und konfigurieren können.

Indem Sie den VM-Parameter auf VHD ändern, können Sie die vollständige Liste der Cmdlets erhalten, die zur Verwaltung virtueller Festplatten verwendet werden. Auf diese Weise können Sie verschiedene Suchparameter ausprobieren, um die gewünschten Ergebnisse zu erhalten.

Get-Help

Sobald Sie sich entschieden haben, welchen Hyper-V-PowerShell-Befehl Sie verwenden möchten, können Sie mehr über dieses Cmdlet erfahren. Hierzu können Sie das Get-Help-Cmdlet verwenden. Um beispielsweise mehr über das Get-VM-Cmdlet zu erfahren, geben Sie Folgendes ein:

Get-Help Get-VM

Get-VM

Der Get-VM-PowerShell-Befehl ermöglicht es Ihnen, alle verfügbaren VMs auf einem oder mehreren Hyper-V-Hosts zu sehen. Um alle VMs auf dem lokalen Hyper-V-Host zu sehen, sollten Sie das Get-VM-PowerShell-Cmdlet ausführen.

Auf dem PowerShell-Bildschirm können Sie die Liste der verfügbaren VMs sehen, einschließlich ihres Namens, Status, CPU-Auslastung, zugewiesenen Speichers, Betriebszeit, Status und Version.

Start-VM

Dieses spezielle Start-VM-PowerShell-Cmdlet hilft Ihnen dabei, eine VM zu starten. Dazu führen Sie den folgenden Hyper-V-PowerShell-Befehl aus:

Start-VM -Name 'Windows Server 2016'

Als Ergebnis wird die VM mit dem Namen Windows Server 2016 auf Ihrem lokalen Hyper-V-Host gestartet. Überprüfen wir, ob die VM tatsächlich gestartet wurde, indem wir das Get-VM-Cmdlet ausführen.

Hier ist deine Übersetzung:

Sie können eine modifizierte Version des PowerShell-Cmdlets Start-VM verwenden, um VMs nur dann zu starten, wenn ihre Namen mit Hyper-V beginnen:

Start-VM -Name Hyper-V*

Wie Sie sehen können, wurde die VM mit dem Namen Hyper-V Server Desktop erfolgreich gestartet. Eine andere VM (Hyper-V Server 2012) befindet sich jedoch bereits im Ausführungsmodus, und PowerShell informiert Sie darüber.

Stop-VM

Das Stop-VM-Cmdlet ermöglicht es Ihnen, eine VM herunterzufahren oder auszuschalten. Zu diesem Zweck können Sie das folgende Cmdlet ausführen:

Stop-VM -Name 'Windows Server 2016'

Wie Sie sehen können, wurde die ausgewählte VM erfolgreich über das Gastbetriebssystem heruntergefahren.

Ein weiteres Beispiel ist, dass Sie die VMs ausschalten können, deren Namen mit Hyper-V beginnen:

Stop-VM -Name Hyper-V* -TurnOff

Wenn Sie feststellen, dass Ihre VM nicht reagiert, können Sie deren Herunterfahren erzwingen. Führen Sie dazu das folgende PowerShell-Cmdlet aus:

Stop-VM -Name 'Windows Server 2016' -Force

Beachten Sie, dass ein erzwungenes Herunterfahren ähnlich wie das Ziehen des Netzkabels an einem physischen Computer ist und daher zu einem Verlust von nicht gespeicherten Anwendungsdaten führen kann. In diesem Fall wird empfohlen, die VM zu speichern, um potenziellen Datenverlust zu vermeiden. Zu diesem Zweck müssen Sie das Cmdlet Save-VM ausführen, das dem Ruhezustand eines physischen Computers entspricht:

Save-VM -Name 'Windows Server 2016'

Wenn Sie die VMs speichern möchten, deren Namen mit Hyper-V beginnen, führen Sie das folgende Hyper-V-PowerShell-Cmdlet aus:

Get-VM -Name Hyper-V* | Save-VM

Checkpoint-VM

Der Checkpoint-VM-Befehl hilft Ihnen dabei, einen Hyper-V VM-Checkpoint (auch bekannt als Hyper-V-Snapshot) zu erstellen. Führen Sie den folgenden Befehl aus, um einen Checkpoint mit dem Namen Update1 für die spezifische VM (Windows Server 2016) zu erstellen:

Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1

Um zu überprüfen, ob die VM erfolgreich erstellt wurde, verwenden Sie den folgenden Hyper-V PowerShell-Befehl:

Get-VMSnapshot -VMName 'Windows Server 2016'

Andererseits, wenn Sie bestimmte Hyper-V-Snapshots löschen möchten, können Sie den Remove-VMSnapshot-Befehl verwenden. Wenn wir beispielsweise alle VM-Snapshots löschen möchten, deren Namen mit Testing beginnen, sollten wir den folgenden Befehl ausführen:

Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*

Das obige Screenshot zeigt den gesamten Prozess des Löschens der ausgewählten Hyper-V-Snapshots.

Test-VHD

Dieser Hyper-V PowerShell-Befehl ist dafür gedacht zu überprüfen, ob die virtuelle Festplattendatei tatsächlich vorhanden ist und für die Hyper-V-Bereitstellung verwendet werden kann. Dieser Befehl lautet wie folgt:

Test-VHD -Path C:\Testing.vhd

Im Falle eines gültigen VHD-Pfades sehen Sie die folgende Ausgabe auf Ihrem Bildschirm:

Um mehr über die Verwaltung virtueller Festplatten mithilfe von PowerShell-Cmdlets zu erfahren, empfehlen wir Ihnen, unseren Blogbeitrag über die Grundlagen der Arbeit mit Hyper-V-VHD- und VHDX-Dateien zu lesen.

Measure-VM

Dieser Hyper-V-PowerShell-Befehl ermöglicht es Ihnen, Ressourcennutzungsdaten für eine bestimmte VM zu sammeln. Führen Sie beispielsweise den folgenden Befehl aus, um Informationen zur CPU-Auslastung, RAM-Auslastung, Festplattenkapazität und Netzwerkverkehr für die VM mit dem Namen Windows Server 2016 zu erhalten:

Measure-VM -VMName 'Windows Server 2016'

Beachten Sie, dass das Measure-VM-Cmdlet erforderliche Daten nur melden kann, nachdem die Ressourcenmessung für eine VM aktiviert wurde. Um die Ressourcenmessung zu aktivieren, verwenden Sie den folgenden Hyper-V-PowerShell-Befehl:

Enable-VMResourceMetering -VMName 'Windows Server 2016'

Get-VMNetworkAdapter

Ein weiteres hilfreiches PowerShell-Cmdlet ist Get-VMNetworkAdapter, mit dem Sie die virtuellen Netzwerkadapter der ausgewählten VM identifizieren können. Wenn Sie beispielsweise virtuelle Netzwerkadapter aus allen VMs sowie dem Verwaltungs-Betriebssystem finden möchten, sollten Sie den folgenden Hyper-V-PowerShell-Befehl ausführen:

Get-VMNetworkAdapter –All

Wenn alles korrekt ist, sollten Sie die folgenden Informationen in Ihrer PowerShell-Konsole sehen:

Mit Hyper-V PowerShell-Befehlen können Sie verschiedene einfache sowie komplexe Aufgaben mit Ihren Hyper-V-Netzwerkschnittstellen ausführen. Schauen Sie sich unseren Leitfaden zu den Cmdlets an, die Ihnen helfen können, virtuelle Netzwerkschnittstellen zu verwalten und zu konfigurieren in Ihrer Hyper-V-Umgebung.

Update-VMVersion

PowerShell verfügt über ein Cmdlet, mit dem Sie die Version des ausgewählten VMs aktualisieren können:

Update-VMVersion -Name 'TestVM'

Nachdem der Hyper-V PowerShell-Befehl ausgeführt wurde, kann die VM mit dem Namen TestVM auf die aktuelle VM-Version aktualisiert werden.

Get-Process

Dieser Hyper-V PowerShell-Befehl kann Ihnen dabei helfen, alle derzeitigen Prozesse auf Ihrem lokalen Computer zu sehen. Nachdem der Get-Process Cmdlet ausgeführt wurde, können Sie die folgenden Informationen auf Ihrem Bildschirm erhalten:

Diese Tabelle enthält Informationen zu:

  • der Anzahl der geöffneten Handles des Prozesses
  • der Menge an nicht zugänglicher Speicher, die der Prozess verwendet
  • der Menge an zugänglichem Speicher, die der Prozess verwendet
  • der Größe des Arbeitssatzes des Prozesses
  • der Menge an virtuellen Speicher, die der Prozess verwendet
  • der Menge an Prozessorzeit, die allen Prozessoren zugewiesen wurde
  • die Prozess-ID
  • der Prozessname

Um die Suche einzugrenzen und einen bestimmten Prozess zu finden, sollten Sie den Prozessnamen oder die ID eingeben. Wenn Sie beispielsweise herausfinden möchten, wie Microsoft Word derzeit funktioniert, sollten Sie die Liste aller laufenden Prozesse durchsuchen und die Zeile mit den Informationen zu Microsoft Word (das heißt, WinWord) finden, einschließlich seiner Prozess-ID. Mit der Prozess-ID können Sie das folgende Cmdlet ausführen, um die erforderlichen Daten zu erhalten:

Get-Process -ID 8892

Darüber hinaus können die Daten über die aktuellen WinWord-Prozesse in einem anderen Format präsentiert werden, nämlich als Liste von Eigenschaften. Führen Sie dieses Cmdlet aus, um eine detailliertere Ausgabe zu erhalten:

Get-Process WINWORD | Format-List *

Nachdem Sie die Prozessdaten erhalten haben, können Sie die folgenden Cmdlets ausführen:

  • Stop-Process ermöglicht es Ihnen, einen oder mehrere laufende Prozesse zu beenden.
  • Wait-Process ermöglicht es Ihnen, auf die Beendigung eines oder mehrerer laufender Prozesse zu warten, bevor Sie andere Eingaben zulassen.
  • Start-Process ermöglicht es Ihnen, einen oder mehrere Prozesse auf dem lokalen Computer zu starten.
  • Debug-Process ermöglicht es Ihnen, einen Debugger an einen oder mehrere laufende Prozesse auf dem lokalen Computer anzuhängen.

Wenn Sie beispielsweise die Anwendung Notepad von PowerShell aus starten möchten, sollten Sie das folgende Cmdlet ausführen:

Start-Process -FilePath "notepad.exe"

Ein weiteres Beispiel ist, wenn Sie PowerShell im „normalen“ Modus geöffnet haben, aber PowerShell im erhöhten Modus ausführen müssen, um Zugriff auf Administratorrechte zu erhalten. In einem solchen Fall führen Sie den folgenden Hyper-V PowerShell-Befehl aus:

Start-Process -FilePath "powershell" -Verb RunAs

Andererseits, wenn einer der laufenden Prozesse nicht mehr reagiert, können Sie das Stop-Process-Cmdlet ausführen, um die fehlgeschlagene Anwendung anzuhalten:

Stop-Process -Name "notepad"

In diesem Fall werden alle Instanzen der Notepad-Anwendung auf dem lokalen Computer gestoppt.

Jede Notepad-Instanz hat ihre eigene Prozess-ID. Wenn Sie eine bestimmte Notepad-Instanz stoppen möchten, sollten Sie den ID-Parameter im Stop-Process-Cmdlet verwenden. Dazu müssen Sie zunächst das Get-Process-Cmdlet ausführen, die erforderlichen aktiven Prozesse finden und die Prozess-ID identifizieren, die Sie beenden möchten.

Sie können beispielsweise den spezifischen Notepad-Prozess stoppen, indem Sie seine Prozess-ID identifizieren und den folgenden Hyper-V PowerShell-Befehl ausführen:

Stop-Process -ID 5052

Als Ergebnis wird nur der ausgewählte Notepad-Prozess gestoppt.

Diese PowerShell-Befehle ermöglichen es Ihnen, einen Prozess zu erkennen, der unerwünschte Ressourcen verbraucht und die Leistung von Hyper-V reduziert, um diesen Prozess zu beenden.

Where-Object

Dieser Hyper-V PowerShell-Befehl ermöglicht es Ihnen, Pipeline-Objekte zu filtern und die genauen Daten zu finden, die Sie benötigen. In diesem Fall müssen Sie ein PowerShell-Skript erstellen, in dem Sie angeben, welche Objekte entlang der Pipeline weitergeleitet werden können. Mit verschiedenen Suchkriterien können Sie jedes Objekt auf dem lokalen Computer finden.

Zum Beispiel, wenn Sie die Prozesse lokalisieren möchten, die nicht mehr ausgeführt werden, verwenden Sie dieses Cmdlet:

Get-Service | Where-Object {$_.Status -eq 'Stopped'}

Ein weiteres Beispiel für die Verwendung des Where-Object-Cmdlets ist, wenn Sie ein bestimmtes Cmdlet finden möchten. Der folgende Hyper-V PowerShell-Befehl kann Ihnen helfen, alle Cmdlets zu finden, die mit Wait beginnen:

Get-Command | Where-Object {$_.Name -like '*wait*'}

Das nächste Where-Object-Cmdlet kann Ihnen helfen, einen bestimmten Prozess nur anhand seines Namens zu finden. Mit dem folgenden Befehl erhalten Sie eine Liste aller Prozesse, deren Namen mit sys beginnen:

Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}

So erstellen Sie eine Hyper-V-VM mit PowerShell

Eine der leistungsstarken integrierten Funktionen von Hyper-V ist die Verwendung von PowerShell für Verwaltungsvorgänge. Unter den vielen Dingen, die wir mit PowerShell in Hyper-V tun können, ist das Erstellen virtueller Maschinen. Lassen Sie uns eine Reihe von Hyper-V PowerShell-Befehlen zum Erstellen neuer VMs betrachten.

PowerShell-Befehle zum Erstellen einer neuen VM

Um eine neue Generation 2-VM mit einer brandneuen 60 GB VHDX-Festplatte zu erstellen und sie mit einem bestimmten virtuellen Switch (in diesem Fall „ExternalSwitch“) zu verbinden, führen Sie die folgenden PowerShell-Befehle auf Ihrem Hyper-V-Host aus.

  1. Erstellen einer VM:

    new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:\hyper-v\virtualhard disks\WSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch"

  2. Um ein DVD-Laufwerk zusammen mit einem ISO-Image zum Booten hinzuzufügen, können zusätzliche Befehle ausgeführt werden:

    Add-vmscsicontroller -vmname WSTEST

    Add-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:\ISO\my.iso

  3. Wenn wir eine Festplatten mit fester Größe erstellen und sie an unsere VM anhängen möchten, können wir folgendes ausführen, um eine VHDX mit fester Größe zu erstellen und sie an unsere VM anzuhängen:

    new-vhd -path "d:\hyper-v\virtual hard disks.wstest.vhdx" -sizebytes 60GB -fixed

    add-vmharddiskdrive -vmname WSTEST -path "d:\hyper-v\virtual hard disks\wstest.vhdx"

Conclusion

PowerShell mag zunächst einschüchternd wirken, aber sobald Sie gelernt haben, wie man damit arbeitet, können Sie schnell herausfinden, wie Sie Hyper-V PowerShell-Befehle verwenden und die Verwaltung in Ihrer Hyper-V-Umgebung optimieren können. Denken Sie nur daran, dass Sie unabhängig davon, was Sie zur Verwaltung Ihrer VMs verwenden, Backups erstellen müssen, um Datenverlust und Ausfallzeiten zu vermeiden.

NAKIVO Backup & Replication ist eine zuverlässige und leistungsstarke Lösung für den Datenschutz, die Ihnen helfen kann, VMware-, Hyper-V-, Nutanix-, AWS EC2-, Linux-, Windows- und Microsoft 365-Umgebungen zu schützen.

Source:
https://www.nakivo.com/blog/essential-hyper-v-powershell-commands/