gpt4 book ai didi

c# - 虚拟机上的 WMI 查询返回本地信息

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:25 25 4
gpt4 key购买 nike

为简单起见,我需要管理和更新大约 150 个虚拟服务器的列表。我想获得有关它们的一些信息,但为了举例,假设我只想要虚拟机的 RAM 和物理处理器。

但是,当我查询虚拟服务器时,返回的信息只是我本地机器的信息,而不是虚拟机的信息。我不知道该去哪里。我得到的最多帮助来自 http://blogs.technet.com/b/richard_macdonald/ .

我的应用程序是用 C#.NET 编写的,connstr 是从以下内容创建的字符串:

SqlConnectionStringBuilder stb = new SqlConnectionStringBuilder();
stb.DataSource = lbxConnections.SelectedItem.ToString();
stb.IntegratedSecurity = true;

string connstr = stb.ToString();

其中 lbxConnections 是一个列表框,其中填充了来 self 的事件 sql 服务器数据库的连接信息。

我用来查询虚拟机的代码,在成功连接到它并确保它在那里之后,如下所示

using (SqlConnection conn = new SqlConnection(connstr))

跳转到下面的代码块

ManagementScope manScope = new ManagementScope(@"\\" + connstr + "\root\virtualization");
ObjectQuery queryObj = new ObjectQuery("SELECT * FROM Win32_ComputerSystem");
ManagementObjectSearcher vmSearcher = new ManagementObjectSearcher(manScope, queryObj);
ManagementObjectCollection vmCollection = vmSearcher.Get();

foreach (ManagementObject vm in vmCollection)
{
txtPhysicalProcessors.Text = (vm["NumberOfProcessors"]).ToString();
txtRam.Text = Convert.ToString(Math.Round(Convert.ToDouble(vm.Properties["TotalPhysicalMemory"].Value) / 1073741824, 1)) + " GB";
}

如果我的问题不符合社区标准,我深表歉意,因为这是我在 StackOverflow 上发表的第一篇文章,此前我在 4 年的软件开发中提出的所有其他问题都已由过去的文章回答。

任何帮助或建议都会很棒。谢谢! :)

最佳答案

您必须调整 ManagementScope 才能使其正常工作。而不是您现在提供的 connstr,将其替换为 IP 地址或 VMMware 实例的名称。 (我个人主要使用目标机器的名称)此外,在这种情况下,您必须使用 \\ 来转义 \

到目前为止,这是我第一次看到使用 SqlConnectionString 的 WMI 查询,怀疑它是否可行。

ManagementScope manScope = new ManagementScope(@"\\\\" + myServerName+ \\root\\virtualization");  
ObjectQuery queryObj = new ObjectQuery("SELECT * FROM Win32_ComputerSystem");
ManagementObjectSearcher vmSearcher = new ManagementObjectSearcher(manScope, queryObj);

foreach (ManagementObject ob in vmSearcher.Get())
{
txtPhysicalProcessors.Text = ob["NumberOfProcessors"].ToString();
txtRam.Text = Convert.ToString(Math.Round(Convert.ToDouble(ob["TotalPhysicalMemory"].ToString()) / 1073741824, 1)) + " GB";
}

在旁注中,查看 this link ,它可能有助于在 C# 中生成 WMI 查询。为您提供要执行的代码。

关于c# - 虚拟机上的 WMI 查询返回本地信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21141100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com