寻找一些建议,如果有人知道我想做什么甚至是可能的。我先解释一下这个场景。
主WebServer :
服务器群集(x10服务器):
我要做的是使用在主Web服务器上运行的MVC3网站连接到服务器群集并返回每个服务器上的虚拟IP地址列表,然后将其存储在MS SQL数据库中。这可能吗,可以通过.NET网站完成吗?我相信我可以尝试编写一个PowerShell脚本,因为每个服务器上都有PowerShell 1+。
答案 0 :(得分:2)
下面是一些代码,它使用WMI查找分配给服务器上所有NIC的所有IP。您可以在Win32_NetworkAdapterConfiguration
表here中查找其他可用字段。
请注意,这可能不够快,无法从网页上直播。我有类似的工作,但我有一个预定的任务,每天与我的所有服务器谈一次。然后网页只是从数据库中读取信息。
另请注意,此代码假定当前用户对远程服务器具有足够的访问权限。这是使其成为计划任务的另一个原因。您可以以管理员身份运行任务以收集数据,然后常规IIS用户可以从数据库中读取。否则,您将不得不更改IIS运行的用户,以便为其提供足够的权限。
// You'll need to reference "System.Management" for this to work...
var server = "your server name";
var scope = new System.Management.ManagementScope(@"\\" + server + @"\root\cimv2");
scope.Connect();
using (var searcher = new System.Management.ManagementObjectSearcher(scope,
new System.Management.ObjectQuery(
"Select Caption, IPAddress FROM Win32_NetworkAdapterConfiguration")))
{
using (var children = searcher.Get())
{
if (children.Count > 0)
{
foreach (var item in searcher.Get())
{
var nicName = item["Caption"];
var ips = item["IPAddress"] as string[];
if (ips != null)
{
Console.WriteLine(nicName);
foreach (var ip in ips)
{
Console.WriteLine(" " + ip);
}
}
}
}
}
}