远程轮询网络上的多个桌面/服务器以确定IP类型:静态或DHCP

时间:2010-03-30 19:17:20

标签: c# networking desktop polling

如果有一位绅士回答我原来问题的90%,也就是说我现在能够轮询我正在运行以下脚本的设备。最终目标是在我支持的网络上的所有桌面/服务器上获取IP类型:静态或DHCP。我有一个服务器列表,我将在批处理文件中输入,只是查找代码以从一个位置实际轮询网络上的其他设备。

要查看的输出:

Device name:  IP Address:   MAC Address:         Type:  
Marvell Yukon 88E8001/8003/8010 PCI Gigabit Ethernet Controller NULL    00:00:F3:44:C6:00   DHCP
Generic Marvell Yukon 88E8056 based Ethernet Controller 192.168.1.102   00:00:F3:44:D0:00   DHCP
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();

txtLaunch.Text = ("Name\tIP Address\tMAC Address\tType" +"\r\n");

foreach (ManagementObject objMO in objMOC)
{
    StringBuilder builder = new StringBuilder();

    object o = objMO.GetPropertyValue("IPAddress");
    object m = objMO.GetPropertyValue("MACAddress");

    if (o != null || m != null)
    {
        builder.Append(objMO["Description"].ToString());
        builder.Append("\t");
            if (o != null)
               builder.Append(((string[])(objMO["IPAddress"]))[0].ToString());
            else
               builder.Append("NULL");
        builder.Append("\t");
        builder.Append(m.ToString());
        builder.Append("\t");
        builder.Append(Convert.ToBoolean(objMO["DHCPEnabled"]) ? "DHCP" : "Static");
        builder.Append("\r\n");
    }

    txtLaunch.Text = txtLaunch.Text + (builder.ToString());  

我愿意接受推荐。

2 个答案:

答案 0 :(得分:1)

您只需要在远程计算机上实例化您的管理类。

此链接:Remote WMI将为您提供所需的代码。只需遍历每台机器,即可获得所需的信息。

您尝试连接的每台计算机上都需要管理员权限。您可以将其缩放,但这有助于排除故障。

了解PowerShell以及使用WinRM使这些内容更容易。

答案 1 :(得分:0)

如果某些机器是64位且系统也是如此,我们会怎么做?因为它搜索32位系统,不是吗? 它说:“SELECT * FROM Win32_OperatingSystem”