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

    Kurse zu Amazon Web Services: Technische Grundlagen und Bereitstellung von Cloud-Lösungen. Wunschtermine und Inhouse-Trainings möglich. Mehr Infos »

    (Anzeige)

    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.

    Keine Kommentare