Thursday, January 28th, 2010...12:53 am
Znajdź różnicę
Pytanie zadanie – znalazła się I odpowiedź. A pytanie brzmiało – “Jak znaleźć zmiany wprowadzone w schemacie katalogu po jego instalacji?”. Padło na ActiveDir.org jak można się było spodziewać, ale jako że temat widzę już chyba po raz trzeci … czas napisać coś w temacie.
Odpowiedzi padło kilka, jedna z nich też moja … jakie więc mamy opcję.
Jedną z nich jest użycie Schema Analyzer pochodzącego z AD LDS (ADAM) tak jak zostało to opisane na blogu Ask DS Team. Instalujemy więc AD LDS, generujemy plik LDIF z obecnym schematem naszego katalogu, ładujemy schemat wzorcowy AD LDS I wyciągamy różnicę. Lekkie, łatwe I przyjemne ale …
- wymaga trochę pracy jeżeli nie mamy akurat pod ręką AD LDS
- nie zawsze interesuje nas różnica LDIF, może potrzebujemy tego w innej formie, na przykład CSV.
Alternatywne podejście … możemy wykorzystać fakt, że każdy obiekt w katalogu posiada informację o dacie utworzenia w ramach atrybutu whenCreated, który jest replikowany pomiędzy kontrolerami domeny. I w prosty sposób możemy uzyskać listę atrybutów I klas schematu, wraz z informację o dacie ich utworzenia:
adfind -schema -f "(|(objectClass=attributeSchema)(objectClass=attributeClass))" ldapDisplayName whenCreated –adcsv
wrzucić to do pliku tekstowego (atrybuty do wyboru), otworzyć w jakimś Excelu … posortować i voile …

Niby prosto, ale jednak nadal wymaga trochę zachodu I narzędzi typu Excel (lub coś co potrafi posortować plik, w zasadzie może być Powershell). Z drugiej można skorzystać z gotowego skryptu CMD SchemaDiff.cmd przygotowanego przez Deana Wellsa (archiwum z DEC do ściągnięcia I rozpakowania), który opierając się na metadanych replikacji wyciąga z katalogu informację o zmianach w schemacie. A jak działa:
C:\Temp>SchemaDiff.cmd w2k.pl
SchemaDiff 1.1 / Dean Wells (dwells@msetechnology.com) - March 2006
STATUS - Working [review title bar for progression] …
- Forest/schema creation timestamp: 2009-08-23 @ 22:51:06
- base-schema has been MODIFIED since Forest creation
- counting classSchema and attributeSchema instances: 1438
- querying schema …*MOD: CN=Schema,CN=Configuration,DC=w2k,DC=pl
- schemaInfo…………………… {modified post-instantiation}*MOD: CN=User,CN=Schema,CN=Configuration,DC=w2k,DC=pl
- auxiliaryClass……………….. {modified post-instantiation}+NEW: CN=AstContext,CN=Schema,CN=Configuration,DC=w2k,DC=pl
+NEW: CN=AstExtension,CN=Schema,CN=Configuration,DC=w2k,DC=pl(…)
Done - 57 schema object(s) added, 4 schema object(s) modified
in Forest "DC=w2k,DC=pl"
Szybko, łatwo I przyjemnie … I bez żadnych dodatkowych narzędzi oprócz tego co powinno być dostępne na każdym DC (cmd.exe I repadmin.exe).
Miłego używania … a bardziej ogólnie mówiąc o temacie to warto by było mieć udokumentowane wszystkie zmiany wprowadzane w schemacie katalogu. Warto pomyśleć o kilku prostych procedurach z tym związanych … nie musi być to coś wymyślnego, czasami prosty plik wystarczy … w ostateczności witryna na WSS … pozostawiam do przemyślenia.

Leave a Reply