Вопрос или проблема
Можно ли узнать, является ли машина Windows, с которой я работаю, виртуальной или физической?
(Я подключаюсь к машине через RDP. Если это виртуальная машина, она работает и управляется VMWare).
Если это Windows, просто посмотрите на экраны оборудования. У него будет множество виртуальных устройств с брендом VMWare.
В окне CMD введите:
SYSTEMINFO
Вы найдете строку с следующим текстом (или похожим):
Производитель системы: VMware, Inc.
Модель системы: VMware Virtual Platform
Если это управляется VMware, в настоящее время это не слишком сложно. В будущем это может измениться.
# dmidecode -s system-manufacturer
VMware, Inc.
В Linux вы также можете использовать “virt-what”. “virt-what – определить, запускаемся ли мы в виртуальной машине“.
В Windows, из CMD:
Systeminfo | findstr /i model
возвращает что-то вроде:
Модель системы: VMware Virtual Platform
[01]: Intel64 Family 6 Model 26 Stepping 5 GenuineInt
В Linux выполните следующее:
$ dmesg |grep -i hypervisor
Гипервизор обнаружен: KVM
Если вы в Windows, как говорит castrocra, вы можете запустить команду systeminfo
из командной оболочки, а затем искать “Версия BIOS”.
Это, вероятно, реальные машины:
Версия BIOS: Dell Inc. A03, 06/12/2010
Версия BIOS: Phoenix Technologies, LTD MS7254 1.08, 08/03/2007
Это, с другой стороны, почти наверняка виртуальная машина:
Версия BIOS: VMware, Inc. VMW71.00V.0.B64.1201040214, 04/01/2012
Ответ был дан, но, что касается полезности, вы можете сделать это в PowerShell:
gwmi -q "select * from win32_computersystem"
Производитель будет “Microsoft Corporation”, а модель будет “Виртуальная машина”, если это виртуальная машина, или она должна отображать стандартные данные о производителе, если нет, например “Dell Inc.” и “PowerEdge R210 II” соответственно.
В Linux, если вы предпочитаете заглянуть в /proc
, попробуйте
cat /proc/cpuinfo | grep flags | grep hypervisor
Еще проще – wmic /node: bios get serialnumber
Все, что возвращает серийный номер в стиле Dell, является физическим.
Также будет возвращать “VMware-42 22 26 a8 dd 6e e3 b3-2e 03 fc 2c 92 ae 2e 89”, если это виртуальная машина.
Существует еще один вариант здесь, который описывает официальный способ сделать это:
Для Windows:
Нажмите Пуск > Выполнить.
Наберите msinfo32 и нажмите Enter.
В правой панели ищите Производитель системы ‘VMware, Inc.’
Вы можете попробовать программу “Определение хоста”.
Если это Unix VM, используйте imvirt. Это Perl-скрипт, который определяет VMWare, Xen и несколько других.
Один из (относительно) простых способов определить ключевую информацию о виртуализации – через WMI / WBEM. Вы можете использовать пространство имен root\CIM2 и получить доступ к классу Baseboard (полный интересной информацией о BIOS), чтобы получить описание “физической” системы. Этот класс часто включает информацию о материнской плате и корпусе – производитель, модель, серийный номер и другое.
Выполните следующую команду из командной строки или сеанса PowerShell:
wmic baseboard get manufacturer, product, Serialnumber, version
Лучший способ на Windows (PowerShell):
$systemModel = (Get-WmiObject -Class Win32_ComputerSystem).Model
if ($systemModel -match "Virtual|VMware|Hyper-V") {
Write-Output "Эта система - виртуальная машина."
} else {
Write-Output "Эта система - физическая машина."
}
У меня был тот же вопрос, и я обнаружил, что есть много процессов с “VM” в названии, например VMWareTray.exe
nbtstat -a
Результат скажет вам, так как ВМ имеют специфический префикс, который составляет 00-50-56-XX-XX-XX. Есть также другой префикс, который он использует, но я не могу его вспомнить с ходу, но я помню, что Vcenter использует 00-50-56-XX-XX-XX, поэтому я проверяю только его.
Лично я считаю, что это лучший способ.
Ответ или решение
Чтобы узнать, работает ли ваша Windows машина в виртуальной среде (например, на платформе VMware), вы можете воспользоваться несколькими методами, как в командной строке, так и через графический интерфейс. Вот наиболее распространенные способы:
1. Использование команды systeminfo
Запустите командную строку и выполните следующую команду:
systeminfo
Ищите строчки с информацией о производителе:
System Manufacturer: VMware, Inc.
System Model: VMware Virtual Platform
Если вы видите эти строки, значит ваша машина является виртуальной.
2. Использование PowerShell
Запустите PowerShell и выполните следующую команду:
gwmi -q "select * from win32_computersystem"
Здесь вы также можете увидеть, что "Manufacturer" будет равен "Microsoft Corporation" и "Model" будет "Virtual Machine" для виртуальных машин. Обычные физические машины будут отображать производитель и модель реального оборудования, например "Dell Inc." и "PowerEdge R210 II".
3. Проверка информации о BIOS
В командной строке вы также можете проверить версию BIOS:
systeminfo | findstr /i "BIOS Version"
Виртуальные машины имеют в версии BIOS указанного производителя, например:
BIOS Version: VMware, Inc. VMW71.00V.0.B64.1201040214
Физические системы обычно имеют название производителя и модель (например, Dell Inc.).
4. Использование dmidecode
в Linux
Если вы работаете на Linux, вы можете использовать следующую команду:
dmidecode -s system-manufacturer
Команда должна вернуть "VMware, Inc.", если вы работаете на виртуальной машине.
5. Проверка через /proc/cpuinfo
В Linux можно также проверить флаги процессора с помощью:
cat /proc/cpuinfo | grep flags | grep hypervisor
Если команда возвращает результат, содержащий слово "hypervisor", это указывает на то, что вы находитесь в виртуальной среде.
6. Дополнительные методы
- Вы можете также установить утилиту
virt-what
, которая может помочь определить, находитесь ли вы в виртуальной среде. - Если вы хотите проверить информацию о материнской плате, попробуйте команду:
wmic baseboard get manufacturer, product, Serialnumber, version
7. Пакеты и процессы
Если в системе есть процессы, содержащие "VM" в их именах, например VMWareTray.exe
, это может также означать, что вы находитесь на виртуальной машине.
Заключение
Эти методы помогут вам определить, работаете ли вы на виртуальной машине или физическом компьютере. Используйте тот метод, который вам наиболее удобен, и не забудьте проверить несколько источников для надежности информации.