我怎么知道我是否在虚拟机上工作?

有没有办法知道我正在使用的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我只检查一个。

我个人认为这是最好的方法。