Hyper-V Informationen auslesen

Posted on: 30. März 2018

Oft ist es interessant und nützlich gewissen Informationen von Hyper-V Servern zu erhalten, gerade wenn man mehrere im Einsatz hat. Mit diesem Video schauen wir die Grundlagen zum Auslesen von VM und Hyper-V Informationen an und bereiten uns auf ein etwas grösseres Projekt im Zusammenhang mit „Best Practice“ von Hyper-V Servern vor. Wie immer sind die wichtigsten Informationen im folgenden Script zusammengefasst und mit den nötigen Kommentaren versehen, so dass du schnell und einfach umsetzen kannst.

——————————————–

# Festlegen der Hyper-V Server            
$meineHyperVServer = "Server1","Server1"
            
# Informationen die wir darstellen wollen:            
# VM Name (VMName)            
# Status der VM (State)            
# Hyper-V Server Host (Host)            
# Anzahl verwendeter CPUs (ProcessorCount)            
# Zugewiesener Arbeitsspeicher (MemoryAssigned)            
# Maximaler Arbeitsspeicher (MemoryMaximum)            
# Minimaler Arbeitsspeicher (MemoryMinimum)            
# Dynamisches RAM zugewiesen? (DynamicMemoryEnabled)            
# Notizen der virtuellen Maschine (Notes)            
            
# Leeres Array um die VM Informationen darin zu speichern            
$AlleVMs = @()            
            
# Für jeden Hyper-V Server in $meineHyperVServer wird diese Schleife durchlaufen            
foreach ($hyperv in $meineHyperVServer){            
            
# Listet alle Virtuellen Maschinen auf dem entsprechenden Hyper-V Server auf            
$AlleVMs += Get-VM -ComputerName $hyperv | Select VMName,`
            
# Unter "Status" wird mit Switch/Case geprüft ob es bestimmte Stati hat und übersetzt diese in deutsch            
@{Label="Status";Expression={switch($_.State){"Running"{"Läuft"} "Off"{"Aus"}}}},`
            
# Host auf dem die Virtuelle Maschine läuft            
@{Label="Host";Expression={$_.Computername}},`
            
# Anzahl Prozessorkerne die für die VM eingerichtet sind            
@{Label="CPUCount";Expression={$_.ProcessorCount}}, `
            
# Aktuell verwendeter Arbeitsspeicher der VM            
@{Label="MemAssign";Expression={[math]::Round($_.MemoryAssigned / 1GB,0)}}, `
            
# Maximal möglicher Arbeitsspeicher der VM            
@{Label="MemMax";Expression={[math]::Round($_.MemoryMaximum / 1GB,0)}},`
            
# Minimaler Arbeitsspeicher der VM            
@{Label="MemMin";Expression={[math]::Round($_.MemoryMinimum / 1GB,0)}},`
            
# Ist der VM ein dynamischer Arbeitsspeicher zugewiesen?            
@{Label="DynamicRAM";Expression={if ($_.DynamicMemoryEnabled -eq $true){"Ja"} else {"Nein"}}},`
            
# Notizen der VM            
@{Label="Notizen";Expression={$_.Notes}},`
            
# Grösse der HDDs pro VM Total (Sum) in GB            
@{Label="TotalHDDGrösse";Expression={[math]::Round((((get-vm -ComputerName $hyperv -Name $_.VMName| Get-VMHardDiskDrive).path | Get-VHD -ComputerName $hyperv).FileSize | Measure-Object -Sum).Sum/ 1GB,2).toString() + " GB"}}            
}            
            
# Ausgabe der zusammengestellten VMs als GitterDarstellung (GridView)            
$AlleVMs | Out-GridView -Title "VM Übersicht"
——————————————–
Solltest du irgendwelche Fragen haben, dann kannst du diese gerne entweder hier im Blog oder direkt unter dem YouTube Video stellen. Ich gebe alles, deine Fragen zeitnahe zu beantworten oder ein entsprechendes Video darüber zu machen.
Gerade die Grundlagen-Videos werde ich nicht mit viel Text ausschmücken. Bei mir ist jeweils jede Code-Zeile direkt im Code Kommentiert (#Grün). Du kannst den Code direkt mit in dein Script kopieren und hast so eine gute Orientierungshilfe, sobald du die Scripts auf deine Bedürfnisse anpasst.

Ich erstelle und veröffentliche sämtliche Videos kostenlos und blende auch keine Werbung ein, dies will ich auch so beibehalten. Da das vermittelte Wissen aber in teuren Kursen erlangt werden kann, ist eine kleine Spende hin und wieder sicher keine schlechte Gegenleistung.