Woher weiß ich, ob ich an einer virtuellen Maschine arbeite oder nicht?


Antworten:


37

Wenn es sich um Windows handelt, werfen Sie einen Blick auf die Hardware-Bildschirme. Es wird eine Milliarde und fünf virtuelle Geräte der Marke VMWare geben.


Einverstanden. Da das OP RDP erwähnte, ist es höchstwahrscheinlich Windows, also los geht's.
mfinni

+1 für nicht angenommen, es ist Linux wie ich
Matt Simmons

3
Das Betrachten von Treibern funktioniert auch unter Linux. lsmod würde wahrscheinlich die benötigten Informationen zurückgeben.
Seamus Connor

@Seamus: Richtig!
Oli

3
Korrektur: Eine Milliarde und sechs.
Get-HomeByFiveOClock

65

Geben Sie im CMD-Fenster Folgendes ein:

SYSTEMINFO

Sie finden eine Zeile mit folgendem (oder ähnlichem) Text:

System Manufacturer:       VMware, Inc.
System Model:              VMware Virtual Platform

3
Wenn Hyper V verwendet wird, erhalten Sie:
Systemhersteller

16

Wenn es von VMware gehandhabt wird, ist es im Moment nicht allzu schwierig. Dies könnte sich in Zukunft ändern.

# dmidecode -s system-manufacturer
VMware, Inc.

Ich erhalte die Meldung, dass "dmidecode" auf Windows 7- und 10-ESXi 6.0-VMs nicht als interner oder externer Befehl erkannt wird.
Andrew S

dmidecodeist ein Linux-Befehl, mit dem Informationen über die Hardware abgerufen werden. Es funktioniert nicht unter Windows.
Jaime

Für das linuxBetriebssystem ist dies die beste Option, um Hardware im Vergleich zur virtuellen Maschine zu erkennen.
Satish


8

Unter Windows über CMD:

Systeminfo | findstr /i model

gibt etwas zurück wie:

System Model:              VMware Virtual Platform
                           [01]: Intel64 Family 6 Model 26 Stepping 5 GenuineInt

7

Führen Sie unter Linux Folgendes aus:

$ dmesg |grep -i hypervisor
 Hypervisor detected: KVM

4
Für Linux geben Sie dmesg |grep DMIVirtual Machines ein: [root @ myhost ~] # dmesg | grep DMI <br> DMI 2.3 vorhanden. DMI: Virtuelle Maschine / virtuelle Maschine der Microsoft Corporation, BIOS 23.05.2012, 090006 [root @ myhost ~] # dmesg | grep -i virtual DMI: Virtuelle Maschine / virtuelle Maschine der Microsoft Corporation, BIOS 23.05.2012, 090006 Booten des paravirtualisierten Kernels bei Hardware-Eingabe: Macintosh-Maustastenemulation als / devices / virtual / input / input1 scsi 0: 0: 0: 0: Msft Virtual Disk mit Direktzugriff 1.0 PQ: 0 ANSI: 4-Eingabe: Microsoft Vmbus HID-kompatible Maus als / devices / virtual / input / input4 Physisch: [root @ backdev1
user215983

das hat bei mir funktioniert. dmidecodezurückgekehrt permission denied !.
Alok Mishra

4

Wenn Sie unter Windows arbeiten , können Sie den systeminfoBefehl , wie von Castrocra angegeben , in einer Cmd-Shell ausführen und nach der "BIOS-Version" suchen.

Dies sind wahrscheinlich echte Maschinen:

BIOS Version:              Dell Inc. A03, 06/12/2010
BIOS Version:              Phoenix Technologies, LTD MS7254 1.08, 08/03/2007

Auf der anderen Seite handelt es sich mit ziemlicher Sicherheit um eine virtuelle Maschine:

BIOS Version:              VMware, Inc. VMW71.00V.0.B64.1201040214, 04/01/2012

1
Moderne Hypervisoren können hier beliebige Zeichenfolgen bereitstellen, was diese Prüfung nicht sehr zuverlässig macht.
Michael Hampton

2
Leider ist das nicht zuverlässig. Ich verwende eine virtuelle Maschine, aber mein BIOS zeigt Folgendes an: "Phoenix Technologies LTD 6.00, 16.08.2013"
Gavin Ward

VMWare mitPhoenix Technologies LTD 6.00, 9/17/2015
Ravi Parekh

3

Es wurde beantwortet, aber FWIW können Sie dies in Powershell tun:

gwmi -q "select * from win32_computersystem"

Der "Hersteller" ist "Microsoft Corporation" und das "Modell" ist "Virtuelle Maschine", wenn es sich um eine virtuelle Maschine handelt, oder es sollten normale Herstellerdetails angezeigt werden, wenn nicht, z. B. "Dell Inc." und "PowerEdge R210 II".


Lustig. Meine Windows-VM sagt, dass der Hersteller und das Modell beide "Bochs" sind.
Michael Hampton

1
Oder in cmd: wmic computersystem get manufacturer | find "VMware" && echo In VMWare || echo Not in VMWare. Es ist schneller als systeminfobasierende Lösungen.
atzz

@MichaelHampton Verwenden Sie VMs? Welche Plattform - HyperV, VMWare oder etwas anderes? Scheint, als würde die VM wahrscheinlich in einem Bochs-Emulator oder ähnlichem ausgeführt.
Richard Hauer


0

Wenn es sich um eine Unix-VM handelt, verwenden Sie imvirt . Es ist ein Perl-Skript, das VMWare, Xen und mehrere andere erkennt.


Er spricht von einer virtuellen Windows-Maschine, nicht von einer Unix-Maschine
Mat

0

Eine (relativ) einfache Möglichkeit, wichtige Virtualisierungsinformationen zu erkennen, ist WMI / WBEM. Sie können den Namespace root \ CIM2 verwenden und auf die Baseboard-Klasse (mit interessanten BIOS-Informationen) zugreifen, um eine Beschreibung des "physischen" Systems abzurufen. Diese Klasse enthält häufig Informationen zu Motherboard und Gehäuse - Hersteller, Modell, Seriennummer usw.

Führen Sie den folgenden Befehl an einer Eingabeaufforderung oder einer PowerShell-Sitzung aus:

wmic baseboard get manufacturer, product, Serialnumber, version

0

Noch einfacher - wmic / node: BIOS erhält Seriennummer

Alles, was eine Dell-ähnliche Seriennummer zurückgibt, ist physisch.

Es wird auch "VMware-42 22 26 a8 dd 6e e3 b3-2e 03 fc 2c 92 ae 2e 89" zurückgegeben, wenn es sich um eine virtuelle Maschine handelt.


-2

Ich hatte die gleiche Frage und stellte fest, dass viele Prozesse mit dem Namen "VM" ausgeführt werden, z. B. VMWareTray.exe


7
Ja, aber nur, wenn das VMware-Tools-Paket installiert ist.
Jscott

-2

nbtstat -a Das Ergebnis zeigt an, dass VMs ein spezifisches Präfix haben, das 00-50-56-XX-XX-XX lautet. Es gibt auch ein anderes Präfix, an das ich mich nicht erinnern kann, aber ich erinnere mich, dass Vcenter 00-50-56-XX-XX-XX verwendet. Dies ist also das, das ich nur überprüfe.

Ich denke, das ist der beste Weg, persönlich.


3
... außer wenn jemand die MAC-Adresse manuell auf etwas anderes setzt
Rex

oder klont es von vorhandener Hardware in einer PV-Situation
Rowan Hawkins
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.