Thursday, January 28th, 2010...12:53 am

Znajdź różnicę

Jump to Comments

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.

(cc tobym)

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