以下は、WMI を使用して、サーバー上のすべての NIC に割り当てられているすべての IP を見つけるコードです。Win32_NetworkAdapterConfiguration
この表で使用可能なその他のフィールドは、こちらで検索できます。
これは Web ページからライブで実行するには十分な速度ではない可能性があることに注意してください。私は似たような作業をしていますが、スケジュールされたタスクが1日に1回、すべてのサーバーと通信しています。次に、Web ページはデータベースから情報を読み取るだけです。
また、このコードは、現在のユーザーがリモート サーバーに十分なアクセス権を持っていることを前提としていることにも注意してください。これは、スケジュールされたタスクにするもう 1 つの理由です。管理者としてタスクを実行してデータを収集すると、通常の 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);
}
}
}
}
}
}