ljh*_*ljh 13 c# virtual-machine windows-server
我正在将桌面远程连接到我们的实验室/数据中心的Windows服务器.我要求以编程方式弄清楚我们所有的服务器都是虚拟机或物理服务器,当然我们有环境表告诉我们哪个是哪个.但我需要编写代码来区分它.我需要使用什么技术?我没有找到.Net程序集来做到这一点.寻找专家分享您的知识或指导,任何研究方向或链接,任何事情将不胜感激!
小智 16
您可以尝试使用以下PowerShell脚本,它利用WMI来确定计算机是虚拟机还是物理计算机.
gwmi -q "select * from win32_computersystem"
当然,您也可以使用C#代码来查询WMI.上面脚本的输出如下:
Domain: ... Manufacturer: Microsoft Corporation Model: Virtual Machine Name : ..... ....
要从命令提示符检查此信息,您可以运行以下命令: systeminfo | find "System"
虚拟服务器的输出示例:
System Manufacturer: Microsoft Corporation
System Model: Virtual Machine
System Type: x64-based PC
Run Code Online (Sandbox Code Playgroud)
物理服务器的输出示例:
System Manufacturer: HP
System Model: ProLiant BL460c G6
System Type: x64-based PC
Run Code Online (Sandbox Code Playgroud)
据我所知,没有简单的方法可以做到这一点.
有一些解决方法,但至少据我所知,并非一个通用的解决方案.
本阿姆斯特朗撰写了一篇关于检测微软虚拟机的帖子,并且有一个低级别的技巧可以决定你是在虚拟PC还是VMWare中运行,但仍然没有留下VirtualBox等.
您可能想要尝试的一个技巧是检测是否安装了VMWare Tools或VirtualBox Tools.在大多数情况下,它们安装在客户操作系统上以提供所需的功能,但是很难在您的端部维护不同的安装GUIDS,因此它不是理想的解决方案.
---此外,如果VM在Linux KVM环境中运行,则输出就像这样
