Az elméleti áttekintés után nézzük élesben a címtárak elérését PowerShell segítségével, mellyel az Active Directory-val kapcsolatos felügyeleti tevékenységek is hatékonyan automatizálhatók. De még mielőtt ebbe beleásnánk magunkat, nézzünk pár előkészítő tevékenységet. Miután a PowerShell alatt a .NET keretrendszer található, így fontos ismerni a címtárak elérésének problémáit diagnosztizálni képes fontosabb osztályokat.
Miután az Active Directory hibák 110%-a (J) valamilyen DNS hibára vezethető vissza, így elsőként ellenőrizzük a névfeloldást. Az ezzel kapcsolatos .NET osztály a System.Net.Dns , melynek GetHostEntry statikus metódusával tudjuk ellenőrizni például a tartományvezérlőnk nevének feloldását:
PS C:\Users\Administrator> [System.Net.Dns]::GetHostEntry("adds.iqjb.w08")
HostName Aliases AddressList
-------- ------- -----------
adds.iqjb.w08 {} {192.168.1.2}
Ha ez helyes eredményt ad, akkor folytathatjuk az AD felderítését, ellenőrzését az erdő legfontosabb objektumaival. Erre a célra a System.DirectoryServices.ActiveDirectory.Forest osztály alkalmas, annak is a GetCurrentForest statikus metódusa:
PS C:\Users\Administrator> [System.DirectoryServices.ActiveDirectory.Forest]
::getcurrentforest()
Name : iqjb.w08
Sites : {Default-First-Site-Name}
Domains : {iqjb.w08}
GlobalCatalogs : {adds.iqjb.w08}
ApplicationPartitions : {DC=ForestDnsZones,DC=iqjb,DC=w08, DC=DomainDnsZone
s,DC=iqjb,DC=w08}
ForestMode : Windows2008Forest
RootDomain : iqjb.w08
Schema : CN=Schema,CN=Configuration,DC=iqjb,DC=w08
SchemaRoleOwner : adds.iqjb.w08
NamingRoleOwner : adds.iqjb.w08
Láthatjuk, hogy ez a metódus a legfontosabb adatokat megadja az erdőről: a root tartomány és a többi tartomány nevét, a globális katalógusok listáját, az erdő működési szintjét és az erdőszintű egyedi szerepeket hordozó tartományvezérlők neveit.
Hasonló módon megvizsgálhatjuk az aktuális tartomány adatait is a System.DirectoryServices.ActiveDirectory.Domain osztály getcurrentdomain statikus metódusa segítségével:
PS C:\Users\Administrator> [System.DirectoryServices.ActiveDirectory.Domain]
::getcurrentdomain()
Forest : iqjb.w08
DomainControllers : {adds.iqjb.w08}
Children : {}
DomainMode : Windows2008Domain
Parent :
PdcRoleOwner : adds.iqjb.w08
RidRoleOwner : adds.iqjb.w08
InfrastructureRoleOwner : adds.iqjb.w08
Name : iqjb.w08
Itt a legfontosabb plusz információ a tartományi szintű egyedi szerepeket hordozó tartományvezérlők nevei.
Nem mellékes, hogy milyen AD site (telephely) beállításokkal dolgozunk, hiszen ez befolyásolja az ügyfél gépek tartományvezérlő választását és a címtár replikációt. A telephely információk kiolvasására a System.DirectoryServices.ActiveDirectory.ActiveDirectorySite osztály GetComputerSite statikus metódusa használható:
PS C:\> [System.DirectoryServices.ActiveDirectory.ActiveDirectorySite]::GetC
omputerSite()
Name : Default-First-Site-Name
Domains : {iqjb.w08}
Subnets : {192.168.112.0/24}
Servers : {w2k8.iqjb.w08}
AdjacentSites : {}
SiteLinks : {DEFAULTIPSITELINK}
InterSiteTopologyGenerator : w2k8.iqjb.w08
Options : None
Location : Budapest
BridgeheadServers : {}
PreferredSmtpBridgeheadServers : {}
PreferredRpcBridgeheadServers : {}
IntraSiteReplicationSchedule : System.DirectoryServices.ActiveDirectory.A
ctiveDirectorySchedule
Ezzel a néhány kifejezéssel tehát elég jól át lehet tekinteni, hogy milyen az AD infrastruktúránk, fájlba történő átirányítással akár az AD rendszerünk dokumentálásához is segítséget kapunk.