Laden...
T
Tokka
myCSharp.de - Member
19
Themen
108
Beiträge
Letzte Aktivität
vor 3 Jahren
Dabei seit
20.04.2005
Alter
44
Beruf
Consultant
Herkunft
Hamburg
Erstellt vor 14 Jahren

Hi,

sehr schön, ja die blöde PageSize... damit habe ich auch gekämpft.

Erstellt vor 14 Jahren

Hi,

hiermit lese ich unser gesamtes Directory aus...


using System;
using System.Collections.Generic;
using System.DirectoryServices;
using System.IO;


namespace ReadOut_AD_Accounts
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryEntry dirE = new DirectoryEntry("LDAP://dchostname.vmlab.zz/dc=vmlab,dc=zz");
            DirectorySearcher dirS = new DirectorySearcher(dirE);

            StreamWriter outFile = new StreamWriter("C:\\out.csv", false, System.Text.Encoding.Default);

            dirS.PageSize = 100;
            //dirS.Filter = "(&(mail=*)(|(objectCategory=person)(objectCategory=contact)))";
            dirS.Filter = "(&(|(objectCategory=person)(objectCategory=contact)))";

            HashSet<string> properties = new HashSet<string>();

            properties.Add("sAMAccountname");
            properties.Add("displayName");
            properties.Add("sn");
            properties.Add("givenName");
            properties.Add("title");
            properties.Add("description");
            properties.Add("physicalDeliveryOfficeName");
            properties.Add("telephoneNumber");
            properties.Add("streetAddress");
            properties.Add("l");
            properties.Add("st");
            properties.Add("postalCode");
            properties.Add("homePhone");
            properties.Add("mobile");
            properties.Add("facsimileTelephoneNumber");
            properties.Add("info");
            properties.Add("department");
            properties.Add("company");
            properties.Add("manager");
            properties.Add("memberOf");

            foreach (string property in properties)
            {
                Console.Write(property + ";");
                outFile.Write(property + ";");
            }
            Console.WriteLine();
            outFile.WriteLine();

            foreach (SearchResult result in dirS.FindAll())
            {
                foreach (string property in properties)
                {
                    Console.Write(getValue(result, property));
                    outFile.Write(getValue(result, property));
                }
                Console.WriteLine();
                outFile.WriteLine();
            }
            outFile.Close();
            Console.ReadKey();
        }
        
        static string getValue(SearchResult result, string propName)
        {
            if (result.Properties[propName].Count > 0)
                return result.Properties[propName][0].ToString().Replace(Environment.NewLine, "\\") + ";";
            return ";";
        }
    }
}

Erstellt vor 14 Jahren

.....
Noch eine Frage, wie genau greife ich auf einen bestimmten Pfad zu?
D.h. wenn ich nur die User aus einer OU haben möchte heißt z.B.

Nur Berlin, Gesellschaft1, Users <--

Habt ihr da eine Möglichkeit für mich?
Danke nochmal!

Dazu musst du einfach nur den LDAP Pfad anpassen.


DirectoryEntry dirE = new DirectoryEntry("LDAP://domaincontroller.domain.zz/ou=Users,ou=Gesellschaft1,ou=Berlin,dc=domain,dc=zz");

Lade dir mal einen LDAP Browser z.B. von softerra herunter. Mit dem kannst Du dann entsprechende LDAP Abfragen gegen das AD abdrücken.
Das Hilft durchaus bei der Fehlersuche, und auch am Anfang, wenn man LDAP queries noch nicht so gut hinbekommt.

Sehr hilfreich ist auch noch SelfADSI.

Gruß
tokka

Erstellt vor 14 Jahren

Hi,

setz mal den Filter des DirectorySearcher auf


dirS.Filter = "(&(|(objectCategory=person)(objectCategory=contact)))";

Gruß
Tokka

Erstellt vor 14 Jahren

Hallo Zusammen,

ich habe ein Frage bezüglich der "Organisation" einer Solution im VS 2010.

Ich habe eine Solution "MyLibrary" angelegt. Dieser Solution habe ich zwei Projekte (Klassenbibliothek) hinzugefügt.

Wenn ich nun meine Solution compiliere, erhalte ich pro Klassenbibliotheksprojekt eine DLL.

Meine Frage ist nun, ist es möglich, die Struktur der Solution beizubehalten, aber nur eine DLL als Release zu bekommen??

Danke

Erstellt vor 14 Jahren

Hi,

um alle User einer bestimmten Gruppe auszugeben muss der DN der Gruppe angegeben werden. Wildcards sind dabei nicht erlaubt!!

Der Filte wäre wie folgt:


"(&(objectCategory=person)(objectClass=user)" _
    & "(memberOf=cn=TestGroup,ou=Sales,dc=MyDomain,dc=com))" 

Alternativ geht auch sowas:


using System.DirectoryServices;

DirectoryEntry group = new DirectoryEntry("LDAP://CN=MyGroup, …");
DirectorySearcher src = new DirectorySearcher(group "(&(objectClass=user)(objectCategory=Person))");
src.AttributeScopedQuery = "member";
src.PropertiesToLoad.Add("sn");
src.PropertiesToLoad.Add("givenName");
src.PropertiesToLoad.Add("telephoneNumber");
foreach(SearchResult res in src.FindAll())
{
    Console.WriteLine("…");
}

Quelle: MSDN

Gruß
Tokka

Erstellt vor 14 Jahren

Hallo Zusammen,

ich habe ein kleines .Net Programm entwickelt, mit dem Ich Änderungen an AD Accounts (Gruppenmitgliedschaften) vornehmen kann.

In der assebly.exe.cfg habe ich die Credentials des entsprechenden Users hinterlegt.

Führe ich das Tool als angemeldeter "Domain Admin" aus, geht alles.
Wenn Ich das Tool als "normaler" User ausführe, fällt das Tool auf die Nase.
Es ist offensichtlich, dass die hinterlegten Credentials nicht "gezogen" werden.

Habt Ihr ne Idee, wie man das Programm unter einem anderen User ausführen kann?

Gruß
Tokka

Erstellt vor 14 Jahren

N'abend zusammen,

ich habe eine Frage zu Interfaces.

Ich habe ein Interface IPersonDAL erstellt:


interface IPersonDal
{
  int Insert(string firstName, string lastName, int age);
}

Dieses wird wie folgt eingesetzt:


public class PersonDAL :IPersonDal {
     public int Insert(string firstName, string lastName, int age) {
        ...
        SqlCommand dCmd = new SqlCommand("InsertData", conn);
        ....
      try {
         ...
      }
     ...
}

Soweit ist mir alles klar!
Aber nun greife ich aus dem BLL auf die Methoden der DAL zu.

Aber wer kann mir erklären welchen es Sinn macht, die Instanziierung mittels

IPersonDal pDAL = new PersonDAL();

durchzuführen?

Bisher habe ich immer

PersonDal pDAL = new PersonDAL();

genutzt.

Danke

Ergänzug:

Wenn ich das recht verstehe, müsste ich die Instanziierung der DAL in der BLL gegen das Interface durchführen, da die Implementierung ja immer gegen ein Interface und nicht gegen eine konkrete Klasse erfolgen soll.

So wie ich es früher gemacht habe, würde die Implementierung nciht der losen Kopplung entsprechen.

Liege ich damit richtig??

Erstellt vor 16 Jahren

Moin!

Ja, Windows2008 als Workstation zu nutzen bzw. es in eine Workstation zu verwandeln ist auch ne nette idee. Allerdings ist die Lizenz ja unwesentlich teurer 😃

Erstellt vor 16 Jahren

Moin!

Wir stellen gerade bei einem Kunden sämtliche Server auf "Server 2008" um. Im eigenen Stall werden alle neu benötigten Server auch auf 2008 betrieben.

Aus meiner Sicht sind hier viele Verbesserungen (Clusterfähige PKI, Read-Only Domaincontroller, DFS, Password-Policy, uvm.). Gut, die Oberfläche ist gewöhnungsbedurftig, aber eigentlich ist alles ja sehr ähnlich wie in der lten Version.

Bezüglich deines Bugs schau mal hier. Da Server 2008 und Vista auf dem identischen Kernel basieren, sollte der Tipp helfen.

Gruß

10 von 108 Beiträgen