Hyper-V PowerShell-Modul: Mehr Dinge erledigen

Wenn Sie die Virtualisierungsplattform Hyper-V von Microsoft verwenden, um virtuelle Maschinen auszuführen, sind Sie wahrscheinlich mit der Verwendung des Hyper-V-Managers vertraut. Aber wussten Sie, dass Sie mit dem Hyper-V PowerShell-Modul mehr in weniger Zeit erledigen können?

In diesem Tutorial erfahren Sie, wie Sie Hyper-V-VMs mit PowerShell verwalten, einschließlich Erstellen, Entfernen und sogar Arbeiten mit VM-Snapshots!

Voraussetzungen

Für dieses Tutorial benötigen Sie die unten aufgeführten Elemente:

  • A Windows client to connect to a remote Hyper-V host. This tutorial uses Windows 10 Pro.
  • A Hyper-V host with PowerShell Remoting enabled. The tutorial’s Hyper-V host is named HYPER and is in a workgroup but an Active-Directory joined client and host will work as well.
  • A user account on the Hyper-V host in the local administrators group or in the Hyper-V Administrators group. This tutorial will use an account called localadmin.

Verbindung zu einem Remote-Hyper-V-Host

Um mit Hyper-V in PowerShell zu arbeiten, müssen Sie irgendwie mit dem Hyper-V-Host kommunizieren können. Sie können dies entweder lokal tun, indem Sie die Hyper-V PowerShell-Cmdlets ausführen und den Namen des Hyper-V-Hosts angeben, oder Sie können PowerShell Remoting verwenden, um sich direkt mit dem Hyper-V-Host zu verbinden.

In diesem Tutorial stellen Sie eine dauerhafte Verbindung zum Hyper-V-Host her und führen die Befehle direkt auf dem Hyper-V-Host aus.

1. Öffnen Sie PowerShell auf Ihrem lokalen Computer.

2. Führen Sie das Cmdlet Enter-PSSession aus und geben Sie den Hostnamen Ihres entfernten Hyper-V-Hosts für den Parameter ComputerName an. Diese Aktion erstellt eine interaktive Sitzung und ermöglicht es Ihnen, Befehle interaktiv auf dem entfernten Hyper-V-Host auszuführen.

Enter-PSSession -ComputerName HYPER -Credential (Get-Credential)

Wenn Ihr Client und der Hyper-V-Host Mitglieder derselben Active Directory-Domäne sind, müssen Sie den Parameter Credential nicht verwenden.

3. Sie werden dann zur Eingabe eines Benutzernamens und eines Kennworts aufgefordert, um eine Verbindung mit dem Hyper-V-Host herzustellen. Dieser Benutzername und dieses Kennwort werden ein lokaler Administratorbenutzer auf dem Remote-Host sein. Nach erfolgreicher Verbindung sollte Ihr PowerShell-Prompt den Hostnamen des Hyper-V-Hosts anzeigen.

Sie sind jetzt bereit, Befehle auszuführen!

Erstellen von Hyper-V-VMs mit PowerShell

Vorausgesetzt, Sie sind jetzt über die PowerShell-Remotefunktion mit Ihrem Hyper-V-Host verbunden, lassen Sie uns Befehle ausführen, indem wir eine Hyper-V-VM erstellen.

Erstellen einer einfachen VM

Während Sie in Ihrer PSRemoting-Sitzung mit dem entfernten Hyper-V-Host verbunden sind:

Führen Sie das Cmdlet New-VM aus, um eine neue VM zu erstellen. Bei der Erstellung einer VM mit dem Cmdlet New-VM haben Sie viele verschiedene Optionen zur Auswahl, wie Sie sie erstellen möchten.

1. In diesem Beispiel unten erstellt das Tutorial eine VM mit:

  • A name of MyVM (HYPER)
  • 512 MB RAM (MemoryStartupBytes)
New-VM -Name "HYPER" -MemoryStartupBytes 512MB
New VM named “HYPER”

Erstellen einer VM basierend auf anderen VM-Attributen

Manchmal müssen Sie eine VM mit ähnlichen Attributen wie eine andere VM erstellen. Sie können dies tun, indem Sie verschiedene VM-Attribute Variablen zuweisen und dann diese Variablen verwenden, wenn Sie die neue VM erstellen. Hier ist ein Beispiel:

1. Führen Sie Get-VM aus, um die Attribute einer vorhandenen VM abzufragen und weisen Sie die Ausgabe einer Variablen zu, wie unten gezeigt.

$VMold = Get-VM "HYPER_old"

2. Führen Sie das Cmdlet Get-VMMemory aus und geben Sie den Namen der VM an, von der Sie Attribute abrufen möchten (in diesem Fall den Speicher), und weisen Sie den Speicherwert einer Variablen zu.

$memory = (Get-VMMemory -VMName $VMold.name).Startup

3. Erstellen Sie anschließend eine neue VM mit dem Cmdlet New-VM, geben Sie den Name an, die VM-Generation (Generation) unter Verwendung der Generation-Eigenschaft der anderen VM und die Speichermenge basierend auf dem erhaltenen Wert der anderen VM.

New-VM -Name "newVM" -Generation $VMold.Generation -MemoryStartupBytes $memory
New VM created from Old existing VM

Auflisten vorhandener VMs mit PowerShell

Jetzt, da Sie mindestens zwei VMs auf dem Hyper-V-Host erstellt haben, schauen wir uns an, wie Sie erstellte VMs auflisten können. Gehen Sie dazu folgendermaßen vor:

1. Führen Sie das Cmdlet Get-VM ohne Parameter aus. Wenn Sie es ohne Parameter ausführen, werden alle vorhandenen VMs auf dem Hyper-V-Host abgefragt. Get-VM

Get-VM
Output of Get-VM run with no Parameters

2. Möglicherweise möchten Sie nur nach einer einzelnen VM suchen. Verwenden Sie in diesem Fall den Parameter -Name. Der folgende Befehl sucht in Hyper-V nach der zuvor erstellten VM mit dem Namen HYPER_old. Get-VM -Name HYPER_old

Get-VM -Name HYPER_old
Output of Get-VM run with the -Name Parameter

Vielleicht müssen Sie auch alle VMs finden, die sich in einem bestimmten Status befinden. Kein Problem. Führen Sie dazu Get-VM aus, das alle VMs abfragt, und leiten Sie die Ausgabe an das Cmdlet Where-Object weiter.

In dem folgenden Beispiel begrenzt das Pipe ‚|‘ die Ausgabe von Get-VM auf nur diejenigen VM-Objekte mit einem Zustand von Running. Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}

Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}
Output of Get-VM filtering out the VM with the state of Running

Starten und Stoppen von VMs

Zu diesem Zeitpunkt ist die zuvor erstellte VM wahrscheinlich gestoppt. Lassen Sie uns das ändern, indem wir sie starten und dann auch lernen, wie man VMs stoppt.

In der PowerShell-Sitzung des entfernten Hyper-V-Hosts:

1. Führen Sie das Cmdlet Start-VM aus und geben Sie den Namen (Name) der zuvor erstellten VM mit dem Parameter -Name an.

Start-VM -Name NewVM
The Start-VM command starting the VM named HYPER_old

Jetzt, da die VM gestartet ist, stoppen Sie sie, indem Sie das Cmdlet Stop-VM verwenden und den Namen der VM mit dem Parameter Name angeben.

Stop-VM -Name HYPER_old

Sobald Sie das obige Kommando ausführen, sehen Sie, wie die VM heruntergefahren wird, wie im folgenden Screenshot zu sehen ist:

Stop-VM stopping the HYPER_old VM

Ändern von Hyper-V-VMs

VMs bleiben nicht immer gleich. Möglicherweise müssen Sie die CPU-Ressourcen erhöhen, oder die VM läuft ständig aus Speicher. In diesem Fall ist das Cmdlet Set-VM Ihr Freund.

Als Beispiel für die Änderung vorhandener VMs, in der PowerShell-Sitzung des entfernten Hyper-V-Hosts:

Führen Sie das Set-VM-Cmdlet aus, um die HYPER_old-VM automatisch herunterzufahren, die derzeit ausgeführt wird. Verwenden Sie das Name-Parameter, um die VM anzugeben, die Sie festlegen möchten, und geben Sie Shutdown als Wert für den AutomaticStopAction-Parameter an, um sicherzustellen, dass die VM ordnungsgemäß automatisch heruntergefahren wird, wenn der Hyper-V-Host heruntergefahren wird.

Set-VM -Name HYPER_old -AutomaticStopAction Shutdown

Speichern von Hyper-V-VMs

In der PowerShell-Sitzung des entfernten Hyper-V-Hosts müssen Sie möglicherweise die VM, die Sie erstellen, speichern, um den Zustand des VM-Speichers für spätere Verwendung zu erhalten. Verwenden Sie dazu das Save-VM-Cmdlet mit dem Name-Parameter und geben Sie den Namen der zu speichernden VM an.

Beachten Sie, dass die zu speichernde VM sich im Zustand „Ausgeführt“ befinden muss.

Save-VM -Name HYPER_old
Save-VM cmdlet saving HYPER_old VM state.

Verwaltung von Hyper-V-VM-Prüfpunkten

Wenn Sie den vorhandenen Zustand einer VM vor der Durchführung von Änderungen speichern oder VM-Änderungen rückgängig machen müssen, sollten Sie sich mit Prüfpunkten vertraut machen. Prüfpunkte sind eine praktische Möglichkeit, den Festplatten- und Speicherzustand einer beliebigen Hyper-V-VM schnell zu speichern.

Auf Ihrem Hyper-V-Host führen Sie das Checkpoint-VM-Cmdlet aus und geben den Namen der VM zum Speichern sowie einen Namen für den Prüfpunkt an.

Der Parametername SnapshotName bezieht sich immer noch auf die alte Terminologie, die in Hyper-V 2012 verwendet wurde. Ein Schnappschuss ist dasselbe wie ein Prüfpunkt.

Checkpoint-VM -Name HYPER_old -SnapshotName MyVMSnapshot
Using Checkpoint-VM to create a Snapshot of HYPER_old VM called MyVMSnapshot

Sobald Sie einen Checkpoint erstellt haben, können Sie dann das Get-VMSnapshot-Cmdlet verwenden, um alle auf dem Hyper-V-Host gespeicherten Snapshots abzurufen. Unten sehen Sie, dass die VM HYPER_old drei Checkpoints hat.

Get-VMSnapshot -VMName HYPER_old
Retrieves all the Snapshots stored for HYPER_old VM

Fazit

Wenn Sie alle Demos in diesem Tutorial durchgearbeitet haben, sind Sie auf dem besten Weg, Hyper-V-VMs mit PowerShell zu verwalten. Sie sollten jetzt das erforderliche Wissen haben, um 1, 10 oder sogar 100 VMs zu verwalten!

Welche Arten von Aufgaben denken Sie, können Sie nun mit PowerShell und Hyper-V automatisieren?

Source:
https://adamtheautomator.com/hyper-v-powershell/