示例#1
0
        /// <summary>
        /// Liest das AD aus und gibt eine Liste mit allen Gruppen zurück
        /// </summary>
        /// <returns></returns>
        private Task GetAllADGroups()
        {
            return(Task.Factory.StartNew(() =>
            {
                // create your domain context
                PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
                GroupPrincipal qbeGrp = new GroupPrincipal(ctx);

                // Erstellt den Eintrag der während des Ladens angezeigt wird
                GroupPrincipal loading = new GroupPrincipal(ctx)
                {
                    Name = "loading ..."
                };

                // Fügt die Lade Gruppe der Liste hinzu die angezeigt wird
                GroupsFiltered = new ObservableCollection <GroupPrincipal>
                {
                    loading
                };

                // create your principal searcher passing in the QBE principal
                PrincipalSearcher srch = new PrincipalSearcher(qbeGrp);

                List <GroupPrincipal> lst = new List <GroupPrincipal>();
                // find all matches
                foreach (var found in srch.FindAll())
                {
                    if (found is GroupPrincipal grp)
                    {
                        AllGroups.Add(grp);
                    }
                }
                // Sortiert die Liste mit alles Gruppen
                AllGroups.Sort((x, y) => x.Name.CompareTo(y.Name));

                // Kopiert zum Start alle Gruppen in die gefilterte Liste
                GroupsFiltered = new ObservableCollection <GroupPrincipal>(AllGroups);
            }));
        }