In einer Testumgebung mit einem Hyper-V-Cluster befinden sich einige VMs, die absichtlich nicht Teil des Clusters sind – diese VMs laufen nur auf dem jeweiligen Host. In einer Produktionsumgebung möchte man sowas in der Regel vermeiden, aber im Labor kann es bisweilen praktisch sein.
Um eine leichtere Übersicht zu erhalten, welche VM durch den Cluster geschützt wird und welche nicht, sollte ein Marker in das Beschreibungsfeld jeder VM eingetragen werden (das ist ein Feld namens “Notes” in der Konfiguration der VM). Dazu eignet sich ein Skript, das Nicholas Dille ursprünglich für das Buch “Microsoft Hyper-V und System Center” als Beispiel entwickelt hatte (dort auf Seite 95 zu finden). Dieses Skript liest die IP-Konfiguration einer VM aus und schreibt sie in das Notes-Feld. Dabei ist es schlau genug, Anmerkungen, die bereits manuell oder von anderer Stelle eingetragen sind, beizubehalten.
Hier meine angepasste Version des Skripts, das den Cluster-Status und die IP-Informationen hinterlegt.
# # Dieses Skript erweitert die Bemerkungen einer VM um # den Cluster-Status sowie um # die Angaben von IP- und MAC-Adressen: # # 000000000000 (a.b.c.d e::f) 000000000001 (...) ### existing notes # # Existierende Bemerkungen werden beibehalten. # # basiert auf einem Skript von Nicholas Dille # aus dem Buch "Microsoft Hyper-V und System Center" # Get-VM | foreach { $oMachine = $_ # lese Cluster-Status aus if ($oMachine.IsClustered) { $IsClusteredVM = 'Clustered VM' } else { $IsClusteredVM = 'Non-clustered VM' } # Extrahiere existierende Bemerkungen [string]$sUserNotes = $oMachine.Notes # Entferne früher vorangestellte Daten (delimiter ###) [int]$iIndex = $sUserNotes.IndexOf(' ###') if ($iIndex -gt 0) { # enthält jetzt nur die Bemerkungen des Eigentümers $sUserNotes = $sUserNotes.Substring($iIndex + 5)} # Variable wird zusätzliche Bemerkungen pro VM enthalten [string]$sNotes = $IsClusteredVM + ', ' # alle Netzwerkkarten durchgehen $oMachine.NetworkAdapters | foreach { $oAdapter = $_ # fügt MAC- und IP-Adressen hinzu $sNotes += "$($oAdapter.MacAddress) (" $sNotes += $oAdapter.IPAddresses $sNotes += ') ' } # fügt Trennzeichen und existierende Bemerkungen hinzu $sNotes += "### $sUserNotes" # aktualisiert VM mit neuen Bemerkungen Set-VM -Name $oMachine.Name -Notes $sNotes }
Um das Skript automatisch auszuführen, eignet sich ein geplanter Task. Dieser könnte z.B. stündlich laufen. Er benötigt administrative Rechte auf dem jeweiligen Host. So trägt man das PowerShell-Skript dort ein:
Das Skript zum Download:
Set-VMNotesClusteringAndAddress (851 bytes, 787-mal heruntergeladen, letzte Änderung am 22. Dezember 2015)
http://faq-o-matic.net/?p=7166