如何检查我的windows服务器是虚拟机还是物理机

Posted

技术标签:

【中文标题】如何检查我的windows服务器是虚拟机还是物理机【英文标题】:How to check my windows server is virtual machine or physical machine 【发布时间】:2013-03-07 07:22:53 【问题描述】:

我正在将桌面远程连接到我们实验室/数据中心的 Windows 服务器。我需要以编程方式确定我们所有的服务器是虚拟机还是物理服务器,当然我们有环境表告诉我们哪个是哪个。但是我需要编写代码来区分它。我需要使用什么技术?我没有找到一个 .Net 程序集来做到这一点。寻找专家分享您的知识或指导,任何研究方向或链接,任何东西都将不胜感激!

【问题讨论】:

【参考方案1】:

您可以尝试使用以下 PowerShell 脚本,它利用 WMI 来确定机器是虚拟机还是物理机。


gwmi -q "select * from win32_computersystem"
当然,您也可以使用 C# 代码查询 WMI。上面脚本的输出将如下所示: 领域: ... 制造商:微软公司 型号:虚拟机 姓名 : ..... ……

【讨论】:

【参考方案2】:

要从命令提示符中检查,您可以运行以下命令: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

【讨论】:

【参考方案3】:

据我所知,没有简单的方法可以做到这一点。

有一些变通方法,但至少据我所知,并不是一刀切的解决方案。

Ben Armstrong 写了一篇关于 Detecting Microsoft virtual machines 的帖子,其中有一个低级技巧可以确定您是否在 Virtual PC or VMWare 内运行,但仍然排除了 VirtualBox 和其他人。

您可能想尝试的一个技巧是检测是否安装了 VMWare 工具或 VirtualBox 工具。在大多数情况下,它们安装在来宾操作系统上以提供所需的功能,但很难在您的终端上维护不同的安装 GUIDS,因此这不是一个理想的解决方案。

--- 另外,如果VM在Linux KVM环境中运行,输出是这样的

【讨论】:

感谢您的回复,将对此进行调查。【参考方案4】:

没有简单的方法来判断您是在裸机还是在虚拟计算机中运行,您可以做的最好的事情是获取一些硬件信息并做出有根据的猜测,例如,如果机器有包含 Microsoft、VMware、Oracle、Hyper-V、Virtual 或 VirtualBox 的网络适配器,考虑到 Microsoft、Oracle 或 VMware 都没有制造网卡,它很可能是虚拟机。

当您使用 C# 时,用于检索此和其他硬件信息的类是 ManagementClass,还有一个很好的 project 可让您使用 ManagementClass 从计算机中检索大量信息。

【讨论】:

感谢您的回复。将检查链接。【参考方案5】:

运行systeminfo命令@命令提示符查看系统menufacturer n系统型号详情。在那里您可以找到虚拟机和物理机信息。

【讨论】:

【参考方案6】:

试试这个:

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

这对于我的环境中有限范围的台式机和笔记本电脑返回“1”,对于 VMWare 工作站 9、ESX 5.5 以及 Citrix 6.5 和 7.6,返回“0”。 BIOSCharacteristic “50”(一个“为系统供应商保留”)我只在四个虚拟环境中找到了,因此可以反过来工作。

编辑:或者有这个:

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

在 HP 台式机上返回“5”,在 VMware 工作站 9 和 ESX 5.5 上返回“0”,未在其他工作站上测试。

【讨论】:

在笔记本的物理 windows 10 上返回 0 “ACPI Fan”是 '0' 吗?如果笔记本没有风扇就有意义。我在 Windows 10 中的 Dell Precision m3800 笔记本电脑返回“2”表示“ACPI Fan”(“1”表示“USBlegacy”) 是的。 ACPI 风扇 = 0【参考方案7】:

你可以在cmd或者powershell中使用这个命令

系统信息

您会发现一行包含以下文字(或类似文字):

系统制造商:VMware, Inc. 系统模型:VMware 虚拟平台

【讨论】:

【参考方案8】:

我所知道的唯一*编程*方式可靠是:

    编写一个应用程序来抓取您的网络(或 IP 范围)以获取机器列表。 向一个人展示这些机器,并要求他们勾选一个复选框,如果它是一个 VM... 打印报告。

【讨论】:

以上是关于如何检查我的windows服务器是虚拟机还是物理机的主要内容,如果未能解决你的问题,请参考以下文章

如何判断当前主机是物理机还是虚拟机

如何判断当前主机是物理机还是虚拟机?

如何判断服务器是物理机还是虚拟机

检查 Linux 系统是运行在虚拟机上还是物理机上

如何判断一台机器是物理机还是虚拟机

判断当前主机是物理机还是虚拟机?