C# 程序返回通过 Active Directory 连接的已打开电源的计算机



我有一个应用程序,列出了我网络中的所有机器。所有这些计算机都在同一域的Active Directory中注册。

我想知道哪台机器已打开并连接到网络,哪台未打开。

有没有办法用 C# 做到这一点?

您可以使用一个简单的函数来检查一台服务器是否在线。使用该方法后,您可以运行服务器列表(从AD或csv(,并查看哪个服务器在线/离线。

以下示例显示了如何在控制台中打印结果或使用字典来存储结果。

using System.Net.NetworkInformation; // Required for Ping()
public static bool IsServerPingable(string server)
{
try
{
var ping = new Ping().Send(server);
return true;
}
catch
{
return false;
}
}
// Use in the main
List<string> servers = new List<string>() { "server1", "server2", "server3", "server4", "server5" };
Dictionary<string, bool> serverStatus = new Dictionary<string, bool>();
Parallel.ForEach(servers, new ParallelOptions { MaxDegreeOfParallelism = 4 }, (server) => 
{
Console.WriteLine($"{server} online: {IsServerPingable(server)}");
serverStatus.Add(server, IsServerPingable(server));
});

若要检查服务器是否在域中,需要编写另一个使用 WMI 的方法(如@Flydog57所述(。

最新更新