VMs ohne Tags finden
Viele Kunden, inklusive mir, nutzen Veeam als Backuplösung ihrer Infrastruktur. Dafür nutzen einige die Möglichkeit die VMs über Tags zu selektieren. Aber nicht nur für Backups sind Tags in vSphere gut, sondern auch um Objekte, meistens VMs, zu typisieren. So nutzt der ein oder andere auch Tags für VDI-Systeme oder ordnet darüber VMs einem bestimmten Projekt zu.
Doch gerade wenn man für die Sicherung ausschließlich Tags nutzt, so ist es essentiell das jede VM einen entsprechenden Tag besitzt.
Dazu habe ich eine Tagkategorie, genannt Backup, angelegt. In dieser Kategorie sind verschiedene Tags untergebracht, die dann in Backupjobs in Veeam angegeben sind:
Wenn man nun jeder VM einen Tag zuordnen muss, läuft man schnell Gefahr eine VM zu übersehen. Wenn das passiert, wird diese nicht gesichert werden können. Das sollte auf jeden Fall vermieden werden.
Abhilfe schafft ein kleines PowerCLI-Snippet mit dem es möglich ist alle VMs zu finden, die noch keinen Tag einer bestimmten Kategorie zugewiesen haben:
1 2 3 4 |
$tagCategory = "Backup" #Tagkategorie festlegen $tags = Get-Tag -Category $tagCategory $bckvms = Get-VM -Tag $tags Get-VM | Where { $bckvms -notcontains $_ } #Es werden die VMs ausgegeben die keinen Tag der angegebenen Kategorie besitzen |
Die Funktionsweise des Snippets ist recht schnell erklärt. Zu erst liest es alle Tags der angegebenen Kategorie aus. Als zweites werden alle VMs geholt die mindestens einen der Tags zugewiesen haben. Zum Schluss wird dann die Liste aller VMs mit den VMs aus Schritt zwei verglichen und die ohne Tag werden ausgegeben.