【发布时间】:2014-02-04 03:20:18
【问题描述】:
为了简单起见,我需要管理和更新大约 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 是一个列表框,其中填充了我的活动 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 年软件中的所有其他问题。
任何帮助或建议都会很棒。谢谢! :)
【问题讨论】:
标签: c# sql-server wmi virtual-machine remote-access