有没有办法知道我正在使用的Windows机器是虚拟的还是物理的? (我正在用RDP连接到机器,如果它是一个虚拟机,它正在工作并由VMWare来处理)。
如果是Windows,只需查看硬件屏幕。 它将有十亿和五个VMWare品牌的虚拟设备。
在CMD窗口中键入:
SYSTEMINFO
你会发现一行以下文字(或类似):
System Manufacturer: VMware, Inc. System Model: VMware Virtual Platform
在Linux中,你也可以使用“virt-what”。 “ virt-what – 检测我们是否在虚拟机中运行 ”。
如果由VMware处理,目前并不难。 这可能在未来发生变化。
# dmidecode -s system-manufacturer VMware, Inc.
在Windows上,从CMD:
Systeminfo | findstr /i model
返回类似于:
System Model: VMware Virtual Platform [01]: Intel64 Family 6 Model 26 Stepping 5 GenuineInt
在Linux上运行这个:
$ dmesg |grep -i hypervisor Hypervisor detected: KVM
如果你在Windows系统中,像castrocra所说的那样,你可以在cmd shell中运行systeminfo
命令,然后查找“BIOS Version”。
这些可能是真正的机器:
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
已经回答了,但FWIW你可以在PowerShell中做到这一点:
gwmi -q "select * from win32_computersystem"
如果是“虚拟机”,“制造商”将是“微软公司”,“型号”是“虚拟机”,否则应显示常规制造商细节,如“戴尔公司” 和“PowerEdge R210 II”。
如果是Unix VM,则使用imvirt 。 这是一个Perl脚本,用于检测VMWare,Xen等等。
你可以尝试“主机检测”程序。
一个(相对)简单的方式来检测关键的虚拟化信息是通过WMI / WBEM。 您可以使用root \ CIM2命名空间,并访问Baseboard类(有趣的BIOS信息)以获取“物理”系统的描述。 这个类通常包括有关主板和机箱的信息 – 制造,型号,序列号等。
从命令提示符或PowerShell会话中运行以下命令:
wmic baseboard get manufacturer, product, Serialnumber, version
甚至更简单 – wmic / node:bios获取serialnumber
任何返回戴尔式序列号的东西都是物理的。
如果是虚拟机,它还会返回“VMware-42 22 26 a8 dd 6e e3 b3-2e 03 fc 2c 92 ae 2e 89”。
我有同样的问题,发现名称中有很多与“VM”运行的进程,例如VMWareTray.exe
nbtstat -a结果会告诉你,虚拟机有一个特定的前缀是00-50-56-XX-XX-XX。 还有另一个前缀,但我不记得在我的头顶,但我记得Vcenter使用00-50-56-XX-XX-XX,所以这个ios我只检查一个。
我个人认为这是最好的方法。