3

我需要获取网络上所有计算机的列表

该网络分为两个本地网络。一个管理网络和一个教育网络,然后在每个管理和教育网络下都有每个校区的子网。所以每个校区都有一个管理员和一个教育域控制器。

我可以在每个子网上的命令提示符下运行“网络视图”以获取所有计算机的列表,但我希望能够在一台服务器上运行它,或者如果我需要两台服务器(一台用于管理网络一个用于教育网络)

我知道有像 nmap 这样的应用程序可以做到这一点,但我希望能够使用内置的 Windows 功能,如“网络视图”或自己编写一些东西。

附加细节:我有一个程序(由以前的开发人员编写)作为后台服务运行,在每台计算机上启动一个弹出窗口并在火警触发时播放一个 .mp3 文件。我想使用该程序并使用PsExec启动弹出窗口并播放消息,而不是在每台计算机上安装该服务。我有 PsExec 工作,但需要获取所有计算机的列表。

4

5 回答 5

10

查找网络上所有活动/使用的 IP 地址 有一种非常简洁的方法,您可以很容易地找到网络上的所有活动/使用的 IP 地址,而无需任何第三方应用程序,或者更糟糕的是,手动 ping 每个 IP 地址。

打开命令提示符并输入以下内容:

FOR /L %i IN (1,1,254) DO ping -n 1 192.168.10.%i | FIND /i "回复">>c:\ipaddresses.txt

更改 192.168.10 以匹配您自己的网络。

于 2013-09-02T03:29:02.303 回答
0

我不知道您使用的网络有多大,但您可以尝试查询 Active Directory。查看下面的链接以获取更多信息。

Active Directory 中联机的计算机列表

于 2013-04-22T07:05:42.850 回答
0

你能试试这个吗?

代码 C#:

// Get host name from current network
String strHostName = Dns.GetHostName();
List<string> machinesName = new List<string>();    

// Find host by name
IPHostEntry iphostentry = Dns.GetHostByName(strHostName);

// Enumerate IP addresses from current network
int nIP = 0;
foreach(IPAddress ipaddress in iphostentry.AddressList)
{
    host = Dns.GetHostByAddress(ipaddress);//ip Address is to be specified machineName
    //Add machine name into the list        
    machinesName.Add(host.HostName);
}
于 2013-04-22T08:56:56.190 回答
0

你可以试试这个:- 使用 C# 代码:- /* 必须包含这些库 */

using System.Net;
using System.Net.Sockets; 

 private void GetIP()
    {
        Process netUtility = new Process();

        netUtility.StartInfo.FileName = "net.exe";

        netUtility.StartInfo.CreateNoWindow = true;

        netUtility.StartInfo.Arguments = "view";

        netUtility.StartInfo.RedirectStandardOutput = true;

        netUtility.StartInfo.UseShellExecute = false;

        netUtility.StartInfo.RedirectStandardError = true;

        netUtility.Start();



        StreamReader streamReader = new StreamReader(netUtility.StandardOutput.BaseStream, netUtility.StandardOutput.CurrentEncoding);



        string line = "";

        while ((line = streamReader.ReadLine()) != null)
        {

            if (line.StartsWith("\\"))
            {

                listBox1.Items.Add(line.Substring(2).Substring(0, line.Substring(2).IndexOf(" ")).ToUpper());

            }

        }

        streamReader.Close();
        netUtility.WaitForExit(1000);

    }

有关更多详细信息,我制作了一个 Windows 聊天应用程序,我正在使用此代码获取网络中的系统名称列表。你可以在那里检查它是如何工作的。链接是https://github.com/akki9c/wifi-chating/blob/master/chatSample/chatSample/Form1.cs

于 2014-12-25T09:25:56.953 回答
0

您可以有一个批处理文件运行Net View并将其转储到文本文件中。从那里你可以对这些数据做任何你想做的事情。这可以作为计划任务每​​天运行,或者在添加新机器时手动运行。

于 2013-04-22T04:54:12.463 回答