下面是一些使用 WMI 查找分配给服务器上所有 NIC 的所有 IP 的代码。您可以在此处Win32_NetworkAdapterConfiguration
查找表中可用的其他字段。
请注意,这可能不够快,无法从网页实时运行。我有类似的工作,但我有一个计划任务每天与我的所有服务器通话一次。然后网页只是从数据库中读取信息。
另请注意,此代码假定当前用户在远程服务器上有足够的访问权限。这是使其成为计划任务的另一个原因。您可以以管理员身份运行任务来收集数据,然后普通 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);
}
}
}
}
}
}