Как проверить мой сервер Windows - это виртуальная машина или физическая машина

Я удаляю рабочий стол на серверы Windows в нашей лаборатории/центре обработки данных. У меня есть требование, чтобы все наши серверы были виртуальными машинами или физическими серверами программно, конечно, у нас есть таблица окружения, рассказывающая нам, что есть. Но мне нужно написать код, чтобы отличить его. Какую технику мне нужно использовать? Я не нашел .Net Assembly для этого. Ищете эксперта, чтобы поделиться своими знаниями или руководством, любым направлением или ссылкой на исследования, все будет оценено!

Ответ 1

Вы можете попытаться использовать следующий PowerShell script, он использует WMI, чтобы узнать, является ли машина виртуальной машиной или физической машиной.


gwmi -q "select * from win32_computersystem"
Certainly, you can use C# code to query WMI too. The output of script above will be like following:
Domain:   ...
Manufacturer: Microsoft Corporation
Model: Virtual Machine
Name : .....
....

Ответ 2

Насколько я знаю, нет простого способа сделать это.

Есть несколько обходных решений, но есть, по крайней мере, насколько я знаю, не одноразовое решение.

Бен Армстронг написал сообщение о Обнаружение виртуальных машин Microsoft и там трюк низкого уровня, который может определить, работаете ли вы в Virtual PC или VMWare, но это все равно не оставляет VirtualBox и других.

Трюк, который вы можете попробовать, это определить, установлены ли инструменты VMWare или VirtualBox Tools. В большинстве случаев они устанавливаются на гостевой ОС для обеспечения необходимых функций, но будет сложно поддерживать различные установки GUIDS на вашем конце, чтобы это не идеальное решение.

--- Кроме того, если виртуальная машина работает в среде Linux KVM, вывод будет таким же enter image description here

Ответ 3

Чтобы проверить это из командной строки, вы можете запустить это: systeminfo | find "System"

Пример вывода для виртуального сервера:

System Manufacturer:       Microsoft Corporation    
System Model:              Virtual Machine    
System Type:               x64-based PC

Пример вывода для физического сервера:

System Manufacturer:       HP
System Model:              ProLiant BL460c G6
System Type:               x64-based PC

Ответ 4

Нет простого способа узнать, работаете ли вы в голом металле или на виртуальном компьютере, самое лучшее, что вы можете сделать, это получить некоторую информацию об оборудовании и сделать обоснованное предположение, например, если машина сетевой адаптер, который содержит Microsoft, VMware, Oracle, Hyper-V, Virtual или VirtualBox, скорее всего, это виртуальная машина, учитывая, что ни Microsoft, ни Oracle, ни VMware не создают сетевые карты.

Как вы используете С#, класс для получения этой и другой информации об оборудовании ManagementClass, также есть этот приятный project, который позволяет извлекать тонны информации с вашего компьютера с помощью ManagementClass.

Ответ 5

Запустите командную строку командной строки systeminfo, чтобы просмотреть детали системы системы. Там вы найдете информацию о виртуле и физической машине.

Ответ 6

Единственный * программный * способ, которым я знаю это надежно:

  • Напишите приложение, которое сканирует вашу сеть (или диапазон IP), чтобы получить список машин.
  • Покажите эти машины человеку и попросите их установить флажок, если это VM...
  • Распечатайте отчет.

Ответ 7

Попробуйте следующее:

FOR /F "tokens=*" %a IN ('wmic bios get bioscharacteristics^|find /c "33"') DO set USBlegacy=%a

Это возвращает "1" для ограниченного диапазона рабочих столов и ноутбуков в моей среде и "0" для рабочих станций VMWare 9, ESX 5.5 и Citrix 6.5 и 7.6. BIOSCharacteristic "50" (один "зарезервирован для системного поставщика" ) Я нашел только в четырех виртуальных средах, чтобы работать в обратном порядке.

Изменить: или там:

FOR /F "tokens=*" %a IN ('wmic path win32_pnpentity get ^|find /c "ACPI Fan"') DO set ACPIfan=%a

Возвращает "5" на рабочем столе HP "0" на рабочей станции VMware 9 и ESX 5.5, а не проверяется другими.

Ответ 8

вы можете использовать эту команду в cmd или powershell

Systeminfo

Вы найдете строку со следующим текстом (или подобным):

Производитель системы: VMware, Inc. Модель системы: виртуальная платформа VMware