Logo faq-o-matic.net
Logo faq-o-matic.net

Notizen automatisch an Hyper-V-VMs anfügen

von veröffentlicht am1. Februar 2016, 05:16 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: PowerShell, Virtualisierung   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

imageIn 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:

image

Das Skript zum Download:

Download: Set-VMNotesClusteringAndAddress  Set-VMNotesClusteringAndAddress (851 bytes, 806-mal heruntergeladen, letzte Änderung am 22. Dezember 2015)

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!