Feedback

C# - Asynchrone Pingabfrage über PC´s in der Domaine

Veröffentlicht von am 27.08.2009
(3 Bewertungen)
Mit diesen Snippet kann man zum einem alle PC´s ermitteln die im AD registriert sind, und diese dann asynchron anpingen und das Ergebnis auswerten.Bei mir hat es mit 570 registrierten PC´s(wo nicht alle erreichbar waren usw) etwas bei einer Minute gedauert. Kommt immer drauf an wie das Netz beschaffen ist usw.
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) - Komplett 

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

using System;
using System.Net.NetworkInformation;
using System.DirectoryServices;

namespace Pinger
{
    class Program
    {
        static void Ping(string host)
        {
            using (Ping p = new Ping())
            {
                try
                {
                    //Eventhandler anmelden welcher ausgeführt werden soll, wenn ein Ping durch ist.
                    p.PingCompleted += new PingCompletedEventHandler(p_PingCompleted);
                    byte[] buffer = new byte[32];
                    int timeOut = 1000;
                    PingOptions op = new PingOptions();

                    //host als userStat Object übergeben     
                    //                                     |
                    //                                     \/                                           
                    p.SendAsync(host, timeOut, buffer, op, host);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
        }
        static void Main(string[] args)
        {
            string domain = "eureDomain";

            System.DirectoryServices.DirectoryEntry root = new System.DirectoryServices.DirectoryEntry(string.Concat("LDAP://",domain));
            DirectorySearcher searcher = new DirectorySearcher(root);
            //filter zur suche angeben, in diesem Fall, alle Pc´s
            searcher.Filter = "(objectCategory=computer)";

            foreach (SearchResult res in searcher.FindAll())
            {
                //ausgabe ist normaler Weiße:
                //''CN=computername''
                //Wir wollen nur den computernamen also schneiden wir den ''CN='' teil einfach weg
                Ping(res.GetDirectoryEntry().Name.Replace("CN=", ""));
            }
            Console.ReadLine();
        }

        static void p_PingCompleted(object sender, PingCompletedEventArgs e)
        {
            try
            {
                //wir wandeln das UserState Objekt in einen string um welcher unseren host darstellt.
                Console.WriteLine("Ping statuse for ''{0}'' is ''{1}''",e.UserState.ToString(),e.Reply.Status);
                
            }
            catch (Exception)
            {
                Console.WriteLine(IPStatus.Unknown);
            }
        }
    }
}

Abgelegt unter asynchron, Ping.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!