如何检查我的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服务器是虚拟机还是物理机的主要内容,如果未能解决你的问题,请参考以下文章