Tags: Hyper-V, Datei-Management, PowerShell
Während Hyper-V zur Bezeichnung von virtuellen Laufwerken die Namen der VMs verwendet, tragen die Konfigurationsdateien und Snapshots kryptische IDs. Mit Hilfe von PowerShell kann man relativ einfach herausfinden, welche Konfiguration bzw. welcher Prüfpunkt zu welcher VM gehört.
Verwendet man mehrere Speicherorte für virtuelle Maschinen und möchte wissen, welche VMs wo abgelegt sind, dann ist der Blick in das Dateisystem nicht besonders aufschlussreich. Dort finden sich Konfigurationsdateien mit ellenlangen Namen, die von der ID der VM stammen.
Namen und IDs für alle VMs auflisten
Theoretisch könnte man jede XML-Datei öffnen und dort in mehreren hundert Zeilen nach dem Namen der VM suchen. Eine praktikablere Lösung besteht darin, diese Information in PowerShell über das Cmdlet Get-VM zu ermitteln:
Get-VM | Select VMName, VMId, Path | fl
Dieser Aufruf listet die Namen und die zugehörigen IDs aller VMs auf dem lokalen Hyper-V-Server auf. Zusätzlich zeigt er den Pfad an, unter dem die VMs gespeichert sind. Für die Abfrage eines Remote-Host ergänzt man Get-VM um den Parameter -ComputerName.
Möchte man nur den Namen der VM zu einer bestimmte ID erfahren, dann kann man den Aufruf von Get-VM über die Angabe des Parameters -ID einschränken:
Get-VM -ID 73e5c323-e553-4142-9c2d-89eb1a9c2772 | Select VMName, Path
Wenn man die Eingabe der ellenlangen GUID bzw. das Copy & Paste derselben vermeiden möchte, dann kann man alternativ folgenden Befehl verwenden, dem man nur die ersten Zeichen der GUID plus Wildcard übergibt:
Get-VM | ? VMID -like 2DA*
Snapshots zu VMs zuordnen
Ein besonderer Fall sind Snapshots, für die Hyper-V eine eigene XML-Konfigurationsdatei sowie differenzielle VHD(X) anlegt. Auch hier verwendet Microsoft eine ID für den Dateinamen, allerdings nicht jene der VM, sondern eine eigene für jeden Snapshot.
Möchte man hier ermitteln, welcher Snapshot zu welcher VM gehört, dann benötigt man das Cmdlet Get-VMSnapshot. Ruft man es mit dem Parameter ID auf, dann kann man anschließend einfach den dazu passenden Namen als Eigenschaft ausfiltern:
Get-VMSnapshot -ID 81ec2417-29c5-4ebe-b4b9-c73f5efb9fc4 | Select VMName
Will man einfach nur die VM-Namen zu allen vorhandenen Snapshots anzeigen, dann schickt man den Output von Get-VM durch eine Pipe an Get-VMSnapshot und filtert im Select-Statement die Eigenschaften VMName und ID aus.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Virtuelle Maschine vollständig mit PowerShell erstellen (am Beispiel von Azure Stack HCI)
- JSON in PowerShell erzeugen und bearbeiten
- PowerShell-Remoting, Hyper-V Manager: Fehler wegen Netzwerkverbindungstyp "Öffentlich"
- Dateien für Updates in WSUS auflisten mit PowerShell
- Hyper-V-Host mit PowerShell (remote) konfigurieren, vSwitch hinzufügen
Weitere Links