VMware Snapshot Management via PowerShell/PowerCLI

Snapshots in VMware sind eine gute Möglichkeit, um z.B. vor Updates ein kleine Versicherung zu haben, auf den Stand von vor ein paar Minuten zurück gehen zu können.

Um Snapshots über die PowerShell zu verwalten, muss im Vorfeld PowerCLI von VMware installiert werden.

Im Anschluss können wir uns auf’s vCenter oder den ESXi Host per PowerShell verbinden:

Connect-VIServer <vCenter-Name/Host-Name>

Als erstes erstellen wir nun einen Snapshot einer einzelnen VM. Dazu verwenden wir das Get-VM Cmdlet, geben den VM-Namen an und pipen das Ergebnis in das New-Snapshot Cmdlet. Mit den Parametern Memory und Quiesce wird der Arbeitsspeicher mit in gesnapshottet und die VM während des Snapshots angehalten.

Get-VM <VM-Name> | New-Snapshot -Memory -Quiesce -Name <Snapshot-Name>

Nun geht’s einen Schritt weiter und wir möchten Snapshots von mehreren VMs gleichzeitig erstellen. Dazu plazieren wir alle VMs, die wir snapshotten möchten, z.B. über den vSphere Client in einen eigenen Ordner. Das wiederum funktioniert nur in einer vCenter Umgebung, da auf einzelnen ESXi Hosts die VMs nicht in Ordner organisiert werden können. Für alle VMs in diesem Ordner erstellen wir jetzt einen Snapshot.

Get-VM -location <Ordner-Name> | New-Snapshot -Memory -Quiesce -Name <Snapshot-Name>

Nachdem wir nun Snapshots erstellt haben, möchten wir uns unsere Snapshots natürlich auch mal anschauen. Um eine Übersicht aller Snapshots im Listenformat zu erhalten nutzen wir wieder das Get-VM Cmdlet und neu das Get-Snapshot Cmdlet.

Get-VM | Get-Snapshot | format-list

Das Get-Snapshot Cmdlet wirft die folgenden Details aus:

Description
Created
Quiesced
PowerState
VM
VMId
Parent
ParentSnapshotId
ParentSnapshot
Children
SizeMB
IsCurrent
IsReplaySupported
ExtensionData
Id
Name
Uid

Dem entsprechend lässt sich die Ausgabe noch optimieren, indem wir uns z.B. nur die VM und den Snapshot-Namen anzeigen lassen – oder eben die Werte, die wir benötigen.

Get-VM | Get-Snapshot | format-list vm,name

Das Ganze lässt sich natürlich auch exportieren.

Get-VM | Get-Snapshot | format-list | out-file C:\Output\Snapshots.txt

Wie schon beim Snapshot erstellen haben wir auch hier die Möglichkeit, die Ausgabe nur für VMs in einem bestimmten Ordner zu erhalten.

Get-VM -location <Ordner-Name> | Get-Snapshot | format-list

Zum Abschluss möchten wir nun nach getaner Arbeit die nicht mehr benötigten Snapshots auch wieder löschen. Dazu benötigen wir die Cmdlets Get-Snapshot und Remove-Snapshot.

Zuerst fangen wir auch hier wieder mit den Snapshots einer einzelnen VM an.

Get-Snapshot <VM-Name> | Remove-Snapshot

Vorsichtshalber erhalten wir eine Bestätigungsabfrage, ob wir den Snapshot wirklich löschen wollen. Sind wir uns dessen sicher oder möchten wir das Löschen mit einem Skript automatisiert erledigen, kann man die Abfrage per Parameter abstellen.

Get-Snapshot <VM-Name> | Remove-Snapshot -confirm:$false

Wie auch beim Anlegen und Abfragen kann man auch beim Löschen einen ganzen Ordner auswählen.

Get-Snapshot -location <Ordner-Name> | Remove-Snapshot

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.