Mit WMI, sc.exe und DISM prüfen, ob Hyper-V installiert ist


    Tags: , ,

    Hyper-V wird unter Windows Server als Rolle eingerichtet, unter Windows 8 als Feature. Es lässt sich relativ leicht herausfinden, ob der Hypervisor auf diese Weise installiert wurde. Etwas schwieriger dagegen ist es, wenn man wissen möchte, ob Hyper-V auf einem bestimmten Rechner tatsächlich läuft.

    Möchte man ermitteln, ob Hyper-V auf einem PC installiert wurde, dann helfen die gängigen Tools für die Paketverwaltung. Zu diesen zählt unter anderem DISM, das mit dem Aufruf

    dism /online /get-featureInfo /FeatureName:Microsoft-Hyper-V

    ermittelt, ob Hyper-V installiert wurde. Die Entsprechung dazu in PowerShell ist

    Get-WindowsFeature | where{$_.DisplayName -eq "Hyper-V"}

    Dieser Aufruf setzt indes voraus, dass die Cmdlets für den Server Manager vorhanden sind, was entweder unter Windows Server der Fall ist oder auf einem Client inklusive RSAT. Außerdem kann man Get-WindowsFeature nur auf einen Server anwenden.

    Prüfen, ob Hyper-V läuft

    Diese beiden Varianten haben den Nachteil, dass sie entweder nur den lokalen Rechner abfragen können (DISM) oder nur eingeschränkt verfügbar sind, weil sie vom Server Manager abhängen. Hinzu kommt, dass der Hypervisor zwar installiert sein kann, aber vorübergehend deaktiviert wurde oder aus anderen Gründen nicht läuft.

    In diesen Fällen benötigt man Alternativen, die feststellen können, ob Hyper-V aktiv ist. Eine Option ist dabei das Dienstprogramm sc.exe, weil Hyper-V als Windows-Service mit dem Namen vmms ausgeführt wird:

    sc query vmms | findstr "STATE"

    Dieser Befehl hat den Vorteil, dass er sich auch auf entfernte PCs anwenden lässt, wenn man als zweites Argument ihren Namen im UNC-Format angibt, also beispielsweise

    sc \\remotePC query vmms|findstr "STATE"

    WMI-Namespace virtualization überprüfen

    Eine weitere Möglichkeit für eine derartige Abfrage bietet WMI, das sich in den verschiedenen Script-Sprachen gut verwenden lässt. Auf der Kommandozeile kann man einen entsprechenden Aufruf mit wmic formulieren:

    wmic /Namespace:\\root PATH __Namespace WHERE name="virtualization"

    Wenn Hyper-V nicht aktiv ist, dann existiert der Namespace root\Virtualization nicht. Auch hier kann man bei Bedarf eine Abfrage remote ausführen, wenn man den entfernten Rechner über den Parameter /node angibt.

    Die Entsprechung zum obigen wmic-Befehl würde in PowerShell so aussehen:

    gwmi -namespace "root" -class "__Namespace" | where{$_.Name -eq "virtualization"}

    Erzeugt der Aufruf keine Ausgabe, dann läuft Hyper-V nicht.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut

    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links