SnapShot Active Directory einrichten

SnapShots belegen Platz. Damit eine Partition nicht volläuft, sollte mittels vssadmin.exe das SnapShot Volume richtig konfiguriert werden.
Dazu verwende ich den vssadmin.exe:

Mit dem Kommando

vssadmin Add ShadowStorage /For=C: /On=<Ziel-Partition> /MaxSize=2GB

setze ich die Größe, welche für Snapshots von Laufwerk C: verwendet werden sollen. Das schöne daran ist, dass ich mich nicht um alte Snapshots kümmern muss. Sollte der Platz im ShadowStorage nicht mehr ausreichen, dann wird automatisch der älteste Eintrag entfernt.

Nun zum eigentlichen SnapShot, der mittels NTDSUtil.exe erzeugt wird.

Mit diesem Kommand wird ein SnapShot vom  Active Directory erzeugt:

ntdsutil snapshot „activate instance ntds“ create q q

erzeugen wir den SnapShot im angegebenen ShadowStorage Bereich.

Update: 2013-06-04

Mit der Option IFM kann man die ADS Datenbank als „nur“ Datei erzeugen. Das bedeutet, ich muss später nicht mit dem ntdsutil einen SnapShot finden und mounten. Damit kann man gleich direkt auf die ntds.dit Datei zugreifen. Gleichzeitig lässt sich die DIT Datei auch wesentlich leichter an einen anderen Speicherort kopieren.

In einer Batchdatei wird folgendes ausgeführt:

rd "C:\BackupADS\Active Directory"
rd "C:\BackupADS\registry"

ntdsutil "activate instance ntds" IFM "create full C:\BackupADS" q q

 

 

Wiederherstellen von Active Directory Objekten aus einem SnapShot

Ich verwende dazu das „Directory Service Comparison Tool“ von Frederik Lindström.

Von seinem SkyDrive kann es auch direkt heruntergeladen werden.

Voraussetzung: Ein SnapShot muss vorhanden sein. (Hier gehts zum SnapShot Thema)

Verwenden Sie Ntdsutil um einen SnapShot zu mounten:

Im Explorer taucht nun der SnapShot als Linked Volume auf:

Suchen Sie nun die Datei ntds.dit (<SnapShotVolume>\Windows\NTDS\ntds.dit)

Übernehmen Sie den Pfad incl. Dateiname um diese Active Directory Kopie zu mounten.

Verwenden Sie dsamain.exe um die Kopie zu mounten.

Der Befehl lautet :

Dsamain.exe /DBPath „<Pfad zur NTDS Kopie Datei>“ /ldapPort 16000

Starten Sie nun eine MMC.EXE und fügen das SnapIn „Directory Service Comparison Tool“ hinzu.

Verbinden Sie sich mit dem aktuellen Domaincontroller und der Kopie, in dem Sie den Port 16000 verwenden, wie im dsamin Programm angegeben.

Die beiden Verzeichnisse werden nun miteinander verglichen und die Änderungen (Change, Add, Delete) werden angezeigt.

Durch markieren des entsprechenden Attributes können Sie den geänderten Wert durch die Information aus dem SnapShot wieder herstellen.

Wenn der Restore Vorgang beendet ist, beenden Sie die MMC Konsole.

Beenden Sie die gemountete Kopie des Active Directories (im dsamain) indem Sie STRG + C drücken.

Verwenden Sie das ntdsutil um den gemounteten SnapShop zu dismounten. Geben Sie dazu im ntdsutil folgendes ein:

  • „List mount“ um eine Liste der gemounteten SnapShots anzuzeigen
  • Unmount <Nr des SnapShots>

Active Directory Recycle Bin Feature aktivieren

Enable-ADOptionalFeature „Recycle Bin Feature“ -Scope ForestorConfigurationset -Target <your dns domain name>

Wichtig: Das geht nur auf einem DC der Domain Naming Master ist. Auf allen anderen DCs kommt eine Fehlermeldung, „Enable-ADOptionalFeature : A referral was returned from the server“

Powershell aus dem Administrativen Menü starten, da dann die AD CMDLets geladen werden. (Sonst fehlt Enable-ADOptionalFeature)

Active Directory Daten mittels T-SQL auslesen

Einen Linked Server hinzufügen: EXEC sp_addlinkedserver ‚ADSI‘, ‚Active Directory Services 2.5‘, ‚ADSDSOObject‘, ‚adsdatasource‘

Das SQL Statement sieht dann so aus:

SELECT [Name], SN [Last Name], ST State
FROM OPENQUERY( ADSI,

‚SELECT Name, SN, ST FROM “LDAP://Domaincontroller/DC=YourDomain,DC=local“

WHERE objectCategory = “Person“ AND objectClass = “user“‘)

Zugriffe auf Active Directory mit PowerShell

Auf Objekte im ADS kann wie folgt zugegriffen werden:

$MyObject = [ADSI]“LDAP://OU=Benutzer,DC=Domain,DC=int
$MyObject = New-Object System.DirectoryServices.DirectoryEntry
$MyObject.PSBase.Path = „
LDAP://OU=Benutzer,DC=Domain,DC=int

oder

$MyObject = New-Object System.DirectoryServices.DirectoryEntry(„LDAP://OU=Benutzer,DC=Domain,DC=int„)

Auf die Attribute kann so zugegriffen werden:

write-host $MyObject.PSBase.Name
write-host $MyObject.PSBase.InvokeGet(„name“)
write-host $MyObject.PSBase.Properties.name
write-host $MyObject.PSBase.Properties.Item(„name“)

Werte setzen mit:

$MyObject.PSBase.InvokeSet(„adminDescription“,“MeineAdminDescription“)
$MyObject.PSBase.CommitChanges()

Matze

 

Active Directory Benutzer in einen Exchange öffentlichen Ordner importieren

Eigentlich ist das Globale Adressbuch von Outlook genau der Inhalt aller Mailbenutzer aus dem Active Directory. Ich hatte allerdings einen Kunden, der VoIP verwendet, und die Rufnummern aus dem globalen Adressbuch verwenden wollte. Da die TAPI Schnittstelle das aber nicht unterstützt (im globalen Adressbuch sind es keine IPM.Contact Elemente), sollten die ADS User in einen öffentlichen Ordner importiert werden. Dort sind die Kontakte dann IPM.Contact Elemente, mit denen konnte VoIP wieder was anfangen.

Über den Sinn/Unsinn läßt sich natürlich wieder diskutieren (haben wir auch 🙂 ). Der Sinn solcher Kundenwünsche muss sich mir ja nicht immer erschließen, es reicht ja, wenn der Kunde weiß was er damit machen will. Außerdem war es mal eine neue Herausforderung, das ganze via Script zu machen. „Active Directory Benutzer in einen Exchange öffentlichen Ordner importieren“ weiterlesen

extraColumns in der ADS MMC

Die Spalten, die in der ADS MMC angezeigt werden, können seit Windows 2003 ADS durch eigene Spalten ergänzt werden. Es können (fast) alle Attribute von allen Objekten hinzugefügt werden. Das macht natürlich nur Sinn, wenn die Werte auch brauchbare Inhalte haben. Ich verwende typischerweise eigene Attribute, die mit Werten beim Starten des Computers oder beim Anmelden eines Benutzers durch Scripte geschrieben werden.

Kleines Beispiel: Ein Kunde wollte die MAC Adresse der primären Netzwerkkarte dort stehen haben, um WOL zu verwenden. Es kann aber auch einfach nur die Betriebssystemversion/bezeichnung hinzugefügt werden. Hier die Kurzversion, wie’s geht: (Erfahrung im ADS wird vorausgesetzt! Wenn nicht, lass‘ einfach die Finger davon, sonst kannst Du mehr kaputt machen, als dir lieb ist!)

The Add/Remove Columns dialog box displays only the columns that are contained in the extraColumns attribute of the displaySpecifier object of the container type that is being displayed. If the extraColumns attribute does not contain any values, the Add/Remove Columns dialog box will display a fixed set of columns. A copy of the fixed set of columns is contained in the extraColumns attribute of the default-Display object.   To add one or more columns to the list of columns for a specific object, you must copy all of the extraColumns values from the default-Display object to the target object and then add the custom columns. If you specify the extraColumns attribute on a given class, then that class will use those columns and will not merge them with the columns that are specified in the default-Display class. Therefore, further changes to the default-Display class will have no effect on that object. To display a custom column for all container types that do not have any custom columns registered, add a value for the column to the extraColumns attribute of the default-Display object.

Am Beispiel:

For example, to add a column that will display the canonical name for objects in an organizational unit, a value for the canonicalName attribute is added to the extraColumns attribute of the organizationalUnit-Display object in the display specifiers container. The string added to the extraColumns attribute of the organizationalUnit-Display object will look like the following.
 
  canonicalName,Canonical Name,0,150,0

Aufbau des Attributes extraColums im Allgemeinen:

     Ldapdisplayname , column header , default visibility , width , unused    

 

Zugriff auf Active Directory Daten

Welche Möglichkeiten gibt es, auf die ADS Informationen zuzugreifen?

  • ds-Programme von Microsoft (sind bei Windows dabei, wie z.B. dsadd.exe usw.)
  • ADS Management Tools (Users and Computers, usw.)
  • adsiedit.msc, Attribut Editor von Microsoft
  • ADODB, Active Data Objects for Data Bases, also via Microsoft Provider wie z.B. „ADsDSOObject“
  • ADSI-SDK Schnittstelle (ADSI 2.5)

Ich bevorzuge die beiden Varianten ADODB und ADSI-Schnittstelle. Diese Varianten kann ich Scriptieren oder in Programme einbauen. „Zugriff auf Active Directory Daten“ weiterlesen