Csatlakozás az Active Directory-hoz

Az előzőekben a .NET keretrendszer osztályainak statikus metódusaival dolgoztam, melyek segítségével általános információkat lehetett kinyerni az Active Directory környezetről. Ha konkrét, adott tartományra vagy címtárelemre vonatkozó információkhoz akarunk hozzájutni, akkor csatlakozni kell az adott címtár objektumhoz. Az előzőekben leírtuk, hogy a címtár kezelésében fontos szerepe van a gyorsítótárnak, azaz egy ilyen csatlakoztatás előkészíti a memóriában az adott címtár objektum egy reprezentációját. Ha ezek után változtatunk az objektum valamely tulajdonságán, akkor ez csak a memóriában hajtódik végre, külön metódussal kell ezt a változást a címtárba visszaírni, mint ahogy ezt látni fogjuk.

Elsőként azonban nézzük meg a legegyszerűbb csatlakoztatást:

PS C:\> $domain = [ADSI] ""

Az [ADSI]  típusjelölővel hivatkozunk a címtáras elérésre, és ha egy üres sztringet adunk meg a „konstruktor” paramétereként, akkor az aktuális tartományi objektumhoz csatlakozunk. Ez a típusjelölő a System.DirectoryServices.DirectoryEntry  .NET osztály rövidített neve. Ezt akár ki is írhatjuk, és ekkor további paramétereket is megadhatunk, ha szükséges:

PS C:\> $domain = new-object DirectoryServices.DirectoryEntry("","iqjb\Admin

istrator", "Password1")

Olvassuk ki, hogy mi került a $domain változónkba:

PS C:\> $domain

 

distinguishedName

-----------------

{DC=iqjb,DC=w08}

Ez még nem túl sok, nézzük meg a tagjellemzőit:

PS C:\> $domain | Get-Member

 

 

   TypeName: System.DirectoryServices.DirectoryEntry

 

Name                             MemberType Definition

----                             ---------- ----------

auditingPolicy                   Property   System.DirectoryServices.Pro...

creationTime                     Property   System.DirectoryServices.Pro...

dc                               Property   System.DirectoryServices.Pro...

distinguishedName                Property   System.DirectoryServices.Pro...

dSCorePropagationData            Property   System.DirectoryServices.Pro...

forceLogoff                      Property   System.DirectoryServices.Pro...

fSMORoleOwner                    Property   System.DirectoryServices.Pro...

gPLink                           Property   System.DirectoryServices.Pro...

instanceType                     Property   System.DirectoryServices.Pro...

isCriticalSystemObject           Property   System.DirectoryServices.Pro...

lockoutDuration                  Property   System.DirectoryServices.Pro...

lockOutObservationWindow         Property   System.DirectoryServices.Pro...

...

uSNChanged                       Property   System.DirectoryServices.Pro...

uSNCreated                       Property   System.DirectoryServices.Pro...

wellKnownObjects                 Property   System.DirectoryServices.Pro...

whenChanged                      Property   System.DirectoryServices.Pro...

whenCreated                      Property   System.DirectoryServices.Pro...

Kicsit megvágtam, de ebből is látszik, hogy jó néhány tulajdonsága van egy ilyen objektumnak. Nézzük, hogy hogyan tudunk egy nevesített objektumhoz, mondjuk egy felhasználói fiókhoz csatlakozni:

PS C:\> $user = [ADSI] "LDAP://cn=János Vegetári,ou=Demó,dc=iqjb,dc=w08"

PS C:\> $user

 

distinguishedName

-----------------

{CN=János Vegetári,OU=Demó,DC=iqjb,DC=w08}

Fontos!

Az [ADSI] utáni sztringben csupa nagybetűs az LDAP, és normál perjelek vannak utána. Ha nem csupa nagybetűs az LDAP, vagy fordított perjelet használunk, akkor nem rögtön kapunk hibajelzést, hanem akkor, amikor először használjuk az objektumot.

A későbbiekben majd azt is megnézzük, hogy egy ilyen felhasználói fióknak milyen tulajdonságai vannak és hogyan lehet azokat módosítani.



Word To HTML Converter