Skip to main content

Hyper-V mit PowerShell?

von Rainer Vorauer

Wie schon mal in einem meiner Blogs erwähnt, verwenden wir öfters Hyper-V. Hyper-V kann natürlich über den „Hyper-V Manager“ gesteuert werden, jedoch sind nicht mehr alle Einstellungen über dieses RSAT-Tool möglich. Zum Beispiel sind einige „Virtual Switch“ Einstellungen nur noch über die PowerShell reden. Nachdem einige gute Anleitungen auf docs.microsoft.com zu finden sind, will ich gar nicht viel darüber schreiben ?

PowerShell als Werkzeug für Faulheit?

Ich will Ihnen 3 kurze Beispiele zeigen wie PowerShell sehr hilfreich sein kann.
Starten von Virtuellen Maschinen:

foreach ( $vm in @("Server01","Server02","Server03","Server04")) {

    write-host "Starte $vm $(Start-VM -Name $vm)" -ForegroundColor Green

}

Mit diesem Kurzen PowerShell-Skript starte ich 4 angegebene Server und gebe gleich in der PowerShell aus welcher Server startet. 3 Zeilen die sehr viel „Klickarbeit“ ersparen ? Natürlich sind diese 3 Zeilen kein Skript, trotzdem ersparen wir uns einige Klicks.
Erfahren Sie die Uptime bzw. ob der Server eingeschaltet ist:

foreach ( $vm in @("Server01","Server02","Server03","Server04")) {

    write-host "State der VM: $vm = $((Get-VM -Name "$vm" ).State)" -ForegroundColor Red

    write-host "Uptime der VM: $vm = $((Get-VM -Name "$vm" ).Uptime)" -ForegroundColor Yellow

}

Diese 4 Zeilen erleichtern uns die Arbeit nachzuvollziehen welche VMs rennen und wie lang der letzte ausgeschaltete Zustand her ist.

Check-Point generieren und kontrollieren welche Checkpoints alle am Hyper-V angelegt sind:

[CmdletBinding()]

param(

    [Parameter(Mandatory = $True)]

    [string[]]$vms

)


Function Checkpoint {

    foreach ( $vm in $vms) {

        write-host "Checkpoint erstellen: $vm $(Checkpoint-VM -Name $vm)" -Foregroundcolor Red

        write-host "$(Get-VMSnapshot -VMName $vm)"

    }

}

    Checkpoint $vms

Mit diesem kleinen Skript können automatisiert Checkpoints erstellt werden. Danach werden auch noch alle bisherigen Checkpoints angezeigt.
Das wars auch schon wieder. Diese 3 kurzen Skripte können viel Zeit ersparen und natürlich können diese Skripte erweitert werden, da PowerShell viel mehr kann.