Як дізнатися, працюю я на віртуальній машині чи ні?


57

Чи є спосіб дізнатися, чи машина Windows, над якою я працюю, віртуальна чи фізична? (Я підключаюся з RDP до машини. Якщо це віртуальна машина, вона працює і обробляється VMWare).


2
дивіться також - stackoverflow.com/questions/779723/…
warren

Відповіді:


37

Якщо це Windows, просто подивіться на апаратні екрани. Він матиме віртуальні пристрої, розміщені мільярд і п'ять VMWare.


Домовились. Оскільки в ОЗ згадується RDP, це, швидше за все, Windows, тому ви йдете.
mfinni

+1 за те, що не припускаю, що це Linux, як я
Метт Сіммонс

3
Дивлячись на драйвери також працює для Linux. lsmod, ймовірно, поверне потрібну вам інформацію.
Seamus Connor

@Seamus: Досить правда!
Олі

3
Виправлення: мільярд шість.
Get-HomeByFiveOClock

65

У вікні CMD тип:

SYSTEMINFO

Ви знайдете рядок із наступним текстом (або подібним):

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

3
Якщо використовується Hyper V, ви отримуєте: Виробник системи: Корпорація Microsoft Модель системи: Віртуальна машина
Gayan Dasanayake

16

Якщо ним управляє VMware, це не так вже й складно в даний момент. Це може змінитися в майбутньому.

# dmidecode -s system-manufacturer
VMware, Inc.

Я отримую, що "dmidecode" не розпізнається як внутрішня чи зовнішня команда обох Windows 7 та 10 ESXi 6.0 VM.
Andrew S

dmidecodeце команда linux, яка використовується для отримання інформації про обладнання. Він не працює в Windows.
Хайме

для linuxОС це найкращий варіант виявлення апаратури проти віртуальної машини ..
Satish


8

У Windows із CMD:

Systeminfo | findstr /i model

повертає щось на кшталт:

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

7

У Linux запустіть це:

$ dmesg |grep -i hypervisor
 Hypervisor detected: KVM

4
для linux ви вводите dmesg |grep DMIвіртуальні машини: [root @ myhost ~] # dmesg | grep DMI - DMI 2.3 присутній. DMI: Віртуальна машина Microsoft Corporation / Віртуальна машина, BIOS 090006 23.05.2012 [root @ myhost ~] # dmesg | grep -віртуальний DMI: Віртуальна машина Microsoft / Віртуальна машина Microsoft, BIOS 090006 23.05.2012 Завантаження паравіртуалізованого ядра на головному апаратному введенні: емуляція кнопок миші Macintosh як / пристрої / віртуальний / вхід / вхід1 scsi 0: 0: 0: 0: Віртуальний диск Msft з прямим доступом 1,0 PQ: 0 ANSI: 4 вхід: Миша, сумісна з Microsoft Vmbus HID, як / пристрої / віртуальний / вхід / вхід4 Фізичні: [root @ backdev1
user215983

це працювало для мене. dmidecodeповернувся permission denied !.
Алок Мішра

4

Якщо ви перебуваєте в Windows, як говорить кастрокра , ви можете запустити systeminfoкоманду всередині оболонки cmd , а потім шукайте "Версію BIOS".

Це, мабуть, справжні машини:

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

З іншого боку, це майже напевно віртуальна машина:

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

1
Сучасні гіпервізори можуть подавати сюди довільні рядки, що робить це не дуже надійною перевіркою.
Майкл Хемптон

2
На жаль, це не є надійним. Я запускаю віртуальну машину, але мій BIOS відображається як: "Phoenix Technologies LTD 6.00, 16.08.2013"
Gavin Ward

VMWare withPhoenix Technologies LTD 6.00, 9/17/2015
Раві Парех

3

На це відповіли, але FWIW ви можете це зробити в повному обсязі:

gwmi -q "select * from win32_computersystem"

"Виробник" буде "Корпорація Майкрософт", а "Модель" - "Віртуальна машина", якщо це віртуальна машина, або вона повинна відображати регулярні деталі виробника, якщо ні, наприклад, "Dell Inc." та "PowerEdge R210 II" відповідно.


Смішно. Мій Windows VM говорить, що і виробник, і модель є "Бохами".
Майкл Хемптон

1
Або в cmd : wmic computersystem get manufacturer | find "VMware" && echo In VMWare || echo Not in VMWare. Це швидше, ніж на systeminfoбазі рішень.
atzz

@MichaelHampton Чи використовуєте ви VM? Яка платформа - HyperV, VMWare чи щось інше? Здається, що VM, ймовірно, працює в емуляторі Bochs або щось подібне.
Річард Хауер


0

Якщо це Unix VM, використовуйте imvirt . Це сценарій Perl, який виявляє VMWare, Xen та декілька інших.


Він говорить про віртуальну машину Windows, а не про Unix
Мат

0

Один (відносно) простий спосіб виявити ключову інформацію про віртуалізацію - через WMI / WBEM. Ви можете використовувати корінний \ CIM2 простір імен та отримати доступ до класу Baseboard (повний цікавої інформації про BIOS), щоб отримати опис "фізичної" системи. Цей клас часто включає інформацію про материнську плату і шасі - виробництво, модель, серійний номер тощо.

Виконайте таку команду з командного рядка або сесії PowerShell:

wmic baseboard get manufacturer, product, Serialnumber, version

0

Ще простіше - wmic / node: біоси отримують серійну кількість

Все, що повертає серійний номер у стилі Dell, є фізичним.

Він також поверне "VMware-42 22 26 a8 dd 6e e3 b3-2e 03 fc 2c 92 ae 2e 89", якщо це віртуальна машина.


-2

У мене було те саме питання, і я виявив, що в імені працює багато процесів, що працюють з "VM", наприклад, VMWareTray.exe


7
Так, але тільки якщо встановлено пакет інструментів VMware.
jscott

-2

nbtstat -a Результат покаже вам, що у машин відеоряду є специфічний префікс, який становить 00-50-56-XX-XX-XX. Існує також інший префікс, який він використовує, але я не можу згадати у верхній частині голови, але я пам'ятаю, що Vcenter використовує 00-50-56-XX-XX-XX, так що цей ios, який я лише перевіряю.

Я думаю, що це найкращий спосіб, особисто.


3
... за винятком випадків, коли хтось вручну встановлює MAC-адресу на щось інше
Rex

або клонує його з існуючого обладнання в умовах ПВ
Роуан Хокінс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.