Blog Home  Home Feed your aggregator (RSS 2.0)  
LDAP://Yusufs.Directory.Blog/ - Active Directory
Wieviele Sprachen sprechen Sie? Ich spreche bloß eine: LDAP!
 
 Monday, September 26, 2011

Eines der Schutzmechanismen der AD-Replikation ist die strict replication consistency (strikte Replikationskonsistenz), die standardmäßig bei einer Migration von NT 4.0 auf Windows Server 2003 oder wenn ein Forest ab Windows Server 2003 erstellt wurde, aktiviert ist. Die Funktion der „strict replication consistency“ steht ab Windows 2000 Server SP3 (sogar schon mit Post-SP2 Hotfix) zur Verfügung, diese ist aber unter Windows 2000 standardmäßig deaktiviert!

Was es mit der strict replication consistency auf sich hat und wann diese vor allem zum Einsatz kommt, wird in dem folgenden Artikel detailliert erläutert:

LDAP://Yusufs.Directory.Blog/ - Lingering Objects (veraltete Objekte)

Kurz gesagt verhindert die „strict replication consistency“, dass Lingering Objects (herumlungernde/veraltete Objekte) von einem (veralteten) Domänencontroller (DC) der sich länger als die Tombstone-Lifetime nicht mehr mit seinen Replikationspartnern repliziert hat, zurück zu den (aktuellen!) Replikationspartnern repliziert werden.

Ein Forest der unter Windows Server 2003 oder höher installiert wurde, verfügt über einen speziellen operativen GUID, der standardmäßig aber nicht in einem Forest mit Windows 2000 Wurzeln existiert!

Wird ein Server zum DC hochgestuft, überprüft dieser ob das folgende Objekt existiert: 

CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa,CN=Operations,CN=ForestUpdates,CN=Configuration,DC=<Root-Domain>

 

Erst wenn dieser Container zum Zeitpunkt des heraufstufen existiert, aktiviert der künftige DC die „strict replication consistency“ automatisch.

 

Ab Windows Server 2003 SP1 kann man die „strict replication consistency“ auf einem einzelnen DC mit dem folgenden REPADMIN-Befehl aktivieren: Repadmin /regkey <DC> +strict.

 

Auf allen DCs im Forest lässt sich die „strict replication consistency“ wie folgt aktivieren: Repadmin /regkey * +strict

 

 

Das bedeutet jedoch, jedes Mal wenn weitere DCs (in einen Forest mit Windows 2000 Wurzeln) hinzukommen, muss jedes Mal auf dem DC die „strict replication consistency“ mit dem Befehl „Repadmin /regkey <DC> +strict“ aktiviert werden.

Eine elegantere Variante ist, damit ab sofort auf allen künftigen DCs automatisch die „strict replication consistency“ aktiviert ist, man erstellt den operativen Container in der Konfigurationspartition manuell.

 

Mit ADSIEdit kann man das folgendermaßen erledigen:

  1. Nachdem ADSIEdit gestartet und der Eintrag ADSI Edit auf der linken Seite markiert wurde, gilt es zuerst auf Action und anschließend auf Connect to… zu klicken.

  2. Im darauf erscheinenden “Connection Settings” Dialogfenster kann man dann im Bereich Connection Point im Feld Select or type a Distinguished Name or Naming Context den folgenden LDAP-Pfad, sprich den Distinguished Name des folgenden Containers angeben und anschließend mit OK bestätigen: CN=Operations,CN=ForestUpdates,CN=Configuration,DC=<Root-Domain>

  3. Als nächstes gilt es mit einem Rechtsklick auf CN=Operations,CN=ForestUpdates,CN=Configuration,DC=<Root-Domain> die Option New -> Object... auszuwählen.

  4. Als class muss der Eintrag container ausgewählt werden.

  5. Im nächsten Schritt muss als Value dieser Wert eingegeben warden: 94fdebc6-8eeb-4640-80de-ec52b9ca17fa.

  6. Danach sollte man auf auf More Attributes klicken und unter Select a property to view die Option showInAdvancedViewOnly auswählen.

  7. Zusätzlich sollte im Bereich Attribute Values im Feld Edit Attribute als Wert TRUE eingetragen und mit SET bestätigt werden.

  8. Mit einem abschließenden Klick auf OK und Finish hat man dann das Objekt 94fdebc6-8eeb-4640-80de-ec52b9ca17fa erstellt. Ab sofort wird nun bei einem neuen DC der in einer Gesamtstruktur mit Windows 2000 Wurzeln hochgestuft (promotet) wurde, die „strict replication consistency“ automatisch aktiviert.


Wem jedoch dieser Vorgang zu heikel ist, der kann auch regelmäßig (evtl. in einem geplanten Task) den REPADMIN – Befehl ausführen, damit auf allen neuen DCs auch die „strict replication consistency“ aktiviert wird: Repadmin /regkey * +strict


Mit der folgenden GPO-ADM Datei lässt sich das ebenfalls lösen:


CLASS MACHINE
      CATEGORY "Strict Replication Consistency"
            KEYNAME "System\CurrentControlSet\Services\NTDS\Parameters"
            POLICY "Enable Strict Replication Consistency"
            EXPLAIN "This enables Strict Replication Consistency”.
            VALUENAME "Strict Replication Consistency"
            VALUEON NUMERIC 1
            VALUEOFF DELETE
END POLICY
END CATEGORY

Wird anschließend diese GPO auf die OU “Domain Controllers” verlinkt, wird ebenfalls auf jedem neuen DC die „strict replication consistency“ automatisch aktiviert.


 

Weitere Informationen:
Event ID 1388 or 1988: A lingering object is detected: Active Directory

Monday, September 26, 2011 1:09:44 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Replikation  | 
 Sunday, May 22, 2011

Active Directory (AD) basierte Gruppenrichtlinienobjekte (auf Englisch: Group Policy Object, kurz GPO) bestehen hauptsächlich aus zwei Komponenten, bestehend aus der logischen und physikalischen Struktur. Der logische Teil einer GPO wird in der AD-Datenbank (NTDS.dit) gespeichert und wird als Gruppenrichtliniencontainer (auf Englisch: Group Policy Container, kurz GPC) bezeichnet. Die physikalische Komponente einer GPO wird im Dateisystem, im replizierten Verzeichnis SYSVOL gespeichert und lautet Gruppenrichtlinienvorlage (auf Englisch: Group Policy Template, kurz GPT).

In den Eigenschaften eines GPC werden alle AD relevanten Konfigurationsdaten einer GPO gespeichert, wie beispielsweise der Pfad zur Gruppenrichtlinienvorlage (das Attribut gPCFileSysPath im entsprechenden GPC, also der Pfad zum GPT), der Status von Gruppenrichtlinienobjekten (das Attribut flags) oder die Zugriffsteuerungsliste (Access Control List, kurz ACL) die bestimmt, welcher Benutzer bzw. Gruppe die Einstellungen eines GPOs verwalten darf. Den GPC selbst findet man in der Domänenpartition im Container CN=Policies,CN=System,DC=<Domäne>. Diesen Container kann man in der MMC Active Directory-Benutzer und –Computer (dsa.msc) zum Vorschein bringen. Dazu muss man jedoch zuerst in der MMC dsa.msc unter Ansicht die „Erweiterte Features“ aktivieren. Die GPC werden im AD-Container Policies mit ihrer {GUID} dargestellt und ist derselbe, wie er auch im GPT angezeigt wird.

Im GPT befinden sich die meisten Einstellungen eines GPOs sowie verschiedene Verzeichnisse und Konfigurationsdateien. Im GPT werden also alle aktuellen GPO-Einstellungen eines GPOs gespeichert. Die GPTs werden im Dateisystem tatsächlich unter %windir%\SYSVOL\domain\Policies, jeweils dargestellt mit ihrer {GUID}, gespeichert. Nicht zu verwechseln mit den Junction Points unter %windir%\SYSVOL\sysvol\<Domäne>\Policies. Tools für die Verwaltung von GPOs (z.B. die GPMC) verwenden die Junction Points und nicht den echten Speicherort der GPTs.

Wichtig für das Troubleshooting ist zu wissen, dass die hauptsächlichen Komponenten einer GPO, nämlich der GPC und das GPT, auf unterschiedliche Weise repliziert werden. Der GPC wird im Rahmen der AD-Replikation repliziert. Das GPT wird je nach Domänenfunktionsmodus entweder vom FRS (File Replication Service) oder vom DFS-R (Distributed File System Replication) repliziert. Liegen die Wurzeln einer Domäne im Domänenfunktionsmodus „Windows Server 2003“ oder niedriger, wird das GPT durch den FRS repliziert. Wurde die Domäne mindestens im Domänenfunktionsmodus „Windows Server 2008“ installiert, kommt DFS-R für die Replikation des GPT und somit des SYSVOLs zum Einsatz.

 

Die Performance bei der Abarbeitung von GPOs erhöhen

Für die Performance des Clients bei der Abarbeitung von GPOs (die auf ihn wirken) ist es empfehlenswert, den nicht konfigurierten Teil einer GPO stets zu deaktivieren. Das bedeutet, wenn in einer GPO lediglich Einstellungen im Benutzerkonfigurationsteil vorgenommen wurden, sollte der Computerkonfigurationsteil deaktiviert werden und vice versa.

Deaktivieren lässt sich ein Teil oder die gesamte GPO in der GPMC (Group Policy Management Console, zu Deutsch: Gruppenrichtlinienverwaltungskonsole). Mit einem Rechtsklick auf der entsprechenden GPO wählt man die Option Objektstatus aus und kann dann den gewünschten Teil oder die gesamte GPO deaktivieren. Das funktioniert auch wenn man die entsprechende GPO in der GPMC ausgewählt hat und danach zum Reiter Details wechselt.


 


Den Status der GPOs abfragen

Den Status einer GPO veranschaulicht das Attribut flags, das sich in den Eigenschaften jedes GPCs befindet.
Dabei kann das Attribut flags folgende Werte enthalten:

  • Der Wert 0 im Attribut flags bedeutet, das gesamte Gruppenrichtlinienobjekt, also der Benutzerkonfigurations- und Computerkonfigurationsteil ist aktiviert.
  • Der Wert 1 bedeutet, der Benutzerkonfigurationsteil einer GPO ist deaktiviert.
  • Ist der Wert 2, wurde der Computerkonfigurationsteil einer GPO deaktiviert.
  • Beim Wert 3 ist das gesamte GPO deaktiviert.


State of the Art kann man den Status der GPOs in der AD-PowerShell mit folgenden Einzeilern abfragen:

# Alle GPOs mit ihrem Status anzeigen lassen:

Get-ADObject -Server <DC> -LDAPFilter "(flags=*)" -SearchBase "CN=Policies,CN=System,DC=<Domäne>" -SearchScope Subtree -Properties displayName,flags | Select displayName,flags | FT -A


# Alle GPOs anzeigen, die beide Teile (Benutzer- und Computerkonfiguration) aktiviert haben:

Get-ADObject -Server <DC> -LDAPFilter "(flags=0)" -SearchBase "CN=Policies,CN=System,DC=<Domäne>" -SearchScope Subtree -Properties displayName,flags | Select displayName,flags | FT -A


# Alle GPOs die den Teil der Benutzerkonfiguration deaktiviert haben, werden folgendermaßen angezeigt:

Get-ADObject -Server <DC> -LDAPFilter "(flags=1)"  -SearchBase "CN=Policies,CN=System,DC=<Domäne>" -SearchScope Subtree -Properties displayName,flags | Select displayName,flags | FT -A


# Alle GPOs die den Computerkonfigurationsteil deaktiviert haben, werden wie folgt angezeigt:

Get-ADObject -Server <DC> -LDAPFilter "(flags=2)"  -SearchBase "CN=Policies,CN=System,DC=<Domäne>" -SearchScope Subtree -Properties displayName,flags | Select displayName,flags | FT -A


# Alle komplett deaktivierten GPOs (beide Teile Benutzer- und Computerkonfigurationsteil sind deaktiviert) werden so angezeigt:

Get-ADObject -Server <DC> -LDAPFilter "(flags=3)" -SearchBase "CN=Policies,CN=System,DC=<Domäne>" -SearchScope Subtree -Properties displayName,flags | Select displayName,flags | FT -A

 

 

Das Attribut flags automatisiert mit einem AD-PowerShellskript abfragen

Man kann die Abfrage auch automatisiert mit folgendem AD-PowerShellskript durchführen.

 

######################################################
#
# AD-PowerShellskript zur Statusabfrage von GPOs
#
# Von: Yusuf Dikmenoglu 05/2011
#
# http://blog.dikmenoglu.de
#
######################################################


$auswahl = Read-Host "Welcher GPO-Status soll angezeigt werden (0... Alle komplett aktiven GPOs anzeigen 1...Benutzerkonfiguration ist deaktiviert 2...Computerkonfiguration ist deaktiviert 3...GPOs die komplett deaktiviert sind):" 

switch ($auswahl){

      0 {

        Get-ADObject -Server <DC> -LDAPFilter "(flags=*)"  -SearchBase "CN=Policies,CN=System,DC=<Domäne>" -SearchScope Subtree -Properties displayName,flags | ForEach-Object {
             
            if ($_.flags -eq 0){

                   write-host "Gesamte GPO aktiviert: " $_.displayName

                  }

            }

      }
      

      1 {

        Get-ADObject -Server <DC> -LDAPFilter "(flags=*)"  -SearchBase "CN=Policies,CN=System,DC=<Domäne>" -SearchScope Subtree -Properties displayName,flags | ForEach-Object {
             
            if ($_.flags -eq 1){

                   write-host "Benutzerkonfiguration des GPO ist deaktiviert: " $_.displayName

                  }

            }

      }


      2 {

            Get-ADObject -Server <DC> -LDAPFilter "(flags=*)"  -SearchBase "CN=Policies,CN=System,DC=<Domäne>" -SearchScope Subtree -Properties displayName,flags | ForEach-Object {
             
            if ($_.flags -eq 2){

                   write-host "Computerkonfiguration des GPO ist deaktiviert: " $_.displayName

                  }

            }

      }
      

      3 {
      
            Get-ADObject -Server <DC> -LDAPFilter "(flags=*)"  -SearchBase "CN=Policies,CN=System,DC=<Domäne>" -SearchScope Subtree -Properties displayName,flags | ForEach-Object {
             
            if ($_.flags -eq 3){

                   write-host "Gesamte GPO deaktiviert: " $_.displayName

                 }


            }

      }
      
      
      default{

            Write-Host "Ungültige Eingabe"

      }

}
Sunday, May 22, 2011 9:43:26 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Powershell | AD-Scripting | Dokumentation | Erweiterte Abfragen | Gruppenrichtlinien  | 
 Monday, May 09, 2011

Der Unterschied zwischen einer beschreibbaren und nur lesbaren Verzeichnispartition (auf Englisch Naming Context, kurz NC) liegt im Attribut instanceType. Dieses Attribut besteht aus einer Bitmaske und existiert in den Eigenschaften jeder Verzeichnispartition. Ist das dritte Bit (Hex = 0x4; Dezimal = 4) im Attribut instanceType, in den Eigenschaften einer Verzeichnispartition auf einem DC gesetzt, so ist die Verzeichnispartition auf diesem DC beschreibbar. Falls das dritte Bit nicht gesetzt ist, ist die Verzeichnispartition auf diesem DC nur lesbar.


 


Da ein Read-Only Domänencontroller (RODC) nur einen lesenden Zugriff auf die Active Directory-Datenbank (NTDS.DIT) und somit auf alle Verzeichnispartitionen hat, ist logischerweise in allen Verzeichnispartitionen die sich auf einem RODC befinden das dritte Bit in instanceType nicht gesetzt!

Auch in den fremden Domänenpartitionen die sich im globalen Katalog befinden, ist das dritte Bit in instanceType nicht gesetzt!

Überprüfen kann man das mit dem Schweizer Messer Werkzeug für die AD-Replikation Repadmin. Führt man den Befehl Repadmin /showrepl /verbose in der Kommandozeile aus, erhält man solch eine Ausgabe:


In der Ausgabe werden alle Verzeichnispartitionen aufgelistet, die der DC repliziert. Die Verzeichnispartitionen in denen der DC das Schreibrecht besitzt, sind mit WRITEABLE gekennzeichnet. Die Verzeichnispartitionen in der der DC lediglich das Leserecht besitzt, sind nicht mit WRITEABLE gekennzeichnet.

Ob eine Verzeichnispartition auf einem bestimmten DC nur lesbar oder beschreibbar ist, kann man mit dem folgenden AD-PowerShellskript überprüfen:

######################################################
#
# AD-PowerShellskript zum überprüfen ob eine Verzeichnispartition
# nur lesbar oder beschreibbar ist.
#
# Von: Yusuf Dikmenoglu 05/2011
#
# http://blog.dikmenoglu.de
#
######################################################


# Hier den distinguishedName der entsprechenden Verzeichnispartition (= NC = Naming Context) angegeben

$searchbase = "DC=ad2008R2,DC=dikmenoglu,DC=de"

# Wenn man einen NC von einem globalen Katalog (GC) abfragen möchte, muss man bei "-Server" den FQDN 
# des DCs und den GC-Port angeben. Also: "R2DCON01.ad2008R2.dikmenoglu.de:3268"

Get-ADObject -Server R2DCON01 -LDAPFilter "(instanceType=*)"  -SearchBase $Searchbase -SearchScope base -Properties instanceType | ForEach-Object {
      if ($_.instanceType -band 4){
            write-host $_.ncName "Beschreibbare Verzeichnispartition: $Searchbase"
      }
      else{
            write-host $_.ncName "Lesbare Verzeichnispartition: $Searchbase"
      }
}

 

Weitere Informationen:
Welche Verzeichnispartitionen befinden sich auf einem DC?
Instance-Type Attribute
Read-Only Domain Controller (RODC)

Monday, May 09, 2011 12:46:18 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell | AD-Scripting  | 
 Monday, April 25, 2011

Hin und wieder kommt es vor, dass man den Benutzeranmeldenamen mehrerer Domänen-Benutzer ändern muss. Da sich die Domänen-Benutzer mit dem „Benutzeranmeldenamen“ oder mit dem „Benutzeranmeldenamen (Prä-Windows 2000)“ anmelden können, müssen beim ändern des Benutzeranmeldenamen die Werte in den beiden Attributen userPrincipalName (kurz, UPN) und sAMAccountName geändert werden. Bei wenigen Benutzern lassen diese sich recht einfach händisch ändern. Doch wie sieht es mit hunderten oder >1.000 Benutzern aus?!

Diese Aufgabe lässt sich einfach und State of the Art mit Excel und der AD-PowerShell lösen! Die Basisdaten kann man sich recht simpel in eine CSV-Datei, die sich wiederum in Excel importieren lässt, aus dem AD exportieren. Dazu eignen sich CSVDE und die AD-PowerShell. Wie man einen Export (und Import) mit CSVDE oder der AD-PowerShell durchführen kann, zeigt dieser Artikel:

Massenimporte- und -exporte mit CSVDE und der AD-PowerShell durchführen


Die Excel-Datei könnte beispielsweise folgendermaßen aussehen:



Danach lässt sich der userPrincipalName sowie sAMAccountName mit dem folgenden AD-PowerShellskript ändern.

######################################################
#
# AD-PowerShell Skript zum umbenennen von AD-Benutzer.
# Mit diesem Skript wird der sAMAccountName, userPrincipalName
# und das Attribut name umbenannt
#
# Von: Yusuf Dikmenoglu 04/2011
#
# http://blog.dikmenoglu.de
#
######################################################



clear

# Excel Einstellungen
$excel = New-Object -ComObject Excel.Application # create base object 
$excel.visible = $false
$wb = $excel.workbooks.open("C:\Tools\Benutzernamen.xls")
$ws1 = $wb.Worksheets.item(1)  

# Programmbeginn
$count = 5
for ($index = 2; $index -lt $count; $index++) {
    Write-Host $index
    $loginAlt = $ws1.Cells.Item($index,6).text.trim()
    $loginNeu = $ws1.Cells.Item($index,10).text.trim()
    $aduser = Get-ADUser $loginAlt | ForEach-Object {
        $ws1.Cells.Item($index,4) = $_.givenname   
        $ws1.Cells.Item($index,3) = $_.surname
        $pricipalname = $loginNeu + "@Domäne.de"
        Set-ADUser -Identity $loginAlt -SamAccountName $loginNeu -UserPrincipalName $pricipalname
        Rename-ADObject -Identity $loginAlt -NewName $loginNeu     # Funktioniert nur, wenn das Attribut "name" gleich "sAMAccountName" ist
        
    }
}

$wb.save()
$wb.Close()
$excel.Quit()

 

Weitere Informationen:
Die Active Directory-Attribute hinter den Feldnamen
Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008
LDIFDE - LDAP Data Interchange Format Data Exchange

Monday, April 25, 2011 7:48:47 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Powershell | AD-Scripting  | 
 Friday, April 08, 2011

Die Remote Server Administration Tools, kurz RSAT, für Windows 7 Service Pack 1 sind Released-To-Web (RTW)

Wenn man unter Windows 7 Service Pack 1 versucht das bisherige RSAT zu installieren, erhält man diese Fehlermeldung:

Error message when installing RSAT: 'This update is not applicable to your computer'


Nun hat Microsoft die aktualisierte Version vom RSAT für Windows 7 Service Pack 1 zum Download zur Verfügung gestellt.
Darin enthalten ist auch die neueste Version vom Hyper-V Manager, der sowohl Dynamic Memory und RemoteFX unterstützt.


Herunterladen kann man die RSAT für Windows 7 Service Pack 1 hier:

Download details: Remote Server Administration Tools for Windows 7 with Service Pack 1 (SP1)

 

Friday, April 08, 2011 10:04:12 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Monday, April 04, 2011

Hin und wieder kommen Administratoren auf die scheinbar glorreiche Idee, Domänencontroller (DC) zwecks der Ausfallsicherheit Clustern zu wollen. Zuerst einmal ist es lobenswert, dass sich Administratoren Gedanken über die Ausfallsicherheit von DCs machen. Schließlich sind DCs das Herz einer jeden AD Domäne und diese soll auch bei einem DC-Ausfall weiter funktionieren, möglichst ohne das Backup bemühen zu müssen.

Jedoch lässt sich technisch die DC-Funktionalität gar nicht Clustern. Die DC-Funktion ist nicht clusterfähig (cluster-aware)! Das muss sie aber auch nicht, da DCs die das „Active Directory“ (AD) bereitstellen über einen anderen Mechanismus redundant gehalten werden. Dieser Mechanismus ist die „AD-Replikation“.

Die hohe Verfügbarkeit sowie Ausfallsicherheit der DC-Funktionalität wird alleine durch den Einsatz von mehr als einem DC gewährleistet! Denn existieren in einer Domäne mehr als ein DC, replizieren sich die DCs die AD-Datenbank untereinander. Da DCs stets online sind, wird die Ausfallsicherheit und hohe Verfügbarkeit bereits durch die AD-Replikation und ohne einen Cluster zu bilden erreicht.

Wie viele DCs pro Domäne werden benötigt?


Aber selbstverständlich lässt sich ein Cluster auf zwei DCs installieren, ohne die DC-Funktionalität selber zu Clustern. Das könnte der Administrator in Erwägung ziehen, um beispielsweise eine Applikation geclustert zu betreiben. Warum allerdings das Betreiben von zusätzlichen Diensten bzw. Applikationen auf einem DC alles andere als eine gute Idee ist, stellt dieser Artikel dar:

Warum es ein dedizierter DC sein sollte!



Weitere Informationen:
Windows 2000, Windows Server 2003, and Windows Server 2008 cluster nodes as domain controllers
Cluster Service May Not Start if Domain Controller Is Unavailable
When a Windows Server 2003 cluster node is a domain controller, you may receive an error message when you add domain users to the cluster file share
Die NO-GOs und Empfehlungen zu virtuellen DCs

Monday, April 04, 2011 8:01:48 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Sunday, March 20, 2011

Setzt man Password Setting Objects (kurz PSOs) auch bekannt als fein abgestimmte Kennwortrichtlinien ein, kann es zu Verwirrungen bei der Meldung die Windows liefert kommen, wenn ein Benutzer ein Kennwort vergeben möchte das nicht den Vorgaben des ihm zugewiesenen PSO entspricht.

Welche Voraussetzungen existieren müssen damit PSOs eingesetzt werden können oder wie PSOs konfiguriert werden, steht neben weiteren Details im folgenden Artikel:

Password Setting Objects erstellen und verwalten


Damit man nicht aufs Glatteis durch die von Windows erzeugte Meldung geführt wird und um PSOs erfolgreich zu implementieren, hier ein paar wichtige Hinweise:

  • Versucht ein Benutzer auf den ein PSO verlinkt wurde, auf einem Windows XP Client oder Windows Server 2003 sein Kennwort zu ändern, erhält er diese Meldung:




    In diesem Fall hat der Benutzer erfolglos versucht sein Kennwort zu ändern. Das neue Kennwort entsprach nicht den Vorgaben aus dem PSO. Daher ist es folgerichtig, dass eine Meldung erscheint. Allerdings stammen die Kennwort-Anforderungen in dem Dialogfenster aus der Domänenrichtlinie Default Domain Policy, die auf Domänenebene verlinkt ist! Die Meldung hat sich leider mit Einführung von PSOs nicht verändert. Es erscheint kein eigenes Dialogfenster, in dem die Kennwortvorgaben des PSO enthalten sind!

  • Versucht der Benutzer auf einem Windows 7 Client oder Windows Server 2008/R2 sein Kennwort zu ändern, erhält er bei nicht Einhaltung der Kennwortvorgaben aus dem PSO diese Meldung:




    Auch diese Meldung ist irreführend, denn es wird auf die Kennwortrichtlinie der Domäne, also auf die Default Domain Policy verwiesen, in der standardmäßig die Kennwortvorgaben auf Domänenebene definiert sind. Eine andere Meldung mit den Kennwortvorgaben der PSO erscheint weiterhin nicht!

  • Versucht der Administrator, das Kennwort eines Benutzers auf den ein PSO verlinkt wurde zu ändern, erscheint diese Meldung:




    Diese Meldung ist ebenfalls trügerisch, denn angeblich entspricht das neue Kennwort nicht den Anforderungen der Kennwortrichtlinien. Abgesehen davon das es sich bei dem PSO nicht um eine Kennwortrichtlinie sondern um ein AD-Objekt handelt, erscheint einmal mehr kein Hinweis auf das PSO!

  • Führt man auf dem Client unter Start – Ausführen das Resultant Set of Policy (RSoP) aus, werden dort die Kennwortvorgaben wieder aus der Default Domain Policy angezeigt! Daher bringt ein RSOP.msc für die Überprüfung eines PSO nichts! Denn da es sich bei den PSOs nicht um Gruppenrichtlinien (GPOs) handelt, werden diese auch nicht im RSOP angezeigt.

    Und abgesehen davon ist RSOP.msc zum Überprüfen von GPOs nicht mehr State oft the Art und sollte ab Windows 7 und Windows Server 2008 R2 auch nicht mehr verwendet werden. Besser ist es in der Kommandozeile diesen Befehl zu verwenden: GPResult /h GPO-Report.html.

  • PSOs dürfen erst erstellt werden, wenn sich der Domänenfunktionsmodus bereits im Modus Windows Server 2008 oder höher befindet. Wenn PSOs erstellt werden bevor sich der Domänenfunktionsmodus mindestens in der Ebene Windows Server 2008 befindet, werden diese auch nach dem Hochstufen nicht angewendet!

  • Ob und welches PSO auf einen Benutzer verlinkt ist, sollte mit dem Kommandozeilenbefehl dsget user <DN des Benutzers> -effectivepso kontrolliert werden. Beispielsweise: dsget user " CN=Yusuf Dikmenoglu,OU=IT,DC=ad2008R2,DC=Dikmenoglu,DC=de" -effectivepso
Sunday, March 20, 2011 11:35:12 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Gruppenrichtlinien  | 
 Wednesday, March 02, 2011

In Active Directory-Umgebungen mit komplexen Gruppenstrukturen kann es zu Problemen bei der Benutzeranmeldung, genauer mit dem Access Token kommen.

Der KDC (Key Distribution Center) der standardmäßig auf jedem DC läuft, sendet nach der erfolgreichen Benutzerauthentisierung (erfolgreiche Eingabe von Benutzername und Kennwort) ein PAC (Privilege Attribute Certificate) im Ticket Granting Ticket (TGT) mit. Wenn der Client ein TGT erhält, wird das PAC vom Local Security Authority (LSA) Prozess auf dem Client dazu verwendet, um das Access Token zu erstellen. Im Access Token ist die SID des Benutzerobjekts, die SIDs der SIDHistory sowie die direkten und verschachtelten Sicherheits-Gruppenmitgliedschaften des Benutzers enthalten. Im Access Token werden ausschließlich die Mitgliedschaften in Sicherheitsgruppen und nicht in Verteilergruppen berücksichtigt! Das Access Token hat aber ein Limit von maximal 1024 Einträgen und dieser Wert lässt sich nicht verändern!


In bestimmten Szenarien kann die Kerberos-Authentifizierung fehlschlagen, wenn ein Benutzer bereits Mitglied in 70 bzw. 120 Gruppen ist.

Authentication Fails Due to User PAC: Logon and Authentication; Security Services
New resolution for problems with Kerberos authentication when users belong to many groups


Um dem Problem einer fehlgeschlagenen Benutzerauthentisierung auf die Schliche zu kommen, kann man das Kommandozeilenbefehl Whoami mit dem Parameter /all oder das Cmdlet Get-ADAccountAuthorizationGroup in der AD-PowerShell dazu verwenden. Durch beide Varianten wird das Access Token ausgewertet.

Alle Gruppenmitgliedschaften eines Benutzers exportieren


Der Nachteil von Whoami /all ist jedoch, dass man den Inhalt des Access Token nur dann auswerten kann, wenn man als der entsprechende Benutzer schon angemeldet ist. Wenn man sich allerdings erst gar nicht anmelden kann, bringt einem das Whoami /all herzlichst wenig. Die Alternative ist die AD-PowerShell. Denn damit kann man von einem x-beliebigen Rechner die Gruppenmitgliedschaften eines Benutzers auswerten, sofern die AD-PowerShell installiert ist.

Es gibt aber noch eine weitere Alternative, nämlich NTDSUTIL! Auch mit NTDSUTIL ist es so wie mit der AD-PowerShell möglich, die Gruppenmitgliedschaften eines Benutzers auszuwerten.

Unter Windows Server 2003 RTM und Windows Server 2003 SP1 steht die „Evaluierung der Gruppenmitgliedschaften“ in NTDSUTIL erst nach der Installation des Hotfix 906208 zur Verfügung.

When you try to log on to a Windows Server 2003-based domain by using a domain user account, the logon request fails


Erstmalig wurde das Problem in NTDSUTIL unter Windows Server 2003 SP2 behoben!

 

Die Gruppenmitgliedschaften eines Benutzers lassen sich mit NTDSUTIL wie folgt Anzeigen:

  • Im ersten Schritt gilt es in einer Kommandozeile oder unter „Ausführen“ (Windows-Taste + R) das NTDSUTIL aufzurufen.
  • Danach muss man mit group membership evaluation auf die Ebene Evaluierung der Gruppenmitgliedschaft wechseln.
  • Anschließend wird mit dem Befehl run <Domäne.Tld> <Benutzer> unter Windows Server 2003 im Verzeichnis C:\Dokumente und Einstellungen\<Benutzername> und ab Windows Server 2008 unter C:\Users\<Benutzername> eine Datei Namens <Benutzername>-<Datum/Uhrzeit>.tsv erstellt, in der alle Gruppenmitgliedschaften des angegebenen Benutzers aufgelistet sind. Die Datei lässt sich mit Notepad oder dem Editor öffnen.





  • Die Datei mit den Gruppenmitgliedschaften vom angegebenen Benutzer, sieht wie folgt aus:


 

 


Weitere Informationen:
Output is incomplete when you use the Group Membership Evaluation feature of the Ntdsutil.exe tool in Windows Server 2003
Alle Mitglieder einer Gruppe in eine neue Gruppe kopieren
AD-PowerShell Befehle
Gespeicherte Abfragen
Active Directory – Abfrage

Wednesday, March 02, 2011 9:58:53 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Dokumentation | Erweiterte Abfragen  | 
 Sunday, February 06, 2011

Die Virtualisierung hat längst Einzug in vielen Unternehmen genommen. Sei es Dateiserver, Druckserver oder Applikationsserver, Dank der Virtualisierung lassen sich alle Serverrollen virtualisieren. Nicht nur das dadurch in Bezug auf Green IT Rechnung getragen wird, durch die Virtualisierung lassen sich auch die Hardwarekosten deutlich senken.

Welche Dienste unter welchem Hypervisor supportet werden, kann man hier in Erfahrung bringen:

Windows Server Catalog

Grundsätzlich lassen sich auch die Infrastrukturserver wie Domänencontroller (DC), Exchange Server und SQL Server virtualisieren. Doch gerade bei diesen Serverrollen und insbesondere bei virtuellen DCs (vDCs), gibt es einiges mehr im Betrieb zu beachten als bei physikalischen Servern. Sonst kann es unter Umständen und je nach Größe der Umgebung im Extremfall, in einem Desaster enden! Bei vDCs muss man die Stolperfallen kennen, alleine schon aus dem Grund, da bei physikalischen Servern viele Möglichkeiten erst gar nicht zur Verfügung stehen. Dabei spielt es keine Rolle, welcher Hypervisor (Hyper-V, ESX…) sich im Einsatz befindet.

Die Virtualisierung von DCs hat aber auch, neben Green IT und der Hardwareersparnis, weitere Vorteile. Sichert man einen vDC auf einer anderen Hardware zurück, kann man sich die Hardware-Abstraktion zunutze machen, da man weniger Treiberprobleme hat, als wenn man einen physikalischen DC auf einer anderen Hardware rücksichert. Auch bei der Rollentrennung hilft die Virtualisierung.

 


Die GOs und NO-GOs bei virtuellen DCs


  • Die Zeit: Die Zeitsynchronisation innerhalb einer AD Umgebung ist von großer Bedeutung! Denn Microsoft setzt in einer AD Umgebung seit Windows 2000 das Authentifizierungsprotokoll Kerberos in der Version 5 ein und dieses toleriert standardmäßig eine Zeitdifferenz von gerade einmal fünf Minuten. Weicht die Zeit mehr als fünf Minuten ab, verliert das Kerberos Ticket Granting Ticket (kurz TGT) seine Gültigkeit.

    Der für die Zeit verantwortliche DC einer Gesamtstruktur ist der DC, der die FSMO-Rolle des PDC-Emulators in der Root-Domäne innehat! Man sollte den PDC-Emulator der Root-Domäne gegen eine externe Quelle (entweder aus dem Internet oder Hardware-Uhr) abgleichen lassen. Auf der Firewall muss dazu der Port 123 offen sein, wenn mit einer Quelle aus dem Internet abgeglichen werden soll. Der PDC-Emulator muss aber nicht seine Zeit mit einer externen Quelle abgleichen. Die tatsächliche Zeit ist nicht zwingend notwendig. Sie muss nur innerhalb einer Gesamtstruktur synchron sein!

    Alle DCs holen sich ihre Zeit dann vom PDC-Emulator. Die Clients sowie Mitgliedsserver synchronisieren sich ihre Zeit mit ihrem Anmeldeserver, also von dem DC, bei dem sich der Client bzw. Mitgliedsserver authentisiert. Dieser muss nicht zwingend der PDC-Emulator sein.

    Die PDC-Emulatoren der Subdomänen holen sich wiederum ihre Zeit, vom PDC-Emulator der Root-Domäne. Der PDC-Emulator der Root-Domäne ist die maßgebliche Zeitquelle für die Gesamtstruktur.

    Die Zeitsynchronisation mit einer Quelle aus dem Internet, wird auf dem PDC-Emulator der Root-Domäne mit dem folgenden Befehl eingerichtet:

    w32tm /config /update /manualpeerlist:de.pool.ntp.org /syncfromflags:MANUAL /reliable:YES

    Wenn an W32time nichts verstellt wurde (per GPO), hat man anschließend eine funktionierende Zeitsynchronisation!

    Es sollte darauf geachtet werden, dass virtuelle Maschinen und gerade vDCs ihre Zeit nicht vom Hostsystem (was zum Beispiel unter Hyper-V in den Integrationsdiensten der VM standardmäßig der Fall ist), sondern von der Domäne übernehmen. Oder wenn es gewünscht ist das die vDCs ihre Zeit vom Hostsystem übernehmen, so sollte darauf geachtet werden das auf dem Hostsystem derselbe Zeitserver konfiguriert ist, der auch auf dem PDC-Emulator konfiguriert wurde.


  • Kein AD in der Hyper-V Parent Partition: Das Ausführen von DCPROMO auf einem Hyper-V Host ist ein NO-GO, erst recht nicht wenn bereits VMs auf dem Host in Betrieb sind! Auch wenn es technisch möglich ist in der Parent Partition zusätzliche Dienste auszuführen, ist es mitnichten empfohlen dies zu tun. Da unter Hyper-V sich die Treiber für die Hardware in der Parent Partition befinden und der gesamte I/O für den Speicher- sowie Netzwerkzugriff von und zu den VMs durch die Parent Partition verläuft, sollte man den Hyper-V Host nicht unnötig noch mit weiteren Diensten an seine Leistungsgrenzen bringen. Deshalb sollte der Hyper-V Host ausschließlich zur Verwaltung der VMs dienen und keineswegs zum DC gestuft werden!

    Befinden sich alle in der Domäne verfügbaren vDCs auf demselben Host, wäre da noch bei einem Neustart des Hosts das Henne-Ei Problem. Ist der Host ein vDC und würden alle in der Domäne verfügbaren vDCs auf demselben Host betrieben werden, würde der Neustart des Hosts länger dauern. Denn nach einem Neustart des Hosts muss zuerst das AD-integrierte DNS auf den vDCs zur Verfügung stehen. Da bei einem Neustart aber kein DC der die DNS-Zone zur Verfügung stellt bereitsteht, kommt es zu erheblichen Verzögerungen während eines Neustarts.

    Wenn es sich um einen Hyper-V Cluster handelt und alle in der Domäne verfügbaren vDCs befinden sich auf dem Cluster, so hat man bei einem Neustart größere Probleme, da der Cluster ohne einen DC nicht startet!


  • Die Ausfallsicherheit: Die Ausfallsicherheit beim AD ist bereits dann gewährleistet, wenn mindestens zwei DCs innerhalb einer Domäne existieren. Natürlich sollten in einer virtualisierten Umgebung nicht alle in der Domäne verfügbaren vDCs auf demselben Host betrieben werden, sonst hat man einen Single Point of Failure (SPoF). Die Erklärung dürfte selbsterklärend sein, denn wenn der einzig verfügbare Host beispielsweise wegen einem Hardwaredefekt ausfallen sollte, würde kein vDC mehr zur Verfügung stehen und die Domäne wäre erst mal verloren. Daher ist es ratsam vDCs mindestens auf mehrere Hosts zu verteilen, wenn nicht noch zusätzlich ein physikalischer DC existiert (was zu empfehlen ist!).

    Wie immer gilt, in jeder Domäne sollten sich mindestens zwei DCs befinden!

    Wie viele DCs pro Domäne werden benötigt?


  • Mindestens ein physikalischer DC: Es ist empfehlenswert mindestens einen physikalischen DC in der Domäne zu betreiben. Denn wenn alle DCs einer Domäne virtuell wären, ist man gegen einen Ausfall des Hypervisors (beispielsweise durch ein Windows Update) nicht geschützt. Fällt der Hypervisor aus und existieren ausschließlich vDCs, wäre die Domäne verloren. Des Weiteren ist es empfehlenswert, dass der physikalische DC die Rolle des PDC-Emulators wegen der Zeitsynchronisation innehat. Empfehlenswert ist es auch, neben dem PDC-Emulator noch die beiden gesamtstrukturweiten FSMO-Rollen Schemamaster sowie Domänennamenmaster auf den physikalischen DC zu verschieben.

    Die FSMO-Rollen verschieben


  • Kein Snapshot von vDCs erstellen: Allgemein ist das Erstellen eines Snapshots eine nützliche Funktion. Ein Snapshot ist eine Momentaufnahme einer VM. Vor einer Konfigurationsänderung einer VM, kann man einen Snapshot erstellen und nach einer fehlgeschlagenen Konfigurationsänderung, zum vorherigen Zustand Dank des Snapshots zurückkehren. Diese Funktion sollte aber mit Bedacht und nur auf supporteten VMs eingesetzt werden!

    Da es sich beim AD um ein verteiltes Datenbanksystem handelt, darf das Snapshotfeature zum Sichern und Wiederherstellen eines vDCs keineswegs verwendet werden (nicht zu verwechseln mit dem NTDSUTIL-Snapshot)! Erst recht nicht in einer AD Umgebung mit mehr als einem DC! Ein Snapshot ist auf einem vDC, egal welcher Hypervisor eingesetzt wird, stets zu 100% nicht supportet(!) und ist ein striktes NO-GO! Denn damit verursacht man in einer AD Umgebung mit mehr als einem DC ein USN Rollback und gefährdet somit die Datenkonsistenz. Sichert man einen Snapshot zurück, wird das Betriebssystem und die AD Datenbank in einen früheren Zustand versetzt und genau durch diese Vorgehensweise, erzeugt man ein USN Rollback. Wurde ein vDC mit einem Shapshot zu einem vorherigen Stand rückgesichert, stellen ab sofort die Replikationspartner die AD-Replikation zu und von diesem vDC ein. Des Weiteren richtet das Rücksichern eines Snapshots auf einem vDC unter Umständen (RID-Master) einen erheblichen Schaden an.

    Auch wenn man vorher alle DCs einer Domäne herunterfährt und danach von einem vDC ein Snapshot erstellt, bleibt die Problematik dieselbe. Sobald man einen Snapshot auf einem vDC in einer AD Umgebung mit mehr als einem DC zurücksichert, entsteht ein USN Rollback. Dabei ist es irrelevant, ob die vDCs online oder offline sind. Wenn ein Snapshot auf einem vDC zurückgesichert wird, ist mindestens der rückgesicherte vDC zerstört.

    Snapshots dienen auch keineswegs als Datensicherung! Auf virtuellen DCs sollte so wie auf physikalischen DCs, regelmäßig auf mindestens zwei vDCs eine System State Sicherung durchgeführt werden.


  • Kein Klon erstellen: Das Klonen eines vDCs, im Form von Duplizieren der virtuellen Festplatte (z.B. VHD), ist weder supportet und genauso wie ein SnapShot, ein striktes NO-GO! Denn wenn ein Klon in derselben Gesamtstruktur wie das Original online geht, sind die Folgen Katastrophal! Lediglich den Computernamen und die IP-Adresse zu ändern, bringt überhaupt nichts. Denn entscheidend ist der Directory Service Agent-GUID (kurz DSA-GUID), auch bekannt als objectGUID. Dieser lässt sich nicht ändern und ist in der Gesamtstruktur eindeutig.

    Ferner existieren doppelte RIDs (Relative Identifiers) und doppelte SIDs. Handelt es sich bei dem geklonten vDC auch noch um den FSMO-Rolleninhaber und speziell um den RID-Master bzw. PDC-Emulator, sind die Probleme viel schlimmer! Der Anruf beim Microsoft Produkt Support Service (MSPSS) ist jedenfalls sicher.

    Der RID-Master und sein RID-Pool

    Zu Sicherungszwecken ist ein Klon so wie ein Snapshot, ebenfalls ganz und gar nicht geeignet und ist auch nicht supportet! Denn die Problematik ist dieselbe wie beim Rücksichern eines Snapshots. Wird ein Klon wiederhergestellt, versetzt man den vDC zu einem früheren Zustand. Auch hierbei entsteht ein USN Rollback und in einer Umgebung mit mehr als einem DC, stellen die Replikationspartner umgehend die AD-Replikation ein.

    Es sollte auch vermieden werden, einen Klon in einer angeblich abgeschotteten Testumgebung zu starten, um verschiedene Tests durchzuführen. Denn das Risiko ist zu groß, das irgendwann einmal die Testumgebung aus welchen Gründen auch immer, doch Verbindung zur Produktivumgebung erhält.

    Möchte man sich eine Template-VM erstellen, sollte unbedingt nach der Betriebssysteminstallation SYSPREP (und nicht NEWSID!) ausgeführt werden. Denn erst wenn Sysprep (unter Windows Server 2008 R2 im Verzeichnis %windir%\System32\sysprep) ausgeführt wurde, wird die VM anonymisiert. Erst danach darf das Template geklont werden.


  • Keine Image-basierte Sicherung durchführen: Eine Image-basierte Sicherung kann beispielsweise sein, wenn ein vDC automatisiert heruntergefahren, danach kopiert und anschließend automatisiert hochgefahren wird. Oder wenn mit einem Drittanbieter Werkzeug ein Image eines vDCs erstellt wird. Die Wiederherstellung durch solch eine Sicherungsart ist ebenfalls nicht supportet und ist zugleich ein striktes NO-GO! Denn bei einer Wiederherstellung würde man so wie bei einem Snapshot oder Klon, dass Betriebssystem und die AD Datenbank in einen früheren Zustand versetzen. Die USN Rollback Problematik und vor allem der Schaden, mindestens an dem zurück geimageten vDC, ist sicher!

    Deshalb gilt hier das gleiche wie bei einem Snapshot und bei einem Klon: Finger weg von dieser nicht supporteten Sicherungsart!

    Images als Sicherung?


  • Die vDC-Sicherung: Wie bei physikalischen DCs, sollte auf mindestens zwei vDCs das System State regelmäßig gesichert werden.

    Es gibt aber noch zwei weitere Methoden, die zum Sichern und Wiederherstellen eines vDCs unterstützt werden:

    1. Das Ausführen der Windows Server-Sicherung im Gastbetriebssystem ist supportet.
    2. Das Ausführen der Windows Server-Sicherung auf dem Hyper-V Host ist supportet. Denn dadurch wird der VSS Writer (Volume Shadow Copy Service, Volumeschattenkopie-Dienst) des Gastbetriebssystems aufgerufen, um sicherzustellen, dass die Sicherung ordnungsgemäß durchgeführt wird.

    Durch diese beiden Methoden, genauso wie beim Wiederherstellen einer System State-Sicherung, wird die invocationId der AD-Datenbank im Gast-vDC zurückgesetzt. Das ist zwingend notwendig, damit in einer AD Umgebung mit mehreren DCs die Replikationspartner bei einer Wiederherstellung eines DCs erkennen, dass ein DC ordnungsgemäß (supportet!) wiederhergestellt wurde. Die AD-Replikation wird dann ab dem Zeitpunkt des Sicherungsdatums, mit dem wiederhergestellten vDC neu aufgebaut.

    Das elementare für die erfolgreiche Wiederherstellung eines DCs ist, dass die invocationId der AD-Datenbank zurückgesetzt werden muss! Denn nur so ist sichergestellt, dass der Neuaufbau der AD-Replikation in einer AD Umgebung mit mehreren DCs erfolgreich verläuft. Das ist auch der Grund, warum ein Snapshot, Klon oder Image eines DCs nicht supportet ist, da bei diesen Methoden die invocationId nicht zurückgesetzt wird!

    Zwei wichtige IDs eines DCs: DC GUID und InvocationId


  • Virenscanner auf dem Host: Ist auf dem Hostsystem (Hyper-V, KVM…) ein Virenscanner installiert, sollten die Verzeichnisse in denen sich zum einen die Virtuellen Festplatten (VHD…) und zum anderen die Konfigurationsdateien befinden, vom Echtzeitscanner (On-Access) des Virenscanners ausgeschlossen werden. Unter Hyper-V sind das standardmäßig die beiden Verzeichnisse C\Users\Public\Documents\Hyper-V\Virtual Hard Disks und C:\ProgramData\Microsoft\Windows\Hyper-V. Wurden andere Verzeichnisse festgelegt, sollten diese vom Echtzeitscanner ausgeschlossen werden.

    Natürlich sollten auch in den VMs bestimmte Verzeichnisse vom Echtzeitscanner ausgeschlossen werden. Welche das sind, steht hier:

    Antivirenprogramm


  • DCs offline konvertieren (P2V): Das online Konvertieren (Physical-to-Virtual, kurz P2V) eines DCs ist nicht supportet! Wenn man einen physikalischen DC konvertieren möchte, muss der DC ausgeschaltet (heruntergefahren, nicht angehalten oder ausgesetzt) und offline konvertiert werden! Denn ausschließlich die offline Konvertierung eines DCs (unter Hyper-V z.B. mit dem System Center Virtual Machine Manager, kurz VMM) ist der einzige Weg, welcher auch von Microsoft supportet wird. Nach der offline Konvertierung darf der physikalische DC nie mehr in der Domäne gestartet werden!

    Aber ein P2V ist bei einem DC ohnehin nicht empfehlenswert. Empfohlen ist es auf dem Host einen zusätzlichen DC zu installieren und den physikalischen DC herunterzustufen.


  • Die VM-Sicherheit: Bei dem Thema „Sicherheit“ gelten für einen vDC mindestens die gleichen Sicherheitsregeln, wie für physikalische DCs. Weiterhin muss klar definiert sein, wer beispielsweise unter Hyper-V den Host administrieren darf. Denn wer Zugriff auf die virtuellen Festplatten (und somit auf die vDCs) hat, könnte diese kopieren und hätte prinzipiell Zugriff auf alle Kennwörter! Deshalb muss der Zugriff auf die virtuellen Festplatten von vDCs genauso eingeschränkt sein, wie der Zugriff auf physikalische DCs!


  • Einen virtuellen DC niemals anhalten und niemals den Status speichern: Ein virtueller DC sollte niemals angehalten (pausiert) und es sollte niemals der Status gespeichert werden! Denn wenn ein vDC angehalten oder der Status gespeichert wird, friert man de facto die Uhrzeit und das Datum des vDCs ein. Genau das kann aber beim Wiedereinschalten des vDCs zum Problem werden, so dass die Replikationspartner die AD-Replikation mit diesem vDC einstellen und dadurch Lingering Objects (zu Deutsch, herumlungernde Objekte) entstehen. Ein vDC sollte stets heruntergefahren werden.

    Lingering Objects (veraltete Objekte)


  • Virtuelle Festplatten mit fixer Größe konfigurieren: Es ist empfehlenswert, eine virtuelle Festplatte mit einer festen Größe zu konfigurieren. Konfiguriert man eine dynamische virtuelle Festplatte, muss man beim sizing des Hosts ohnehin die maximale Größe, die man bei einer dynamischen virtuellen Festplatte angegeben hat kalkulieren.


  • Keine differenzierende virtuelle Festplatte konfigurieren: Man sollte es tunlichst vermeiden, eine differenzierende virtuelle Festplatte für einen vDC zu implementieren! Dadurch ist es zu einfach, den vDC in einen früheren Zustand zu versetzen.


  • Nicht einen vDC unter Hyper-V exportieren: Das Exportieren eines vDCs unter Hyper-V sollte nicht durchgeführt werden.

 

 

Weitere Informationen:
Warum es ein dedizierter DC sein sollte!

Ein AD-Schnappschuss erstellen
Das Active Directory gewaltsam vom DC entfernen
Die Tombstone Lifetime
Running Domain Controllers in Hyper-V
Things to consider when you host Active Directory domain controllers in virtual hosting environments
DC’s and VM’s – Avoiding the Do-Over
Using Domain Controller Virtual Machines

Sunday, February 06, 2011 10:46:46 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Sunday, January 23, 2011

Die Active Directory (AD) Schemaversionen sind (in Dezimal) unter:

  • Windows 2000 mit allen Service Packs = 13
  • Windows Server 2003 mit allen Service Packs = 30
  • Windows Server 2003 R2 mit allen Service Packs = 31
  • Windows Server 2008 mit allen Service Packs = 44
  • Windows Server 2008 R2 mit allen Service Packs = 47


Das Installieren eines Service Packs ändert niemals die AD Schemaversion! Die AD Schemaversion ändert sich auch dann nicht, wenn andere Technologien (beispielsweise Exchange) installiert werden und eine Schemaaktualisierung durchführen. Oder wenn eine eigene Schemaänderung durchgeführt wird, ändert sich ebenfalls die AD Schemaversion nicht. Die AD Schemaversion ändert sich nur dann, wenn das ADPREP einer neueren Windows Server Version ausgeführt wird.

Die Information in der die AD Schemaversion enthalten ist, verbirgt sich im Attribut objectVersion, das sich in den Eigenschaften der Schemapartition befindet. Dadurch, dass die Schemapartition auf alle DCs in der Gesamtstruktur repliziert wird, kann man zur Abfrage einen lokalen DC verwenden. Deshalb besteht keine Notwendig in einer Gesamtstruktur mit mehreren Domänen, einen DC aus der Root-Domäne oder gar den globalen Katalog zu verwenden. Diese Information hat jeder DC, egal in welcher Domäne er sich befindet.

 

Die AD Schemaversion mit der AD-PowerShell abfragen

Mit der AD PowerShell lässt sich die AD Schemaversion folgendermaßen herausfinden:

([ADSI]"LDAP://<Domäne.TLD>/CN=Schema,CN=Configuration,DC=Root-Domäne").objectVersion

 

Oder mit diesem AD PowerShellbefehl:

Get-ADObject "CN=Schema,CN=Configuration,DC=Root-Domäne" -Properties objectVersion | Select objectVersion | FT -A

 


Die AD Schemaversion mit ADSIEdit anzeigen

Nach dem man sich in ADSIEdit (oder mit anderen LDAP-Browsern) mit der Schemapartition verbunden hat, gilt es den Eintrag zu erweitern und mit einem Rechtsklick auf den Container CN=Schema,CN=Configuration,DC=Root-Domäne im Kontextmenü die Eigenschaften des Containers aufzurufen. Dort findet man das Attribut objectVersion mit der aktuellen AD Schemaversion.


 


 

Die AD Schemaversion mit LDP anzeigen

Ist das LDP gestartet, muss man sich als erstes unter Remotedesktopverbindung – Verbinden… mit einem DC verbinden. Danach muss man sich mit dem AD unter Remotedesktopverbindung – Gebunden… binden. Ist das erfolgt, ruft man unter Durchsuchen – Suchen das Suchfenster auf und gibt folgende Daten in die Felder ein:

Basis-DN: CN=Schema,CN=Configuration,DC=Root-Domäne
Filter:
(objectClass=top)
Bereich:
Basis
Attribute:
objectVersion

Klickt man anschließend auf Ausführen, erscheint in der rechten Hälfte von LDP das Attribut objectVersion mit der aktuellen Schemaversion.


 

 

Die AD Schemaversion mit dsquery abfragen

Auch mit dsquery lässt sich die AD Schemaversion in einer Kommandozeile abfragen. Der Befehl lautet wie folgt:

dsquery * "CN=Schema,CN=Configuration,DC=Root-Domäne" -Scope Base -attr objectVersion


 

Die AD Schemaversion in der Registry überprüfen

Die AD Schemaversion kann man sich auf jedem DC in der Gesamtstruktur, sogar in der Registry in dem folgenden Registrykey ansehen:

HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\<Schema Version>


 


Im selben Registrykey existiert auch der Schlüssel System Schema Version. Dieser Schlüssel wird lediglich von der Install from Media (IFM) Funktion verwendet. Damit wird sichergestellt, dass beim heraufstufen eines DCs mit der IFM Funktion, keine ältere oder neuere Schemaversion auf dem DC wiederhergestellt wird. Dieser Wert dient zur Kontrolle.

Domänencontroller-Installation von einer Sicherung

 


Die Exchange Schemaversion abfragen

Exchange hat seine eigene Schemaversion. Die Schemaversion von Exchange steckt im Attribut rangeUpper, das sich in der Schemapartition im Objekt ms-Exch-Schema-Version-Pt befindet. So wie bei der AD Schemaversion, kann man für die Abfrage der Exchange Schemaversion jeden DC in der Gesamtstruktur verwenden, da sich die gewünschte Information ebenfalls in der Schemapartition befindet, die wie bereits erwähnt auf jeden DC in der Gesamtstruktur repliziert wird.

Anders als bei der AD Schemaversion, kann sich unter Exchange die Schemaversion schon beim Installieren eines Service Packs für Exchange ändern.

Die Exchange Schemaversionen sind unter:

  • Exchange 2000 = 4397
  • Exchange 2000 SP3 = 4406
  • Exchange Server 2003 RTM = 6870
  • Exchange Server 2003 SP2 = 6870
  • Exchange Server 2007 RTM = 10637
  • Exchange Server 2007 SP1 = 11116
  • Exchange Server 2007 SP2 = 14622
  • Exchange Server 2007 SP3 = 14625
  • Exchange Server 2010 RTM = 14622
  • Exchange Server 2010 SP1 = 14726



Die Exchange Schemaversion mit der AD-PowerShell abfragen

In der AD PowerShell findet man die Exchange Schemaversion wie folgt heraus:

([ADSI]"LDAP://Domäne.de/CN=ms-Exch-Schema-Version-Pt,CN=Schema,CN=Configuration,DC=Root-Domäne").rangeUpper

 

Auch dieser AD PowerShellbefehl liefert die Schemaversion von Exchange:

Get-ADObject "CN=ms-Exch-Schema-Version-Pt,CN=Schema,CN=Configuration,DC= Root-Domäne " -Properties rangeUpper | Select rangeUpper | FT –A

 

Die Exchange Schemaversion mit ADSIEdit anzeigen

Ist ADSIEdit gestartet, muss man sich zuerst mit der Schemapartition verbinden, sofern noch keine Verbindung existiert. Danach ruft man mit einem Rechtsklick auf den Container CN=Schema,CN=Configuration,DC=Root-Domäne die Eigenschaften auf und navigiert zum Attribut rangeUpper. Der Wert in diesem Attribut, ist die Exchange Schemaversion.


 

 

Die Exchange Schemaversion mit LDP anzeigen

Möchte man sich die Exchange Schemaversion in LDP anzeigen lassen, gilt es sich zuerst unter Remotedesktopverbindung – Verbinden… mit einem DC zu verbinden. Im zweiten Schritt bindet man sich unter Remotedesktopverbindung – Gebunden… mit dem AD. Als nächstes ruft man unter Durchsuchen – Suchen das Suchfenster auf und gibt folgende Daten in die Felder ein:

Basis-DN: CN=ms-Exch-Schema-Version-Pt,CN=Schema,CN=Configuration,DC=Root-Domäne
Filter: (objectClass=*)
Bereich: Basis
Attribute: rangeUpper

Klickt man anschließend auf Ausführen, erscheint das Attribut rangeUpper mit der aktuellen Exchange Schemaversion.


 

 

Die Exchange Schemaversion mit dsquery abfragen

In der Kommandozeile lässt sich die Schemaversion von Exchange mit dsquery wie folgt abfragen:

dsquery * CN=ms-Exch-Schema-Version-Pt,CN=Schema,CN=Configuration,DC=Root-Domäne -Scope Base -attr rangeUpper

Sunday, January 23, 2011 1:22:15 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Erweiterte Abfragen | Schema | Exchange  | 
 Sunday, January 02, 2011

Wenn Unternehmen fusionieren, folgt des Öfteren eine Migration. Vor einer Migration ist es gut zu wissen, welche Active Directory (AD) Schemaerweiterungen in der zu migrierenden Gesamtstruktur existieren, damit diese falls notwendig, in der Ziel-Gesamtstruktur ebenfalls zur Verfügung gestellt werden können. Mit Schemaerweiterungen sind Erweiterungen im AD Schema gemeint, die von einer Standardinstallation des AD in der entsprechenden Version (Windows 2000, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2) abweichen. Aber auch aus Dokumentationsgründen ist es empfehlenswert, die AD Schemaerweiterungen einer Gesamtstruktur stets zu kennen.

Die Schemaerweiterungen lassen sich recht einfach mit dem Tool ADSchemaAnalyzer aufspüren, dass Bestandteil des früheren ADAM (Active Directory Application Mode) und heutigen AD LDS (Active Directory Lightweight Directory Services) ist und ab Windows XP und Windows Server 2003 zur Verfügung steht. Hat man ADAM bzw. AD LDS installiert, findet man den ADSchemaAnalyzer unter allen unterstützten Betriebssystemen im Verzeichnis %windir%\ADAM.

Während man unter Windows Server 2003 ADAM noch extra herunterladen musste, befindet es sich ab Windows Server 2003 R2 unter den Windows-Komponenten bereits on Bord. Ab Windows Server 2008 findet man die AD LDS unter den Rollen. Aber auch auf den Clients Windows XP, Windows Vista und Windows 7 lässt sich ADAM bzw. AD LDS installieren und das AD Schema vergleichen. Doch vorher muss für das eingesetzte Betriebssystem, die entsprechende Version heruntergeladen werden.

Active Directory Application Mode (ADAM)
AD LDS für Windows Vista
AD LDS für Windows 7


Es ist irrelevant, auf welchem System das AD Schema verglichen wird. Ob auf einem Client, der sich in einer Arbeitsgruppe oder Domäne befindet, Standaloneserver, Mitgliedserver oder DC. Das AD Schema lässt sich stets vergleichen.

 

Die Vorgehensweise

  1. Nach der Installation des ADAM bzw. der AD LDS, startet man zuerst aus dem Verzeichnis %windir%\ADAM den ADSchemaAnalyzer. Ist das Tool gestartet, klickt man auf Datei – Zielschema laden… um das Ziel AD Schema zu laden. Möchte man das AD Schema eine aktuelle AD Umgebung dahingehend überprüfen ob es von einer Standardinstallation abweicht, so sollte als Ziel, das AD Schema der bestehenden AD Umgebung als Erstes geladen werden.

    Soll jedoch das AD Schema von zwei aktuellen AD-Umgebungen verglichen werden (beispielsweise vor einer Inter-Forest Migration), ist es empfehlenswert, im ersten Durchlauf das AD Schema der einen Gesamtstruktur und in einem empfohlenen zweiten Durchlauf, das AD Schema der anderen Gesamtstruktur als Ziel AD Schema zu laden!





  2. Im darauffolgenden Fenster Zielschema laden kann entweder das AD Schema von einer aktuellen AD Umgebung oder von einer LDF-Datei, eines zuvor exportierten AD Schemas geladen werden. Somit hat man die folgenden drei Möglichkeiten, um das AD Schema zu vergleichen:

    - Man kann das AD Schema einer aktuellen AD Umgebung mit einer LDF-Datei vergleichen.
    - Es können zwei aktuelle AD Umgebungen verglichen werden.
    - Es können zwei LDF-Dateien verglichen werden.

    Soll das AD Schema von zwei aktuellen AD Umgebungen verglichen werden, muss vorher natürlich sichergestellt werden, dass das System auf dem der ADSchemaAnalyzer gestartet wurde, Verbindung zu beiden Gesamtstrukturen hat und die entsprechenden Rechte bestehen.





  3. Das AD Schema einer AD Umgebung kann man in einer Kommandozeile mit LDIFDE wie folgt exportieren:

    Ldifde -F C:\ADSchema.ldf -d "CN=Schema,CN=Configuration,DC=Root-Domäne"


  4. Wurde das Zielschema von einer aktuellen AD Umgebung oder von einer LDF-Datei geladen, muss als nächstes unter Datei – Basisschema laden… diesmal das Basisschema geladen werden. Wenn das AD Schema einer aktuellen AD Umgebung mit einer Standardinstallation verglichen werden soll, muss als Basisschema das AD Schema der Standardinstallation, beispielsweise in Form einer LDF-Datei geladen werden.





    Ein LDF-Export einer Standardinstallation eines Windows Server 2003, Windows Server 2003 R2, Windows Server 2008 und Windows Server 2008 R2 AD Schemas, wird hier zur Verfügung gestellt.

    ADSchema.zip (673,58 KB)


  5. Ist das Basisschema geladen, muss zum Schluss noch im Menü Schema die Option Vorhandene Elemente ausblenden ausgewählt werden. Denn schließlich sollen lediglich die Unterschiede zwischen zwei AD Schemas angezeigt werden.





  6. Nun sieht man in der Ausgabe unter dem Container Klassen und Attribute die evtl. bestehenden Unterschiede zwischen beiden AD Schemas. Danach können die Einträge einzeln, durch das Markieren der gewünschten Klassen bzw. Attribute oder alle Unterschiede durch Auswahl von Schema – Alle nicht vorhandenen Elemente als eingeschlossen markieren exportiert werden. Zum Exportieren wählt man Datei – LDIF-Datei erstellen… .


 

Weitere Informationen:
ADSchemaAnalyzer
LDIFDE - LDAP Data Interchange Format Data Exchange

Sunday, January 02, 2011 8:55:10 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Schema  | 
 Sunday, December 19, 2010

Der Generator für die standortübergreifende Replikationstopologie (Inter-Site Topology Generator, kurz ISTG), der, unabhängig von der Anzahl an Domänen und Verzeichnispartitionen, nur einmal pro AD-Standort existiert, ist eine Komponente des Knowledge Consistency Checker, kurz KCC. Der ISTG ist für die Berechnung der standortübergreifenden Replikationstopologie und für das Erstellen von eingehenden Replikationsverbindungen auf Bridgeheadserver (BHS) zuständig. Der ISTG ist in jedem AD-Standort auch dafür verantwortlich, automatisch einen BHS für jede Verzeichnispartition sowie für jedes Replikationstransportprotokoll an einem AD-Standort zu ermitteln. Der DC, der die Rolle des ISTG innehat, muss nicht unbedingt auch ein BHS sein!

Der BHS dient im Hinblick auf die AD-Replikation mit BHS aus anderen AD-Standorten als Brückenkopf und somit als Anlaufstelle, über den Replizierungsinformationen mit anderen AD-Standorten ausgetauscht werden. Der BHS ist der Einzige, der für die AD-Standort zu -Standort Replikation zuständig ist. Das bedeutet, über den BHS und nur über ihn, läuft die AD-Replikation zwischen den AD-Standorten (Inter-Site) ab! Dazu sammeln die BHS alle getätigten AD-Änderungen die auf allen DCs eines AD-Standorts stattgefunden haben, um diese dann zu anderen BHS aus anderen AD-Standorten zu replizieren. Deshalb erhält ein BHS an einem AD-Standort bevorzugt als erster die Replikationsdaten.

Der BHS ist dabei ausschließlich für die Verzeichnispartitionen autorisierend und repliziert auch nur die, die der BHS selbst in seiner Verzeichnisdatenbank (NTDS.dit) hält (einschließlich der Verzeichnispartitionen für den globalen Katalog). Jede Verzeichnispartition, die ein BHS eines AD-Standorts nicht innehat, benötigt einen weiteren BHS, der die entsprechende Verzeichnispartition in seiner Verzeichnisdatenbank gespeichert hat. Unter anderem können deshalb an einem AD-Standort mehrere BHS existieren. Ein BHS kann mehrere Verzeichnispartitionen über dasselbe Replikationstransportprotokoll oder auch über beide Replikationstransportprotokolle verwalten. Die AD-Replikation findet aber standortintern und standortübergreifend standardmäßig über das RPC über IP Protokoll statt. Die AD-Replikation könnte jedoch auch mit dem SMTP-Protokoll durchgeführt werden, allerdings ist das nur eingeschränkt möglich. Denn die Domänenpartition kann by Design nicht über das SMTP-Protokoll repliziert werden und es ist ein höherer Aufwand notwendig, um das entsprechend zu konfigurieren (eine Zertifizierungsstelle muss vorhanden sein).

Des Weiteren ist der ISTG für das Erstellen von eingehenden Verbindungsobjekten zwischen den BHS zuständig. Da die standortübergreifende AD-Replikation ausschließlich zwischen den BHS konfiguriert wird, werden im Gegensatz zu der standortinternen (Intra-Site) AD-Replikation, keine redundanten Verbindungsobjekte erstellt. Es werden lediglich weitere Verbindungsobjekte mit BHS in mehreren AD-Standorten erstellt, wenn es in der Standortverknüpfung (Site-Link) so konfiguriert wurde.

 


Einen Bridgeheadserver konfigurieren

Es gibt seit Windows 2000 mehrere Möglichkeiten einen DC als BHS für das IP- und SMTP-Protokoll zu bestimmen. Diese wären:

  • Die automatische Auswahl des BHS wird dem ISTG überlassen. Standardmäßig bestimmt der ISTG eigenständig den DC, der als BHS in einem AD-Standort tätig sein soll. Es ist kein manuelles Eingreifen erforderlich. Fällt der aktuelle BHS eines AD-Standorts aus, wählt beim nächsten KCC-Lauf (standardmäßig nach maximal 15 Minuten) der ISTG automatisch und eigenständig, ohne das Zutun des Administrators, einen anderen DC am gleichen AD-Standort als BHS aus. Dabei wird der DC, der die niedrigste objectGUID am AD-Standort hat, zum BHS ausgewählt.

  • Der Administrator kann aber auch manuell einen DC als bevorzugten BHS festlegen. Das kann beispielsweise dann von Interesse sein, wenn zwischen den AD-Standorten eine Firewall steht und nur gezielt einem bestimmten DC die standortübergreifende AD-Replikation erlaubt werden soll. Ein weiterer Anwendungsfall wäre zum Beispiel, wenn die meisten DCs an einem AD-Standort auf veralteter Hardware laufen und nur ein bestimmter DC, der auf aktueller Hardware läuft, soll als BHS bestimmt werden. Denn der BHS muss mehr Replikationsverkehr verarbeiten (insbesondere in größeren AD Umgebungen), als alle anderen DCs am selben AD-Standort.

    Wird manuell ein DC an einem AD-Standort explizit als BHS für ein oder beide Replikationstransportprotokolle konfiguriert, bedeutet das bei einem Ausfall dieses BHS, dass der Administrator manuell einen anderen DC zum BHS deklarieren muss, damit die AD-Replikation weiterhin durchgeführt werden kann. Denn nur wenn ein vom ISTG bestimmter BHS ausfällt, wird automatisch ein anderer DC als BHS bestimmt. Deshalb sollte man wenn möglich, entweder keinen BHS manuell bestimmen und dem ISTG die automatische Auswahl des BHS überlassen oder wenn man schon manuell die BHS bestimmen möchte, sollten idealerweise mehrere (mindestens immer zwei) DCs als BHS bestimmt werden.

    In einer Gesamtstruktur mit mehreren Domänen sollte stets der globale Katalog (GC) an einem AD-Standort der bevorzugte BHS sein. Andernfalls wird das mit der FehlerID 1567 im Eventlog protokolliert. Wenn in einem Multi-Domain Forest an einem AD-Standort ein GC existiert, und sich nicht zusätzlich an demselben AD-Standort mindestens ein DC aus allen anderen AD-Domänen existiert, muss der GC zwingend ein BHS sein.

  • Es können vom Administrator mehrere DCs am gleichen AD-Standort als bevorzugte BHS bestimmt werden. Jedoch wählt der ISTG je nach Umgebung, nur aus den manuell bestimmten BHS einen oder mehrere BHS pro AD Standort aus. Fällt ein BHS aus, wählt der ISTG wieder automatisch von den anderen manuell bestimmten DCs einen BHS aus.

  • Wenn zwischen zwei DCs, die sich an verschiedenen AD-Standorten befinden, manuell ein Verbindungsobjekt erstellt wird, werden diese beiden DCs ebenfalls zu BHS.


Möchte man einen DC oder mehrere DCs als bevorzugten BHS konfigurieren, so kann man das in der MMC Active Directory-Standorte und -Dienste durchführen. Dazu wählt man aus einem AD-Standort den entsprechenden DC aus und wählt im Kontextmenü zuerst die Eigenschaften aus. Danach wählt man im Reiter Allgemein aus dem Feld Transporte für die standortübergreifende Datenübermittlung das entsprechende Replikationstransportprotokoll, entweder IP oder SMTP aus und fügt es in das Feld Server ist ein bevorzugter Bridgeheadserver für folgende Transporte hinzu. Damit wird der DC zum manuell bestimmten bevorzugten BHS.



Ist ein vom ISTG bestimmter BHS ausgefallen und möchte man bis zum nächsten KCC-Lauf nicht warten (max. 15 Minuten), kann man in der Kommandozeile mit Repadmin /KCC die Replikationstopologie manuell neu berechnen lassen und somit den ISTG dazu zwingen, einen neuen BHS zu bestimmen. Die Replikationstopologie kann man auch in der grafischen Oberfläche, in der MMC Active Directory-Standorte und –Dienste neu berechnen und somit einen neuen BHS vom ISTG bestimmen lassen. Dazu muss man mit einem Rechtsklick auf das NTDS Settings Objekt eines bestehenden DCs, im Kontextmenü unter Alle Aufgaben die Option Replikationstopologie überprüfen auswählen. Beide Vorgehensweisen fordern den KCC dazu auf, die Replikationstopologie zu überprüfen und bei etwaigen Veränderungen, diese anzupassen. Fällt dem ISTG bei einem KCC-Lauf auf, dass der BHS eines AD-Standorts nicht mehr existiert, bestimmt er einen anderen DC (falls ein weiterer DC an diesem AD-Standort existiert) an diesem AD-Standort zu einem BHS.


In der AD-PowerShell lässt sich manuell ein DC ebenfalls als einen bevorzugten BHS konfigurieren.
Der Befehl für das Bestimmen eines BHS für das IP-Protokoll lautet:

Set-ADObject -Identity „CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne“ -Add @{ bridgeheadTransportList=”CN=IP,CN=Inter-Site Transports,CN=Sites,CN=Configuration,DC=Root-Domäne“ }


Wird ein DC manuell, für ein oder beide Replikationstransportprotokolle zu einem bevorzugten BHS bestimmt, passiert im Hintergrund folgendes:

  • Im mehrwertigen Forward-Link Attribut bridgeheadTransportList, das sich in den Eigenschaften des DC-Objekts befindet, wird der Distinguished Name (DN) des entsprechenden Replikationstransportprotokolls eingetragen. Also z.B. CN=IP,CN=Inter-Site Transports,CN=Sites,CN=Configuation,DC=Root-Domäne.

  • Auf der gegenüberliegenden Seite wird im mehrwertigen Back-Link Attribut bridgeheadServerListBL, das sich in den Eigenschaften des Replikationstransportprotokoll-Containers (in der MMC dssite.msc unter Sites – Inter-Site Transports - IP/SMTP) befindet, der DN des bestimmten BHS eingetragen. Beispielsweise: CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne.


Wird ein BHS vom ISTG bestimmt, enthalten die Attribute keinen Wert!

Bei jedem Durchlauf des ISTG überprüft dieser das Attribut bridgeheadTransportList. Ist in dem Attribut der DN eines Replikationstransportprotokolls eingetragen, wird dieser DC vom KCC als der bevorzugte BHS für das eingetragene Replikationstransportprotokoll verwendet.

Im Übrigen kann man sich alle aktuellen BHS in der Kommandozeile, mit dem Schweizer Messer Werkzeug für die AD-Replikation REPADMIN folgendermaßen anzeigen lassen: Repadmin /bridgeheads

 


Die Auswahl und die Lastverteilung des BHS


Windows 2000

Unter Windows 2000 kann es nur einen einzigen BHS pro AD-Standort geben! Die Auswahl des BHS ändert sich unter Windows 2000 nur, wenn der bisher ausgewählte BHS nicht mehr verfügbar ist. Das Problem mit dem BHS unter Windows 2000 ist, dass der BHS in der Zentrale (Hub) schnell zu einem Engpass werden kann, wenn die AD Standorttopologie nach der Hub-and-Spoke Topologie aufgebaut wurde und viele Außenstellen (Spokes) existieren. Denn alle BHS aus allen Außenstellen führen die standortübergreifende AD-Replikation stets nur mit dem einen BHS in der Zentrale durch. Kommen weitere DCs in der Zentrale hinzu, werden diese von den BHS in den Außenstellen nicht berücksichtigt! Es existiert also weder eine Skalierung, noch eine Lastverteilung!

 

Windows Server 2003

Ab Windows Server 2003 wurde das Problem mit dem einzelnen BHS pro AD-Standort behoben. Von nun an kann jeder DC an einem AD-Standort zeitgleich ein BHS sein. Es können also mehrere BHS pro AD-Standort zeitgleich existieren. Wurden mehrere DCs an einem AD-Standort manuell als BHS bestimmt, beschränken sich die möglichen BHS eines AD-Standorts auf diese DCs. Somit wurde eigentlich in Bezug auf die Skalierbarkeit sowie Lastverteilung Rechnung getragen. Man muss lediglich beim manuellen bestimmen von BHS Vorsicht walten lassen. Denn BHS werden pro Verzeichnispartition und pro Replikationstransportprotokoll bestimmt. Wird beispielsweise an einem AD-Standort kein BHS für die Schemapartition bestimmt, wird diese Verzeichnispartition (auf Englisch Naming Context, kurz NC) zu diesem AD-Standort niemals repliziert.

Diese neue Funktion der Lastverteilung hat jedoch einen gravierenden Nachteil. Denn haben sich in einer Hub-and-Spoke Topologie die BHS in den Außenstellen die Replikationstopologie mit einem BHS aus der Zentrale aufgebaut, überprüfen die BHS in den Außenstellen die Replikationstopologie nicht erneut, wenn weitere BHS Kandidaten in Form von zusätzlichen DCs in der Zentrale installiert werden. Sogar wenn mehrere DCs in der Zentrale manuell als bevorzugte BHS bestimmt werden, führen die BHS in den Außenstellen die AD-Replikation weiterhin mit dem bereits ausgewählten BHS in der Zentrale durch. Die neu hinzugefügten DCs in der Zentrale werden von den BHS in den Außenstellen einfach ignoriert.

Microsoft hat dieses Fehlverhalten erkannt. Leider erst, als Windows Server 2003 RTM wurde. Somit blieb keine Zeit mehr das im Quellcode des Serverbetriebssystems zu überarbeiten. Stattdessen wurde ein Tool entwickelt, um dieses Verhalten zu korrigieren. Das Tool heist Active Directory Load Balancer, kurz adlb.exe, und befindet sich im “Windows Server 2003 Active Directory Branch Office Guide”. Führt man das Tool jedes Mal aus, nachdem ein neuer DC in der Zentrale (Hub) hinzugefügt wurde, wird unter Berücksichtigung der neuen DCs die Replikationstopologie neu berechnet und möglicherweise weitere BHS an einem AD-Standort bestimmt. Bedauerlich dabei ist, dass man das Tool jedes Mal manuell ausführen muss, nach dem ein neuer DC hinzugefügt wurde.

Das Tool selbst und weitere Informationen dazu gibt es hier:

Windows Server 2003 Active Directory Branch Office Guide

 

Windows Server 2008

Unter Windows Server 2008 wurde die automatische Auswahl eines BHS verbessert, leider wieder einmal mehr halbherzig. Denn unter Windows Server 2008 nutzen lediglich Read-Only Domänencontroller (RODCs) die automatische Auswahl eines BHS. Beschreibbare DCs (RWDC) dagegen verhalten sich weiterhin wie unter Windows Server 2003, was die automatische Auswahl eines BHS anbetrifft. Das bedeutet also, dass ein RODC aus einer Außenstelle die neu hinzugefügten DCs in der Zentrale als BHS berücksichtigt, ein beschreibbarer Windows Server 2008 DC jedoch nicht. Für RODCs besteht nicht die Notwendigkeit, das zusätzliche Werkzeug adlb.exe auszuführen, denn die automatische BHS Lastverteilung ist bei RODCs standardmäßig aktiviert. Doch auf beschreibbaren Windows Server 2008 DCs muss in Bezug auf die BHS Lastverteilung, weiterhin das Tool adlb.exe ausgeführt werden, damit neue DCs als mögliche BHS berücksichtigt werden.

Möchte man die automatische Lastverteilung auf RODCs deaktivieren, zum Beispiel weil sich eine Firewall zwischen dem RODC und einem beschreibbaren DC befindet und der RODC stets die AD Aktualisierungen immer nur von einem bestimmten beschreibbaren DC erhalten soll, so kann man das mit diesem Registryeintrag, der standardmäßig nicht existiert:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
Random BH Loadbalancing Allowed
1 = Aktiviert (standardmäßig)
0 = Deaktiviert


Review Bridgehead Server Load-Balancing Improvements with Windows Server 2008 RODCs

 

Die verbesserte Lastverteilung der BHS unter Windows Server 2008 R2

Ab Windows Server 2008 R2 wurde die BHS Lastverteilung zusätzlich zu RODCs, für beschreibbare DCs eingeführt. RODCs und vor allem beschreibbare DCs verteilen nun Replikationsverbindungen und die standortübergreifende Replikationslast gleichmäßig zwischen allen BHS, die an einem AD-Standort zur Verfügung stehen. Kommen zum Beispiel in einer Hub-and-Spoke Topologie weitere DCs in der Zentrale (Hub) und somit potentiell neue BHS dazu, berechnen Read-Only- und beschreibbare DCs aus den Außenstellen die Replikationstopologie neu. Die Replikationslast und Replikationsverbindungen werden dann stets gleichmäßig über alle DCs in der Zentrale verteilt.

Insbesondere in größeren AD Umgebungen profitiert man von dieser Verbesserung und deshalb sollten bei einer Domänenaktualisierung auf mindestens Windows Server 2008 R2, stets die DCs in der Zentrale als erste aktualisiert werden, um von der BHS Lastverteilung zu profitieren.


Es gibt aber bei dem verbesserten Auswahlverfahren eines BHS unter Windows Server 2008 R2 folgende Einschränkungen:

  • Die BHS Lastverteilung funktioniert erst, wenn sich DCs mindestens in zwei AD-Standorten (logischerweise) befinden.

  • Existiert eine „Full-Mesh“ AD-Standorttopologie (jeder AD-Standort repliziert mit jedem anderen), mit denselben Kosten in allen Standortverknüpfungen, kann keine Lastverteilung durchgeführt werden. Die BHS Lastverteilung findet immer zwischen zwei AD-Standorten statt.

  • Wenn der KCC zum gleichen Zeitpunkt simultan auf allen BHS in den Außenstellen läuft, wird in allen eingehenden Replikationsverbindungen derselbe BHS aus der Zentrale verwendet. Erst wenn der KCC auf den BHS zwischen den Außenstellen, mindestens eine Sekunde versetzt läuft, findet die BHS Lastverteilung statt!

 

Weitere Informationen:
AD-PowerShell Befehle
Die Active Directory Verbindungsobjekte
Bridgehead Server Selection
How Active Directory Replication Topology Works
Use ADLB from the Windows Server 2003 Branch Office Guide to Rebalance Connections Between Writeable Domain Controllers in the Hub
The Role of the Inter-Site Topology Generator in Active Directory Replication
Description of Bridgehead Servers in Windows 2000

Sunday, December 19, 2010 2:10:39 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Replikation  | 
 Sunday, December 05, 2010

Möchte man im Active Directory Informationen über einen Dienst der innerhalb einer Domäne zur Verfügung stehen soll veröffentlichen, so benötigt man ein Service Connection Point (SCP) Objekt. Ein SCP wird bei der Installation von vielen Applikation automatisch, ohne das Zutun des Administrators erstellt. Die SCPs gehören zur Klasse serviceConnectionPoint, die wiederum von der Klasse connectionPoint abgeleitet ist.

Beispielsweise wird bei der Installation von Remotedesktoplizenzierung, Remote-Installation-Services, Hyper-V, Microsoft basierte virtuelle Maschinen, MS Virtual Machine Manager, der Autodiscover-Funktion ab Exchange 2007 etc. ein SCP im AD erstellt. Diese und viele anderen Dienste veröffentlichen ihr Dasein in der Domäne, durch das Erstellen von SCPs. ADAM / AD LDS stellt dabei keine Ausnahme dar. Client-Anwendungen wiederum verwenden SCPs, um den entsprechenden Dienst in der Domäne zu finden und um sich mit diesem zu verbinden.

Aktiviert man in der MMC Active Directory-Benutzer und -Computer (dsa.msc) unter Ansicht die Option Benutzer, Kontakte, Gruppen und Computer als Container, so kommen einige der SCPs unterhalb der Serverobjekte zum Vorschein.


Möchte man sich den Autodiscover SCP von Exchange in der grafischen Oberfläche anzeigen lassen, so kann man den SCP in der MMC Active Directory-Standorte und -Dienste (dssite.msc) zum Vorschein bringen. Dazu markiert man zuerst in der MMC dssite.msc mit einem Linksklick den Eintrag Active Directory-Standorte und -Dienste [FQDN des DCs], ruft mit einem Rechtklick das Kontextmenü auf und aktiviert unter Ansicht die Option Dienstknoten anzeigen. Danach navigiert man zum folgenden Container:

Services\Microsoft Exchange\<Exchange Organisation>\Administrative Groups\Exchange Administrative Group (FYDIBOHF23SPDLT)\Servers\<Exchange Server>\Protocols\Autodiscover\

Im Container Autodiscover findet man dann den SCP <Exchange Server>.

In ADSIEdit oder jedem anderen LDAP-Browser findet man den Autodiscover SCP von Exchange in der Konfigurationspartition im folgenden LDAP-Pfad:

CN=<Exchange Server>,CN=Autodiscover,CN=Protocols,CN=<Exchange Server>,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=<Exchange Organisation>,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=Root-Domäne


 

Die SCPs mit der AD-PowerShell abfragen

Welche SCPs innerhalb einer Domäne von welchen Objekten im AD veröffentlicht wurden, erfährt man mit diesem AD-Powershellbefehl:

Get-ADObject -LDAPFilter "(objectClass=serviceConnectionPoint)" | Select distinguishedName | FT -A –Wrap

In der Ausgabe erhält man den Distinguished Name (DN) aller SCPs die in der Domäne existieren. Aus dem DN lässt sich auch ableiten, welches Objekt den SCP erstellt hat.


Welche SCPs in der Konfigurationspartition existieren (bspw. Autodiscover von Exchange), kann man sich folgendermaßen anzeigen lassen:

Get-ADObject -LDAPFilter "(objectClass=serviceConnectionPoint)" -Searchbase "CN=Configuration,DC=Root-Domäne" | Select distinguishedName | FT -A -Wrap




Bestimmte SCPs mit der AD-PowerShell abfragen

Man kann natürlich auch nur bestimmte SCPs abfragen. Möchte man sich beispielsweise alle Hyper-V Hosts in der Domäne anzeigen lassen, so kann man dies mit diesem AD-PowerShellbefehl folgendermaßen durchführen:

Get-ADObject -LDAPFilter "(&(objectClass=serviceConnectionPoint)(CN=Microsoft Hyper-V))" | Select distinguishedName | FT -A -Wrap

 

Alle Microsoft basierte virtuelle Maschinen innerhalb einer Domäne, lassen sich mit diesem AD-PowerShellbefehl wie folgt Anzeigen:

Get-ADObject -LDAPFilter "(&(objectClass=serviceConnectionPoint)(CN=Windows Virtual Machine))" | Select distinguishedName | FT -A -Wrap

 

Den Autodiscover SCP von Exchange kann man sich wie folgt anzeigen lassen:

Get-ADObject -LDAPFilter "(objectClass=serviceConnectionPoint)" -Searchbase "CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=Root-Domäne" | Select distinguishedName | FT -A -Wrap

 

Den Server auf dem die Remotedesktoplizenzierung installiert ist, kann man sich mit diesem AD-PowerShellbefehl anzeigen lassen:

Get-ADObject -LDAPFilter "(&(objectClass=serviceConnectionPoint)(CN=TermServLicensing))" | Select distinguishedName | FT -A -Wrap


 


Die SCPs mit dem Kommandozeilentool dsquery abfragen

Alle SCPs innerhalb der Gesamtstruktur (unter anderem Autodiscover von Exchange) lassen sich mit dsquery wie folgt Anzeigen:

dsquery * Forestroot -Filter (objectClass=serviceConnectionPoint)


Alle SCPs innerhalb der Domäne lassen sich mit dsquery wie folgt Anzeigen:

dsquery * Domainroot -Filter (objectClass=serviceConnectionPoint)


 


Bestimmte SCPs mit dsquery abfragen

Alle Hyper-V Hosts innerhalb einer Domäne lassen sich mit dem folgenden dsquery Befehl Anzeigen:

dsquery * Domainroot –Filter "(&(objectClass=serviceConnectionPoint)(CN=Microsoft Hyper-V))"

 

Alle Microsoft basierte virtuelle Maschinen innerhalb einer Domäne werden mit dsquery wie folgt angezeigt:

dsquery * Domainroot –Filter "(&(objectClass=serviceConnectionPoint)(CN=Windows Virtual Machine))"

 

Mit dsquery lässt sich der Server auf dem die Remotedesktoplizenzierung installiert ist, folgendermaßen Anzeigen:

dsquery * Domainroot –Filter "(&(objectClass=serviceConnectionPoint)(CN=TermServLicensing))"

 

Ersetzt man in den dsquery Befehlen das Domainroot durch Forestroot, wird die Abfrage in der Gesamtstruktur durchgeführt.


 

Weitere Informationen:
Creating a Service Connection Point
Where to Create a Service Connection Point
Publishing with Service Connection Points

Sunday, December 05, 2010 6:12:42 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Powershell | Erweiterte Abfragen  | 
 Sunday, November 14, 2010

Der Infrastrukturmaster ist dafür verantwortlich, die Integrität der Objektreferenzen zwischen domänenübergreifenden Objekten innerhalb einer Gesamtstruktur aktuell zu halten. Beispielsweise bei domänenübergreifenden Gruppenmitgliedschaften.

Fügt man in einem Single-Domain Forest ein Sicherheitsprinzipal, wie es ein Benutzer, eine Gruppe oder ein Computer darstellt, zu einer Gruppe hinzu, wird der Distinguished Name (DN) des Sicherheitsprinzipals ins member Attribut (Forward-Link) der Gruppe hinzugefügt. Das AD erstellt im Gegenzug ohne ein zusätzliches Objekt einen Back-Link (das memberOf Attribut im Sicherheitsprinzipal) und referenziert damit das Sicherheitsprinzipal, das zur Gruppe hinzugefügt wurde. Benennt man ein Sicherheitsprinzipal um, verschiebt oder löscht es, wird automatisch das member Attribut der Gruppe aktualisiert. Da der Infrastrukturmaster seine Aufgabe erst in einem Multi-Domain Forest wahrnimmt, befindet er sich in einem Single-Domain Forest in einem inaktiven Zustand, da es für ihn keine Arbeit gibt.

Möchte man aber innerhalb eines Multi-Domain Forest beispielsweise den BenutzerA aus der DomäneA zur GruppeB aus der DomäneB hinzufügen, so hat das AD ein Problem. Denn das AD kann keinen Back-Link zu einem Objekt erstellen, das sich in einer anderen Domäne und somit in einer anderen Domänenpartition befindet. Das AD löst dieses Problem durch das Erstellen eines Phantomobjekts. Mit Phantomobjekten (nicht zu verwechseln mit Tombstones, Lingering Objects oder Foreign Security Principals) ist es möglich, Objekte in anderen Domänen innerhalb der Gesamtstruktur zu referenzieren. Innerhalb der AD-Datenbank wird eine Referenz auf das Objekt als ein Zeiger auf das Phantomobjekt repräsentiert. Phantomobjekte werden also erst dann erstellt, wenn in der Gesamtstruktur mehr als eine Domäne existiert und zwischen zwei Objekten, die sich in verschiedenen Domänen befinden, eine Verknüpfung besteht!

Phantomobjekte werden aber nur vom Infrastrukturmaster erstellt. Deshalb ist es der Infrastrukturmaster aus der DomäneB, der ein Phantomobjekt für BenutzerA erstellt. Das Gruppenobjekt „GruppeB“ verweist mit dem Phantomobjekt auf das Benutzerobjekt „BenutzerA“. Dabei enthält das Phantomobjekt eine minimale Menge an Informationen, damit ein DC das ursprüngliche Objekt (BenutzerA) an seinem ursprünglichen Ort referenzieren kann. Jedes Phantomobjekt in der AD-Datenbank enthält vom referenzierten Objekt die folgenden Informationen: objectGUID, objectSID (für Verweise auf Sicherheitsprinzipale) und den DN des Objekts.

Der Infrastrukturmaster ist auch für die Verwaltung eines Phantomobjekts verantwortlich. Wenn das Sicherheitsprinzipal (BenutzerA), auf das sich ein Phantomobjekt bezieht, umbenannt, verschoben oder gelöscht wird, aktualisiert der Infrastrukturmaster das Phantomobjekt. Dazu vergleicht der Infrastrukturmaster in regelmäßigen Abständen die Phantomobjekte mit den Informationen vom globalen Katalog (GC). Stellt der Infrastrukturmaster dabei eine Abweichung fest, aktualisiert er das Phantomobjekt. Die Aktualisierung repliziert er dann zu seinen Replikationspartnern innerhalb der Domäne, die ebenfalls eine Kopie des Phantoms besitzen. Ohne diese Vorgehensweise würden die eigentlichen Änderungen an den referenzierten Objekten (z.B. BenutzerA wird umbenannt) nicht an das gegenüberliegende Objekt (GruppeB) übertragen werden.

Da der globale Katalog regelmäßig Aktualisierungen für alle Objekte in der Gesamtstruktur erhält, sind die Daten auf dem GC stets auf dem aktuellen Stand. Dadurch das ein GC bereits über ein Teilreplikat aller Objekte in der Gesamtstruktur besitzt, speichert er auch keine Phantomobjekte. Denn er kennt bereits jedes Objekt aus allen Domänen innerhalb der Gesamtstruktur und somit existieren keine Verweise auf Objekte, die ein GC nicht kennt. Daher darf der Infrastrukturmaster in einem Multi-Domain Forest nicht einem GC zugewiesen werden, denn er würde keine Unterschiede erkennen. Der Infrastrukturmaster leistet seine Arbeit innerhalb seiner Domäne ausschließlich an DCs, die kein GC sind.

Wird allerdings in einem Multi-Domain Forest auf jedem DC in der Domäne, in der auf dem Infrastrukturmaster der GC aktiviert wurde ebenfalls der GC aktiviert, werden auf keinem der DCs dieser Domäne jemals Phantomobjekte erstellt. Daher erübrigt sich das Aktualisieren der Phantomobjekte. Denn alle DCs dieser Domäne kennen bereits durch das Aktivieren des GC alle Objekte in der Gesamtstruktur und somit hat der Infrastrukturmaster nichts zu tun. In solch einem Fall wird der Infrastrukturmaster ebenfalls in einen inaktiven Zustand versetzt.

Die FSMO-Rollen verschieben


Übrigens wird das Entfernen eines Phantomobjekts nicht vom Infrastrukturmaster, sondern vom Garbage Collection Prozess durchgeführt.

Weitere Details zu Phantomobjekten liefert der folgende Artikel:

Phantome im Active Directory

 


Wenn der AD-Papierkorb in der Gesamtstruktur aktiviert ist

Ist allerdings der AD-Papierkorb aktiviert, der sich erst ab dem Gesamtstrukturfunktionsmodus „Windows Server 2008 R2“ aktivieren lässt, ist die Funktion des Infrastrukturmasters nicht mehr länger an einen einzelnen DC gebunden! Die Aufgabe des Infrastrukturmasters ist jetzt auf alle DCs in der Gesamtstruktur verteilt. Jeder DC in einem Multi-Domain Forest ist für die Aktualisierung seiner domänenübergreifenden Objektverweise, sprich, für das Phantomobjekt das sich in seiner lokalen AD-Datenbank befindet, verantwortlich. In dem Fall, dass das referenzierte Sicherheitsprinzipal umbenannt, verschoben oder gelöscht wird, aktualisiert jeder DC sein Phantomobjekt.

Wenn also der AD-Papierkorb aktiviert ist, hat der Infrastrukturmaster keine Aufgaben mehr und es ist irrelevant, welcher DC die FSMO-Rolle des Infrastrukturmaster innehat!

Der Active Directory-Papierkorb im Windows Server 2008 R2


 

Weitere Informationen:
Verknüpfte Attribute
Die verknüpften Attribute abfragen
Lingering Objects (veraltete Objekte)
Globaler Katalog (Global Catalog - GC)
Was passiert in der AD-Datenbank wenn ein Objekt gelöscht wird?
Phantoms, tombstones and the infrastructure master
7.1.5.5 Infrastructure FSMO Role

Sunday, November 14, 2010 1:16:52 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Sunday, October 31, 2010

Verknüpfte Attribute (linked attributes) sind Verknüpfungspaare, die aus einem Forward-Link und einem Back-Link Attribut bestehen. Ob es sich bei einem Attribut im AD-Schema um ein verknüpftes Attribut handelt, wird von dem linkID Attribut bestimmt, das sich im attributeSchema-Objekt befindet. Das linkID Attribut im Forward-Link enthält immer einen geraden und das linkID Attribut im verknüpften Back-Link enthält stets einen ungeraden Wert, nämlich den Wert „Forward-linkID plus 1“. Der Administrator kann dabei ausschließlich das Forward-Link Attribut bearbeiten, nicht jedoch das Back-Link Attribut! Repliziert werden nur die Forward-Link Attribute, nicht jedoch die Back-Links.

Weitere Details liefert der folgende Artikel:

Verknüpfte Attribute

 


Alle verknüpften Attribute mit der AD-PowerShell abfragen

Alle Forward- und Back-Link Attribute die im AD-Schema existieren, kann man sich mit der AD-PowerShell wie folgt anzeigen lassen:

Get-ADObject -LDAPFilter "(&(objectClass=attributeSchema)(linkID=*))" -Properties lDAPDisplayName,linkID -SearchBase "CN=Schema,CN=Configuration,DC=AD2008R2,DC=Dikmenoglu,DC=DE" -searchScope oneLevel | Select lDAPDisplayName,linkID | Sort-Object linkID | FT -A

 


Alle verknüpften Attribute mit dem Kommandozeilentool dsquery abfragen

Mit dsquery lassen sich alle Forward- und Back-Link Attribute folgendermaßen anzeigen:

dsquery * "CN=Schema,CN=Configuration,DC=AD2008R2,DC=Dikmenoglu,DC=DE" -Scope oneLevel -Filter "(&(objectClass=attributeSchema)(linkID=*))" -attr lDAPDisplayName linkID -Limit 0

 


Alle verknüpften Attribute mit LDP abfragen

Nachdem man sich in LDP mit einem DC verbunden und mit dem AD “gebunden” hat, muss man unter Durchsuchen – Suchen zuerst diesen Filter angeben: (&(objectClass=attributeSchema)(linkID=*)). Es genügt als Suchbereich die Option Eine Ebene zu wählen und im Feld Attribute, die beiden Attribute lDAPDisplayName;linkID anzugeben. Anschließend werden alle verknüpften Attribute angezeigt.


 

 


Die verknüpften Attribute mit einem AD-PowerShell Skript abfragen

Mit dem folgenden AD-PowerShell Skript kann man sich gezielt nur die Forward-Link, Back-Link oder Forward- und Back-Link Attribute anzeigen lassen. Für das Skript ist es zwingend notwendig, dass die AD-PowerShell Cmdlets zur Verfügung stehen. Die AD-PowerShell, die out-of-the-box unter Windows Server 2008 R2 zur Verfügung steht,  lässt sich auch in einer Windows Server 2003 und Windows Server 2008 Umgebung einsetzen. In diesen Umgebungen ist es jedoch erforderlich, das Active Directory Management Gateway Service bereitzustellen.


Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008

 

######################################################
#
# AD-PowerShell Skript zum Anzeigen von Forward-Link, 
# Back-Link oder Forward- und Back-Link Attribute
#
# Von: Yusuf Dikmenoglu 11/2010
#
# http://blog.dikmenoglu.de
#
######################################################


clear

$auswahl = Read-Host "Welche Attribut Art soll angezeigt werden (1...Forward-Link 2...Back-Link 3...Forward- und Back-Link):" 

switch ($auswahl){

      1 {

            Get-ADObject -LDAPFilter "(&(objectClass=attributeSchema)(linkID=*))" -Properties lDAPDisplayName,linkID -SearchBase "CN=Schema,CN=Configuration,DC=Root-Domäne" -searchScope oneLevel | Sort-Object linkID | ForEach-Object {

                  if (!($_.linkID % 2)){

                        Write-Host "Forward-Link: " $_.lDAPDisplayName $_.linkID

                  }

            }

      }


      2 {

            Get-ADObject -LDAPFilter "(&(objectClass=attributeSchema)(linkID=*))" -Properties lDAPDisplayName,linkID -SearchBase "CN=Schema,CN=Configuration,DC=Root-Domäne" -searchScope oneLevel | Sort-Object linkID | ForEach-Object {

                  if ($_.linkID % 2){

                        Write-Host "Back-Link: " $_.lDAPDisplayName $_.linkID

                  }

            }

      }
      

      3 {
      
            Get-ADObject -LDAPFilter "(&(objectClass=attributeSchema)(linkID=*))" -Properties lDAPDisplayName,linkID -SearchBase "CN=Schema,CN=Configuration,DC=Root-Domäne" -searchScope oneLevel | Sort-Object linkID | ForEach-Object {

                 if ($_.linkID % 2){

                        Write-Host "Back-Link: " $_.lDAPDisplayName $_.linkID

      }

      else {

            Write-Host "Forward-Link: " $_.lDAPDisplayName $_.linkID

                  }

            }

      }
      
      
      default{

            Write-Host "Ungültige Eingabe"

      }

}

 

 

In einer Windows Server 2008 R2 AD Umgebung ohne jegliche AD-Erweiterung (wie beispielsweise eigene Schemaerweiterungen, Exchange etc.), existieren folgende 97 verknüpfte Attribute:


member                                                2
memberOf                                              3
manager                                               42
directReports                                         43
owner                                                 44
ownerBL                                               45
siteObject                                            46
siteObjectBL                                          47
nonSecurityMember                                     50
nonSecurityMemberBL                                   51
queryPolicyObject                                     68
queryPolicyBL                                         69
privilegeHolder                                       70
isPrivilegeHolder                                     71
managedBy                                             72
managedObjects                                        73
hasPartialReplicaNCs                                  74
msDS-IsPartialReplicaFor                              75
hasMasterNCs                                          76
masteredBy                                            77
syncMembership                                        78
serverReference                                       94
serverReferenceBL                                     95
bridgeheadTransportList                               98
bridgeheadServerListBL                                99
netbootServer                                         100
netbootSCPBL                                          101
frsComputerReference                                  102
frsComputerReferenceBL                                103
fRSMemberReference                                    104
fRSMemberReferenceBL                                  105
fRSPrimaryMember                                      106
siteLinkList                                          142
siteList                                              144
msCOM-PartitionLink                                   1040
msCOM-PartitionSetLink                                1041
msDS-NC-Replica-Locations                             1044
msFRS-Hub-Member                                      1046
msCOM-UserPartitionSetLink                            1048
msCOM-UserLink                                        1049
msDS-SDReferenceDomain                                2000
msDS-HasInstantiatedNCs                               2002
msDS-NonMembers                                       2014
msDS-NonMembersBL                                     2015
msDS-MembersForAzRole                                 2016
msDS-MembersForAzRoleBL                               2017
msDS-OperationsForAzTask                              2018
msDS-OperationsForAzTaskBL                            2019
msDS-TasksForAzTask                                   2020
msDS-TasksForAzTaskBL                                 2021
msDS-OperationsForAzRole                              2022
msDS-OperationsForAzRoleBL                            2023
msDS-TasksForAzRole                                   2024
msDS-TasksForAzRoleBL                                 2025
msDS-HasDomainNCs                                     2026
msDS-IsDomainFor                                      2027
msSFU30PosixMember                                    2030
msSFU30PosixMemberOf                                  2031
msDS-hasMasterNCs                                     2036
msDs-masteredBy                                       2037
msDS-ObjectReference                                  2038
msDS-ObjectReferenceBL                                2039
msPKIDPAPIMasterKeys                                  2046
msPKIAccountCredentials                               2048
msDFSR-ComputerReference                              2050
msDFSR-ComputerReferenceBL                            2051
msDFSR-MemberReference                                2052
msDFSR-MemberReferenceBL                              2053
msDS-KrbTgtLink                                       2100
msDS-KrbTgtLinkBl                                     2101
msDS-RevealedUsers                                    2102
msDS-RevealedDSAs                                     2103
msDS-hasFullReplicaNCs                                2104
msDS-IsFullReplicaFor                                 2105
msDS-NeverRevealGroup                                 2106
msDS-RevealOnDemandGroup                              2110
msDS-AuthenticatedAtDC                                2112
msDS-AuthenticatedToAccountlist                       2113
msDS-NC-RO-Replica-Locations                          2114
msDS-NC-RO-Replica-Locations-BL                       2115
msDS-PSOAppliesTo                                     2118
msDS-PSOApplied                                       2119
addressBookRoots2                                     2122
globalAddressList2                                    2124
templateRoots2                                        2126
msDS-BridgeHeadServersUsed                            2160
msPKI-CredentialRoamingTokens                         2162
msDS-OIDToGroupLink                                   2164
msDS-OIDToGroupLinkBl                                 2165
msDS-HostServiceAccount                               2166
msDS-HostServiceAccountBL                             2167
msDS-EnabledFeature                                   2168
msDS-EnabledFeatureBL                                 2169
msTSPrimaryDesktop                                    2170
msTSPrimaryDesktopBL                                  2171
msTSSecondaryDesktops                                 2172
msTSSecondaryDesktopBL                                2173

 



In einer Windows Server 2008 R2 und Exchange 2010 SP1 Umgebung, existieren folgende 314 verknüpfte Attribute:


member                                               2
memberOf                                             3
altRecipient                                         12
altRecipientBL                                       13
publicDelegates                                      14
publicDelegatesBL                                    15
homeMDB                                              32
homeMDBBL                                            33
manager                                              42
directReports                                        43
owner                                                44
ownerBL                                              45
siteObject                                           46
siteObjectBL                                         47
nonSecurityMember                                    50
nonSecurityMemberBL                                  51
queryPolicyObject                                    68
queryPolicyBL                                        69
privilegeHolder                                      70
isPrivilegeHolder                                    71
managedBy                                            72
managedObjects                                       73
hasPartialReplicaNCs                                 74
msDS-IsPartialReplicaFor                             75
hasMasterNCs                                         76
masteredBy                                           77
syncMembership                                       78
serverReference                                      94
serverReferenceBL                                    95
bridgeheadTransportList                              98
bridgeheadServerListBL                               99
netbootServer                                        100
netbootSCPBL                                         101
frsComputerReference                                 102
frsComputerReferenceBL                               103
fRSMemberReference                                   104
fRSMemberReferenceBL                                 105
fRSPrimaryMember                                     106
authOrig                                             110
authOrigBL                                           111
dLMemSubmitPerms                                     112
dLMemSubmitPermsBL                                   113
unauthOrig                                           114
unauthOrigBL                                         115
dLMemRejectPerms                                     116
dLMemRejectPermsBL                                   117
responsibleLocalDXA                                  122
assocRemoteDXA                                       123
supportingStack                                      132
supportingStackBL                                    133
siteLinkList                                         142
siteList                                             144
msExchHomeSyncService                                146
msExchChildSyncAgreements                            147
msExchRoutingGroupMembersDN                          1000
msExchHomeRoutingGroupDNBL                           1001
msExchSourceBridgeheadServersDN                      1002
msExchBridgeheadedLocalConnectorsDNBL                1003
msExchTargetBridgeheadServersDN                      1004
msExchBridgeheadedRemoteConnectorsDNBL               1005
msExchCASchemaPolicy                                 1006
msExchSchemaPolicyConsumers                          1007
msExchOwningPFTree                                   1008
msExchOwningPFTreeBL                                 1009
msExchPolicyList                                     1012
msExchPolicyListBL                                   1013
msExchUseOAB                                         1014
msExchUseOABBL                                       1015
msExchAddressListServiceLink                         1016
msExchAddressListServiceBL                           1017
msExchComputerLink                                   1018
msExchExchangeServerLink                             1019
msExchConferenceZone                                 1020
msExchConferenceZoneBL                               1021
msExchMasterService                                  1022
msExchMasterServiceBL                                1023
msExchExportContainersLinked                         1028
msExchExportContainersBL                             1029
msExchResponsibleMTAServer                           1030
msExchResponsibleMTAServerBL                         1031
msExchImportContainerLinked                          1032
msExchAppliesToSmtpVS                                1034
msExchAppliesToSmtpVSBL                              1035
msExchConferenceMailbox                              1036
msExchConferenceMailboxBL                            1037
msExchMCUHostsSites                                  1038
msExchMCUHostsSitesBL                                1039
msCOM-PartitionLink                                  1040
msCOM-PartitionSetLink                               1041
msDS-NC-Replica-Locations                            1044
msFRS-Hub-Member                                     1046
msCOM-UserPartitionSetLink                           1048
msCOM-UserLink                                       1049
msExchHomeRoutingGroup                               1050
msExchRoutingGroupMembersBL                          1051
msExchMobileMailboxPolicyLink                        1058
msExchMobileMailboxPolicyBL                          1059
msExchAvailabilityPerUserAccount                     1060
msExchAvailabilityPerUserAccountBL                   1061
msExchAvailabilityOrgWideAccount                     1062
msExchAvailabilityOrgWideAccountBL                   1063
msExchUMDTMFFallbackAutoAttendantLink                1064
msExchUMDTMFFallbackAutoAttendantBL                  1065
msExchOWATranscodingFileTypes                        1066
msExchOWATranscodingFileTypesBL                      1067
msExchOWAAllowedFileTypes                            1068
msExchOWAAllowedFileTypesBL                          1069
msExchOWAAllowedMimeTypes                            1070
msExchOWAAllowedMimeTypesBL                          1071
msExchOWAForceSaveFileTypes                          1072
msExchOWAForceSaveFileTypesBL                        1073
msExchOWAForceSaveMIMETypes                          1074
msExchOWAForceSaveMIMETypesBL                        1075
msExchOWABlockedFileTypes                            1076
msExchOWABlockedFileTypesBL                          1077
msExchOWABlockedMIMETypes                            1078
msExchOWABlockedMIMETypesBL                          1079
msExchOWARemoteDocumentsAllowedServers               1080
msExchOWARemoteDocumentsAllowedServersBL             1081
msExchOWARemoteDocumentsBlockedServers               1082
msExchOWARemoteDocumentsBlockedServersBL             1083
msExchOWARemoteDocumentsInternalDomainSuffixList     1084
msExchOWARemoteDocumentsInternalDomainSuffixListBL   1085
msExchOWATranscodingMimeTypes                        1086
msExchOWATranscodingMimeTypesBL                      1087
msExchSMTPReceiveDefaultAcceptedDomainLink           1088
msExchSMTPReceiveDefaultAcceptedDomainBL             1089
msExchHABShowInDepartments                           1090
msExchHABShowInDepartmentsBL                         1091
msExchHABRootDepartmentLink                          1092
msExchHABRootDepartmentBL                            1093
msExchHABChildDepartmentsLink                        1094
msExchHABChildDepartmentsBL                          1095
msExchMobileRemoteDocumentsAllowedServers            1096
msExchMobileRemoteDocumentsAllowedServersBL          1097
msExchMobileRemoteDocumentsBlockedServers            1098
msExchMobileRemoteDocumentsBlockedServersBL          1099
msExchMobileRemoteDocumentsInternalDomainSuffixList  1100
msExchMobileRemoteDocumentsInternalDomainSuffixListBL1101
msExchServerSite                                     1102
msExchServerSiteBL                                   1103
msExchHostServerLink                                 1104
msExchHostServerBL                                   1105
msExchMDBAvailabilityGroupLink                       1110
msExchMDBAvailabilityGroupBL                         1111
msExchConfigurationUnitLink                          1112
msExchConfigurationUnitBL                            1113
msExchPolicyTagLink                                  1114
msExchPolicyTagLinkBL                                1115
msExchRoleLink                                       1116
msExchRoleBL                                         1117
msExchUserLink                                       1118
msExchUserBL                                         1119
msExchDomainRestrictionLink                          1120
msExchDomainRestrictionBL                            1121
msExchConfigRestrictionLink                          1122
msExchConfigRestrictionBL                            1123
msExchApprovalApplicationLink                        1124
msExchArbitrationMailboxesBL                         1125
msExchCoManagedByLink                                1126
msExchCoManagedObjectsBL                             1127
msExchModeratedByLink                                1128
msExchModeratedObjectsBL                             1129
msExchOrganizationsGlobalAddressListsLink            1130
msExchOrganizationsGlobalAddressListsBL              1131
msExchOrganizationsAddressBookRootsLink              1132
msExchOrganizationsAddressBookRootsBL                1133
msExchOrganizationsTemplateRootsLink                 1134
msExchOrganizationsTemplateRootsBL                   1135
msExchExchangeRPCServiceArrayLink                    1136
msExchExchangeRPCServiceArrayBL                      1137
msExchParentPlanLink                                 1178
msExchParentPlanBL                                   1179
msExchBypassModerationLink                           1180
msExchBypassModerationBL                             1181
msExchBypassModerationFromDLMembersLink              1182
msExchBypassModerationFromDLMembersBL                1183
msExchFedAcceptedDomainLink                          1184
msExchFedAcceptedDomainBL                            1185
msExchServerAssociationLink                          1186
msExchServerAssociationBL                            1187
msExchSupervisionUserLink                            1188
msExchSupervisionUserBL                              1189
msExchSupervisionDLLink                              1190
msExchSupervisionDLBL                                1191
msExchSupervisionOneOffLink                          1192
msExchSupervisionOneOffBL                            1193
msExchMailboxMoveTargetMDBLink                       1194
msExchMailboxMoveTargetMDBBL                         1195
msExchRBACPolicyLink                                 1196
msExchRBACPolicyBL                                   1197
msExchMailboxMoveSourceMDBLink                       1198
msExchMailboxMoveSourceMDBBL                         1199
msExchArchiveDatabaseLink                            1200
msExchArchiveDatabaseBL                              1201
msExchRMSComputerAccountsLink                        1202
msExchRMSComputerAccountsBL                          1203
msExchDelegateListLink                               1204
msExchDelegateListBL                                 1205
msExchDeviceAccessControlRuleLink                    1206
msExchDeviceAccessControlRuleBL                      1207
msOrg-Leaders                                        1208
msOrg-LeadersBL                                      1209
msExchIntendedMailboxPlanLink                        1210
msExchIntendedMailboxPlanBL                          1211
msExchDefaultPublicMDB                               1212
msExchDefaultPublicMDBBL                             1213
msExchMailboxMoveSourceUserLink                      1214
msExchMailboxMoveSourceUserBL                        1215
msExchMailboxMoveStorageMDBLink                      1216
msExchMailboxMoveStorageMDBBL                        1217
msExchMailboxMoveTargetUserLink                      1218
msExchMailboxMoveTargetUserBL                        1219
msExchSharedConfigLink                               1220
msExchSharedConfigBL                                 1221
msExchMailboxMoveSourceArchiveMDBLink                1222
msExchMailboxMoveSourceArchiveMDBBL                  1223
msExchMailboxMoveTargetArchiveMDBLink                1224
msExchMailboxMoveTargetArchiveMDBBL                  1225
msExchShadowManagerLink                              1226
msExchSupportedSharedConfigLink                      1228
msExchSupportedSharedConfigBL                        1229
msExchDisabledArchiveDatabaseLink                    1230
msDS-SDReferenceDomain                               2000
msDS-HasInstantiatedNCs                              2002
msDS-NonMembers                                      2014
msDS-NonMembersBL                                    2015
msDS-MembersForAzRole                                2016
msDS-MembersForAzRoleBL                              2017
msDS-OperationsForAzTask                             2018
msDS-OperationsForAzTaskBL                           2019
msDS-TasksForAzTask                                  2020
msDS-TasksForAzTaskBL                                2021
msDS-OperationsForAzRole                             2022
msDS-OperationsForAzRoleBL                           2023
msDS-TasksForAzRole                                  2024
msDS-TasksForAzRoleBL                                2025
msDS-HasDomainNCs                                    2026
msDS-IsDomainFor                                     2027
msSFU30PosixMember                                   2030
msSFU30PosixMemberOf                                 2031
msDS-hasMasterNCs                                    2036
msDs-masteredBy                                      2037
msDS-ObjectReference                                 2038
msDS-ObjectReferenceBL                               2039
msPKIDPAPIMasterKeys                                 2046
msPKIAccountCredentials                              2048
msDFSR-ComputerReference                             2050
msDFSR-ComputerReferenceBL                           2051
msDFSR-MemberReference                               2052
msDFSR-MemberReferenceBL                             2053
msExchELCFolderLink                                  2054
msExchELCFolderBL                                    2055
msExchMailboxTemplateLink                            2056
msExchMailboxTemplateBL                              2057
msExchUMTemplateLink                                 2058
msExchUMTemplateBL                                   2059
msExchUMRecipientDialPlanLink                        2060
msExchUMRecipientDialPlanBL                          2061
msExchUMServerDialPlanLink                           2062
msExchUMServerDialPlanBL                             2063
msExchUMIPGatewayDialPlanLink                        2064
msExchUMIPGatewayDialPlanBL                          2065
msExchUMIPGatewayServerLink                          2066
msExchUMIPGatewayServerBL                            2067
msExchUMAutoAttendantDialPlanLink                    2068
msExchUMAutoAttendantDialPlanBL                      2069
msExchUMDialPlanDefaultAutoAttendantLink             2070
msExchUMDialPlanDefaultAutoAttendantBL               2071
msExchUMHuntGroupDialPlanLink                        2072
msExchUMHuntGroupDialPlanBL                          2073
msExchELCExpiryDestinationLink                       2080
msExchAttachmentFilteringExceptionConnectorsLink     2082
msExchJournalingRulesLink                            2084
msExchMailboxOABVirtualDirectoriesLink               2086
msExchMailboxOABVirtualDirectoriesBL                 2087
msExchOABVirtualDirectoriesLink                      2088
msExchOABVirtualDirectoriesBL                        2089
msExchELCAutoCopyAddressLink                         2090
msExchUMMailboxPolicyDialPlanLink                    2092
msExchUMMailboxPolicyDialPlanBL                      2093
msExchSmtpSendReceiveConnectorLink                   2094
msExchTransportSubmissionServerOverrideList          2096
msExchServerAdminDelegationLink                      2098
msExchServerAdminDelegationBL                        2099
msDS-KrbTgtLink                                      2100
msDS-KrbTgtLinkBl                                    2101
msDS-RevealedUsers                                   2102
msDS-RevealedDSAs                                    2103
msDS-hasFullReplicaNCs                               2104
msDS-IsFullReplicaFor                                2105
msDS-NeverRevealGroup                                2106
msDS-RevealOnDemandGroup                             2110
msDS-AuthenticatedAtDC                               2112
msDS-AuthenticatedToAccountlist                      2113
msDS-NC-RO-Replica-Locations                         2114
msDS-NC-RO-Replica-Locations-BL                      2115
msDS-PSOAppliesTo                                    2118
msDS-PSOApplied                                      2119
addressBookRoots2                                    2122
globalAddressList2                                   2124
templateRoots2                                       2126
msDS-BridgeHeadServersUsed                           2160
msPKI-CredentialRoamingTokens                        2162
msDS-OIDToGroupLink                                  2164
msDS-OIDToGroupLinkBl                                2165
msDS-HostServiceAccount                              2166
msDS-HostServiceAccountBL                            2167
msDS-EnabledFeature                                  2168
msDS-EnabledFeatureBL                                2169
msTSPrimaryDesktop                                   2170
msTSPrimaryDesktopBL                                 2171
msTSSecondaryDesktops                                2172
msTSSecondaryDesktopBL                               2173

Sunday, October 31, 2010 12:22:37 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Scripting | Erweiterte Abfragen  | 
 Sunday, October 17, 2010

Gibt ein Benutzer sein Kennwort öfter falsch ein, als es in der Kontosperrungsrichtlinie oder in einem PSO (Password Setting Objects, ab Windows Server 2008) konfiguriert ist, wird sein Benutzerkonto gesperrt. Einige Administratoren verwechseln das mit einem deaktivierten Benutzerkonto. Das Deaktivieren eines Benutzerkontos ist jedoch ein administrativer Vorgang, der manuell mit entsprechenden administrativen Rechten durchgeführt werden muss.

Das Attribut, in dem der Zeitpunkt der Kontosperrung gespeichert ist, lautet lockoutTime.


Das Attribut lockoutTime kann dabei folgende Werte enthalten:

  1. Bei einem Benutzerkonto, das noch nie gesperrt wurde, der Benutzer sich also bisher immer erfolgreich an der Domäne authentisieren konnte, enthält das Attribut lockoutTime als Wert <Nicht festgelegt>. Wie oft der Benutzer ein falsches Kennwort eingeben darf bis sein Benutzerkonto gesperrt wird, kann von der Kontosperrungsrichtlinie, bzw. ab Windows Server 2008 durch ein PSO, vorgegeben werden.

  2. Hat ein Benutzer sein Kennwort häufiger falsch eingegeben, als es in der Kontosperrungsrichtlinie oder in einem PSO definiert ist, wird sein Benutzerkonto gesperrt. Dabei wird in lockoutTime ein Large Integer Wert eingetragen, der den Zeitpunkt der Kontosperrung darstellt.

  3. Wenn ein Benutzerkonto nach den Vorgaben der Kontosperrungsrichtlinie oder durch ein PSO automatisch wieder entsperrt wurde, bleibt in lockoutTime vorerst weiterhin der Zeitpunkt der Kontosperrung als ein Large Integer Wert gespeichert. Das Attribut lockoutTime enthält dann zwar weiterhin einen Zeitwert, aber der Haken Konto ist gesperrt in den Eigenschaften des Benutzerkontos ist nicht mehr gesetzt.

  4. Wenn sich jedoch der Benutzer nach der Kontosperrdauer an der Domäne erfolgreich authentisiert, wird lockoutTime genullt. Als Wert wird in lockoutTime0“ gespeichert. Auch wenn ein gesperrtes Benutzerkonto vom Administrator entsperrt wurde, erhält das Attribut lockoutTime in den Eigenschaften des entsprechenden Benutzerkontos den Wert 0.


Der LDAP-Filter, mit dem man die gesperrten Benutzerkonten beispielsweise mit einer benutzerdefinierten gespeicherten Abfrage in der MMC Active Directory-Benutzer und -Computer ermitteln kann, lautet:

(&(sAMAccountType=805306368)(lockoutTime>=1))


Wenn jedoch in der Kontosperrungsrichtlinie oder in dem zugewiesenen PSO definiert ist, dass ein Benutzer nach einer bestimmten Zeit automatisch entsperrt wird, greift diese Abfrage nach den tatsächlich gesperrten Benutzerkonten nicht! Denn nach der automatischen Entsperrung des Benutzerkontos bleibt der Zeitpunkt der Kontosperrung in lockoutTime, noch bevor sich der Benutzer erfolgreich an der Domäne authentisiert, gespeichert. Dadurch werden mit dem genannten LDAP-Filter auch die mittlerweile automatisch entsperrten Benutzerkonten angezeigt.

Insbesondere, wenn man Besuch vom Conficker Wurm hat, der alle Benutzer im AD sperrt, möchte man zügig die echten gesperrten Benutzer finden und idealerweise alle gleichzeitig entsperren.

Mit dem oben genannten LDAP-Filter funktioniert die Suche nach den tatsächlich gesperrten Benutzerkonten nur, wenn ein möglichst aktueller Zeitwert verwendet wird. Wenn beispielsweise der Conficker Wurm am 10.10.2010 um 08:05 Uhr alle Benutzerkonten im AD sperrt, könnte man als Zeitangabe den 10.10.2010 – 08:00 Uhr verwenden. Der umgerechnete Large Integer Wert lautet 129311640045030000 und demnach würde der LDAP-Filter wie folgt aussehen:

(&(sAMAccountType=805306368)(lockoutTime>=129311640045030000))


Aber die Suche nach den tatsächlich gesperrten und vor allem das Entsperren dieser Benutzerkonten, lässt sich ganz einfach realisieren. Die Lösung ist wieder einmal die AD-PowerShell! Mit diesem State of the Art Werkzeug lässt sich das schnell und einfach mit einem Einzeiler erledigen.

Mit diesem Befehl werden alle tatsächlich gesperrten Benutzer angezeigt:

Search-ADAccount –LockedOut | FT Name


Mit dem folgenden Befehl werden alle tatsächlich gesperrten Benutzer entsperrt:

Search-ADAccount -LockedOut | Unlock-ADAccount


Danach bleibt, bis zur erfolgreichen Authentisierung des entsprechenden Benutzers an der Domäne, der Zeitpunkt der Kontosperrung weiterhin in lockoutTime gespeichert, aber die Benutzerkonten sind entsperrt!


Wer noch eine Windows Server 2003 bzw. Windows Server 2008 Umgebung betreibt und unter anderem von der AD-PowerShell noch nicht sofort profitieren kann, der kann die „AD Management Gateway Services“ installieren und kommt somit ebenfalls in den Genuß der AD-PowerShell.

Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008

 

Weitere Informationen:
Password Setting Objects erstellen und verwalten
Einen Large Integer Wert umrechnen
AD-PowerShell Befehle
Gespeicherte Abfragen
Gespeicherte Abfragen für dsa.msc
Objektdelegierungen einrichten
Der Objektdelegierungsassistent

Sunday, October 17, 2010 12:15:03 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Powershell | Erweiterte Abfragen  | 
 Sunday, October 03, 2010

Ein Verbindungsobjekt (auf Englisch: connection object) ist ein Active Directory-Objekt, das eine direkte logische Replikationsverbindung zwischen zwei Domänencontrollern (DC) darstellt. Bei den Verbindungsobjekten handelt es sich stets um unidirektionale Pull-Replikationsverbindungen. Dabei werden die Verbindungsobjekte automatisch von der Konsistenzprüfung (bekannt als Knowledge Consistency Checker, kurz KCC) erstellt und in der Konfigurationspartition, im folgenden LDAP-Pfad gespeichert:

CN=<Verbindungsobjekt>,CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne

Der KCC, der standardmäßig alle 15 Minuten die Replikationstopologie auf jedem DC neu berechnet, ist ein Active Directory Prozess. Er ist dafür zuständig, dass zum einen die Verbindung zwischen den Replikationspartnern besteht und zum anderen in der Gesamtstruktur eine effiziente sowie fehlertolerante Replikationstopologie entsteht. Dazu erstellt der KCC alle notwendigen Verbindungsobjekte. In der Regel erfordern diese keine Änderungen durch den Administrator. Die Anzahl der Verbindungsobjekte die vom KCC erstellt werden, hängt logischerweise von der Anzahl der DCs ab.

Das Merkmal eines vom KCC erstellten Verbindungsobjekts ist der Name der Replikationsverbindung. Dieser kann in der MMC Active Directory-Standorte und -Dienste (dssite.msc) überprüft werden und lautet <automatisch generiert>.


 


Wenn aber die vom KCC automatisch berechnete Replikationstopologie nicht den Anforderungen genügt, kann der Administrator an den Verbindungsobjekten Änderungen vornehmen. Der Administrator kann ein neues Verbindungsobjekt erstellen oder ein vom KCC erstelltes Verbindungsobjekt bearbeiten. Beides ist jedoch in den meisten Umgebungen nicht notwendig!

 


Das manuelle Erstellen eines neuen Verbindungsobjekts

Verbindungsobjekte können nicht nur vom KCC, sondern auch vom Administrator manuell erstellt werden. Zum Beispiel um die Replikationstopologie des Netzwerks anzupassen, oder um die Anzahl an Hops von einem DC zu einem anderen bestimmten DC zu verringern. Das hat aber einen gewaltigen Nachteil! Denn die Verbindungsobjekte, die vom KCC erstellt wurden, werden auch von diesem verwaltet. Das bedeutet, wenn Verbindungsobjekte durch den KCC erstellt werden, werden sie automatisch durch den KCC entfernt, sobald sich die Replikationstopologie ändert. Somit ist ein manuelles Eingreifen nicht erforderlich! Dahingegen werden die Verbindungsobjekte, die manuell vom Administrator erstellt wurden, nicht vom KCC entfernt, wenn sich die Replikationstopologie einmal ändern sollte. Manuell erstellte Verbindungsobjekte werden nicht vom KCC verwaltet und müssen, bei etwaigen Veränderungen in der Replikationstopologie, immer vom Administrator manuell entfernt werden. Das erfordert die Aufmerksamkeit des Administrators.

Ein vom Administrator erstelltes Verbindungsobjekt erkennt man am Namen. Wenn der Administrator ein neues Verbindungsobjekt erstellt, erhält es eine GUID als Namen, den man anschließend umbenennen kann.


 


Beim Erstellen eines Verbindungsobjekts muss der Quell-DC angegeben werden, von dem die AD-Änderungen repliziert werden sollen. Ist das Verbindungsobjekt erstellt, kann anschließend der Zeitplan bearbeitet werden und bei einem Verbindungsobjekt, das für die standortübergreifende AD-Replikation verwendet wird, kann zusätzlich noch das Transport-Protokoll geändert werden. In der grafischen Oberfläche wird ein Verbindungsobjekt in der MMC dssite.msc erstellt. Dort navigiert man zum AD-Standort, an dem sich der entsprechende DC befindet, wählt den DC aus und ruft mit einem Rechtsklick auf das NTDS Settings Objekt die Option „Neu à Verbindung“ auf.

Der KCC verwendet jedes manuell erstellte Verbindungsobjekt, als wenn er es selbst erstellt hätte. Gegebenenfalls führt der KCC aber eine erneute Konfiguration an den Verbindungsobjekten durch, um eventuell fehlende Verbindungsobjekte auszugleichen.

 


Das Bearbeiten eines vom KCC erstellten Verbindungsobjekts

Ändert der Administrator ein vom KCC erstelltes Verbindungsobjekt, erhält es als Namen ebenfalls eine GUID. Daran lässt sich in der MMC dssite.msc leicht erkennen, welche Verbindungsobjekte nicht vom KCC, sondern ausschließlich vom Administrator verwaltet werden (müssen)! Das Verbindungsobjekt lässt sich jedoch umbenennen, damit es leichter identifiziert werden kann.

In den Eigenschaften eines Verbindungsobjekts kann man den Zeitplan und den Quell-DC ändern. Im Zeitplan kann man definieren, an welchen Wochentagen, zu welcher Uhrzeit und wie oft (man hat die Wahl zwischen Keine, Einmal-, Zweimal- oder Viermal pro Stunde) die Replikation durchgeführt werden soll. Dabei muss man allerdings zwischen der standortinternen (Intra-Site) und standortübergreifenden (Inter-Site) AD-Replikation unterscheiden!

Denn standardmäßig findet die standortinterne AD-Replikation, ab dem Gesamtstrukturfunktionsmodus „Windows Server 2003“, bereits 15 Sekunden nach einer AD-Änderung statt. Bei der standortinternen AD-Replikation dient das Intervall im Verbindungsobjekt lediglich dazu, dass falls eine Änderungsbenachrichtigung durch einen Ziel-DC nicht empfangen bzw. verarbeitet werden sollte (beispielsweise wegen Überlastung), jeder DC im konfigurierten Intervall (standortintern standardmäßig „Einmal pro Stunde“) seine Replikationspartner in jedem Fall anfragt, ob es Änderungen gab. Falls ja, repliziert der Ziel-DC die AD-Änderungen als wenn er eine Änderungsbenachrichtigung erhalten hätte. Das Replikationsintervall im Intra-Site Verbindungsobjekt („Einmal pro Stunde“) wird vom NTDS Site Settings Objekt, genauer vom Attribut schedule das sich in den Eigenschaften des "NTDS Site Settings Objekt" befindet, vererbt.


 


Bei der standortübergreifenden AD-Replikation gilt der Zeitplan, der in der Standortverknüpfung (Site-Link) definiert ist. Dort ist festgelegt, dass standardmäßig alle 180 Minuten die standortübergreifende AD-Replikation stattfindet.

 


Das Intervall aus der Standortverknüpfung wird auf die Verbindungsobjekte, die für die standortübergreifende AD-Replikation verwendet werden, vererbt. Ändert man das Intervall in der Standortverknüpfung, werden automatisch die entsprechenden Verbindungsobjekte aktualisiert! Die Verbindungsobjekte werden aber weiterhin vom KCC verwaltet.



In den Eigenschaften eines Verbindungsobjekts kann man auch im Feld Replizierte Namenskontexte erkennen, welche Verzeichnispartitionen über dieses Verbindungsobjekt repliziert werden.

 


Ein manuell erstelltes oder bearbeitetes Verbindungsobjekt vom KCC verwalten lassen

Wurde ein Verbindungsobjekt manuell erstellt oder ein vom KCC erstelltes Verbindungsobjekt bearbeitet, trägt der Administrator die Verantwortung für dieses Verbindungsobjekt. Doch oft wird in der täglichen Praxis versehentlich eine Änderung an einem Verbindungsobjekt durchgeführt und selten steckt eine absichtlich gewollte administrative Änderung dahinter.

Die Nachteile der vom Administrator erstellten Verbindungsobjekte sind:

  • Das Verbindungsobjekt bleibt weiterhin bestehen, obwohl es nicht mehr benötigt wird.

  • Beim Ändern des Intervalls in der Standortverknüpfung vererbt sich die Aktualisierung nicht automatisch auf ein Verbindungsobjekt, das für die standortübergreifende AD-Replikation verwendet wird.

  • Neue Anwendungsverzeichnispartitionen werden nicht automatisch repliziert.


Deshalb ist es empfehlenswert, wann immer möglich, die Verwaltung der Verbindungsobjekte dem KCC zu überlassen. Er verrichtet seine Arbeit zuverlässig und berechnet bei Veränderungen zeitnah die Replikationstopologie neu und gleicht eventuell fehlende Verbindungsobjekte aus.


Möchte man statt manuell verwalteter automatisch generierte und vom KCC verwaltete Verbindungsobjekte erhalten, so hat man folgende Möglichkeiten:

  • Man löscht das manuell erstellte oder bearbeitete Verbindungsobjekt und wartet maximal 15 Minuten. Denn für den Aufbau der Replikationstopologie ist wie bereits erwähnt der KCC zuständig, der auf jedem DC alle 15 Minuten die Replikationstopologie neu berechnet. Spätestens nach 15 Minuten erstellt der KCC automatisch die notwendigen Verbindungsobjekte.

  • Wer die Replikationsunterbrechung von maximal 15 Minuten nicht in Kauf nehmen kann, muss den KCC in der MMC dssite.msc manuell anstoßen, nach dem das entsprechende Verbindungsobjekt gelöscht wurde. Dazu gilt es mit einem Rechtsklick auf das NTDS Settings Objekt, unterhalb des entsprechenden DC-Objekts, die Option Replikationstopologie überprüfen unter Alle Aufgaben auszuwählen. Dadurch berechnet der KCC die Replikationstopologie sofort und erstellt die fehlenden Verbindungsobjekte.

  • Auch mit dem Allroundwerkzeug für die AD-Replikation, REPADMIN, lässt sich der KCC sofort ausführen. Führt man in der Kommandozeile den Befehl REPADMIN /KCC <DC> aus, berechnet der KCC die Replikationstopologie neu und erstellt die erforderlichen Verbindungsobjekte.

 


Das Attribut options in den Eigenschaften eines Verbindungsobjekts

Doch die Verwaltung der manuell erstellten oder bearbeiteten Verbindungsobjekte lässt sich auch ohne das Löschen von Verbindungsobjekten und ohne eine Replikationsunterbrechung an den KCC im laufenden Betrieb übergeben! Dazu muss das options Attribut, das sich in den Eigenschaften des Verbindungsobjekts befindet, bearbeitet werden. Diese Vorgehensweise bietet sich ebenfalls für dann an, wenn man eine manuell verwaltete Replikationstopologie an den KCC übergeben und somit automatisch generierte Verbindungsobjekte erhalten möchte.

Das Attribut options im Verbindungsobjekt besteht aus einer Bitmaske, wobei die Bedeutung der Einzelnen Flags von Objektklasse zu Objektklasse variiert. Die Klassen, in denen das Attribut options existiert, sind: interSiteTransport, nTDSConnection, nTDSDSA, nTDSSiteSettings und siteLink. Wobei das options Attribut im Verbindungsobjekt wie das Verbindungsobjekt selbst zur Klasse nTDSConnection gehört.

Enthält das Attribut options den Wert 1 (Dezimal), wird das Verbindungsobjekt vom KCC verwaltet. Wird das vom KCC erstellte Verbindungsobjekt durch den Administrator geändert, ändert sich der Wert im Attribut options. Erstellt der Administrator ein Verbindungsobjekt, erhält das Attribut options den Wert 0 (Dezimal).

Das Attribut options im Verbindungsobjekt, besteht aus den folgenden Flags, wobei mehrere gleichzeitig gesetzt werden können:

  • Bit 0 - Dezimal 1 – Hex 0x1 (IS_GENERATED): Das Verbindungsobjekt wird vom KCC verwaltet. Das ist der Wert, der am meisten verwendet wird.

  • Bit 1 - Dezimal 2 – Hex 0x2 (TWOWAY_SYNC): Ist dieses Flag gesetzt, findet eine bidirektionale Replikation zwischen dem Quell- und Ziel-DC über ein und dasselbe Verbindungsobjekt statt, wozu ansonsten zwei Verbindungsobjekte nötig wären. Dieses Flag gibt an, dass der Ziel-DC den Quell-DC nach Abschluss der eingehenden Replikation darüber zu informieren hat, das der Quell-DC in die umgekehrte Richtung replizieren muss. Dieses Feature ist in Dial-up Szenarien interessant, in denen nur einer der beiden DCs eine DFÜ-Verbindung initiieren kann.

  • Bit 2 - Dezimal 4 - Hex 0x4 (OVERRIDE_NOTIFY_DEFAULT): Mit diesem Flag werden die Benachrichtigungen überschrieben und die Replikationsdaten komprimiert.

  • Bit 3 - Dezimal 8 - Hex 0x8 (USE_NOTIFY): Ist dieses Bit gesetzt, wird die Änderungsbenachrichtigung verwendet.

  • Bit 4 - Dezimal 16 - Hex 0x10 (DISABLE_INTERSITE_COMPRESSION): Dieses Flag deaktiviert die Datenkomprimierung bei der standortübergreifende (Inter-Site) AD-Replikation.

  • Bit 5 - Dezimal 32 - Hex 0x20 (USER_OWNED_SCHEDULE): Ist dieses Flag gesetzt, wurde vom Administrator ein benutzerdefinierter Zeitplan konfiguriert.

  • Bit 6 - Dezimal 64 - Hex 0x40 (RODC_TOPOLOGY): Dieses Flag wird für die AD-Replikation zu einem RODC gesetzt. Wenn der KCC das Verbindungsobjekt eines RODCs erstellt, erhält das Attribut options den Dezimalwert 65. Der Wert 65 bedeutet, dass Bit 0 (IS_GENERATED) und Bit 6 (RODC_TOPOLOGY) gesetzt sind.


Options


 

Alle Verbindungsobjekte die vom Administrator verwaltet werden abfragen und vom KCC verwalten lassen

Alle Verbindungsobjekte die nicht vom KCC, sondern vom Administrator verwaltet werden und es sich nicht um ein Verbindungsobjekt eines RODCs handelt, kann man sich mit diesem AD-PowerShellbefehl Anzeigen lassen:

Get-ADObject -LDAPFilter "(&(objectCategory=nTDSConnection)(!(|(options:band:=1)(options:band:=65))))" -Properties Name -Searchbase "CN=Configuration,DC=Root-Domäne" -SearchScope Subtree | Select Name,DistinguishedName | FT -A -Wrap


Sollen alle manuell verwalteten Verbindungsobjekte ab sofort vom KCC verwaltet werden, so kann man das durch diesen AD-PowerShellbefehl erreichen:

Get-ADObject -LDAPFilter "(&(objectCategory=nTDSConnection)(!(|(options:band:=1)(options:band:=65))))" -Properties options -Searchbase "CN=Configuration,DC=Root-Domäne" -SearchScope Subtree | Set-ADObject -Replace @{options=1}

 

Übrigens kann man sich mit dem Befehl Repadmin /showconn <DC>, alle Verbindungsobjekte vom angegebenen DC anzeigen lassen.

 


Weitere Informationen:
Die Vektoren zur Steuerung der AD-Replikation
Die dringende AD-Replikation
Die Inter-Site (standortübergreifende) Änderungsbenachrichtigung aktivieren
Die Linked Value Replikation (LVR)
Zwei wichtige IDs eines DCs: DC GUID und InvocationId
Die unterschiedliche Größe der AD-Datenbank
Domänencontroller vergleichen

Sunday, October 03, 2010 1:31:23 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Replikation  | 
 Sunday, September 19, 2010

Die Active Directory-Replikation stellt sicher, dass der Datentransfer zwischen Verzeichnispartitionen auf unterschiedlichen Domänencontrollern (DCs) ordnungsgemäß durchgeführt wird. Dabei achtet das AD zum einen darauf, dass bei der Replikation keine Endlosschleifen entstehen und zum anderen, die AD-Daten unabsichtlich nicht repliziert werden. Deshalb enthält jede Verzeichnispartition mehrere Replikationsmetadaten, die sich auf die Replikation der jeweiligen Verzeichnispartition beziehen. Anhand der Replikationsmetadaten verwalten die DCs den Datentransfer von Verzeichnisänderungen. Denn neben der Übertragung der eigentlichen Daten, werden vom AD zusätzliche Informationen zu dieser Änderung übertragen. In den zusätzlichen Informationen sind unter anderem die Informationen zu dem DC enthalten, auf dem die ursprüngliche Änderung durchgeführt wurde, das Datum und die Uhrzeit der Änderung.

Da es sich bei der AD-Replikation um einen hochkomplexen Vorgang handelt, benötigen die DCs einen Mechanismus, der sicherstellt, dass zwischen zwei DCs nur die erforderlichen Änderungen repliziert werden. Dazu ist es notwendig, dass die DCs Änderungen, die noch nicht repliziert wurden, ermitteln können und sofern vorhanden, anschließend nur diese erforderlichen Änderungen replizieren. Ohne einen solchen Mechanismus würde jeder DC bei jeder AD-Replikation die komplette AD-Datenbank replizieren. Deshalb verwendet das AD für die Replikationsverwaltung eine Kombination aus der Update Sequence Number (USN), den beiden Vektoren High-Watermark Vector (HWMV) sowie Up-To-Dateness Vector (UTDV) und dem Änderungsstempel, bestehend aus der Versionsnummer (versionID) und dem Zeitstempel.

 


Aktualisierungstypen

Auf einem beschreibbaren DC können zwei Arten von Aktualisierungen an den AD-Informationen durchgeführt werden. Dabei handelt es sich um die ursprüngliche Aktualisierung (originating update) und um die replizierte Aktualisierung (replicated update).

Eine ursprüngliche Aktualisierung (auch bekannt als Ursprungsschreibvorgang) findet auf einem DC stets dann statt, wenn ein AD-Objekt bearbeitet, gelöscht, hinzugefügt oder verschoben wird.

Eine replizierte Aktualisierung findet hingegen dann statt, wenn die auf einem anderen DC durchgeführten AD-Änderungen auf den lokalen DC repliziert werden. Zwischen dem DC, auf dem die Aktualisierung durchgeführt wurde und seinen direkten Replikationspartnern muss es sich dabei nicht unbedingt um eine direkte eins-zu-eins Replikation handeln. Eine einzelne, replizierte Aktualisierung hat möglicherweise ihren Ursprung in einer Reihe von ursprünglichen Aktualisierungen auf demselben Objekt. Diese ursprünglichen Aktualisierungen können durchaus auch auf verschiedenen DCs durchgeführt worden sein. Beispielsweise wird auf DC1 im Benutzerobjekt Yusuf die Beschreibung und zur gleichen Zeit wird im selben Benutzerobjekt auf DC2 die Mailadresse geändert. DC3 erhält nun die Änderungen die im Benutzerobjekt Yusuf vorgenommen wurden separat von DC1 und DC2. Anschließend erhält DC4 von DC3 alle Änderungen durch eine einzige replizierte Aktualisierung.

Es findet also per se für jede beliebige Änderung im AD immer eine ursprüngliche Aktualisierung auf dem DC statt, auf dem die Änderung durchgeführt wurde. Alle anderen DCs erhalten die ursprüngliche Aktualisierung dann über die AD-Replikation aber nur dann, wenn sie ein Replikat der entsprechenden Verzeichnispartition besitzen. Dabei handelt es sich bei jeder ursprünglichen Aktualisierung im AD um eine vollständige Transaktion. Entweder wird der gesamte Ursprungsschreibvorgang in die AD-Datenbank übernommen oder nichts!

 


Die Update Sequence Number (USN)

Für die AD-Replikation ist es elementar zu erkennen, welche Daten sich geändert haben und infolgedessen repliziert werden müssen. Dabei basiert die Erkennung der Daten die repliziert werden müssen, auf der Update Sequence Number (USN), zu Deutsch Aktualisierungssequenznummer. Die USN ist ein 64Bit Wert und wird zum schnellen Auffinden indiziert. Ein Quell-DC verwendet USNs um festzustellen, welche Änderungen bei seinen direkten Replikationspartnern, die von ihm die aktuellsten Änderungen anfordern, bereits eingegangen sind. Der Ziel-DC wiederum verwendet USNs, um zu bestimmen, welche Änderungen er von seinem Replikationspartner benötigt, die er sich dann per Pull-Replikation repliziert. Jedes Attribut in jedem Objekt hat bereits seine eigene USN!

Jeder ursprünglichen und replizierten Aktualisierung wird automatisch eine fortlaufende DC-spezifische USN zugewiesen und diese hat im Vergleich mit anderen DCs, keine Bedeutung. Wenn zum Beispiel bei einem Benutzer die E-Mailadresse (das Attribut mail) auf DC01 geändert wird, erhält die Aktualisierung der Mailadresse auf diesem DC die USN 9530. Nach der Replizierung dieser Änderung, vergibt der direkte Replikationspartner DC02 derselben Mailadresse die USN 43643. Die nächste Änderung auf DC01 würde die USN 9531 erhalten, unabhängig vom geänderten Objekt.

Die USN der einzelnen Attribute eines bestimmten Objekts, auf einem bestimmten DC, kann man sich mit dem Kommandozeilentool REPADMIN wie folgt anzeigen lassen: Repadmin /showobjmeta <DC> "<DN des entsprechenden Objekts>“. Die USN der Attribute, sind in der Repadmin-Ausgabe, in der Spalte Lok.USN zu sehen.



Lässt man sich mit demselben Befehl die USNs der Einzelnen Attribute desselben Objekts von einem anderen DC anzeigen, so erkennt man, dass sich die USNs der Attribute komplett unterscheiden.


 


Beide DCs besitzen zwar erkennbar über komplett verschiedene USNs für dasselbe Objekt, aber das ist in Bezug auf die AD-Replikation einer Änderung Bedeutungslos.


Werden stattdessen während einer Aktualisierung mehrere Attribute eines Objekts gleichzeitig geändert (z.B. die Straße, Postfach, Ort, Bundesland, Postleitzahl und Land eines Benutzers), erhält jedes geänderte Attribut dieselbe USN. Somit wird der gesamten Aktualisierung nur eine einzige USN zugewiesen.


 

Welche drei Möglichkeiten für die Zuweisung einer USN gibt es?

Wird eine Änderung im AD vorgenommen, gibt es drei Möglichkeiten für die Zuweisung einer USN. Die erste wäre, der lokale USN-Wert wird mit dem geänderten Attribut gespeichert. Im geänderten Attribut wird die USN mit dem lokalen USN Wert gekennzeichnet. Führt man diesen REPADMIN-Befehl aus Repadmin /showobjmeta <DC> "<DN des entsprechenden Objekts>“, sieht man den lokalen USN Wert der Einzelnen Attribute in der Spalte Lok.USN.

Als nächstes wird die USN für das indizierte Attribut uSNChanged im geänderten Objekt verwendet. Das system only Attribut uSNChanged, das in jedem Objekt enthalten ist, kennzeichnet die höchste USN für jedes beliebige Attribut des Objekts. Oder anders ausgedrückt, das Attribut uSNChanged enthält die USN für die letzte Änderung an einem Objekt, die auf diesem DC durchgeführt wurde. Dabei wird die lokale USN, zusammen mit dem Attribut uSNChanged sowohl bei einer ursprünglichen Aktualisierung, als auch bei einer replizierten Aktualisierung angewendet. Durch beide Aktualisierungstypen wird die lokale USN und das Attribut uSNChanged eines DCs erhöht! Wenn beispielsweise die Mailadresse (das Attribut mail) eines Benutzers geändert wird, erhält zum einen das Attribut mail, als auch das Attribut uSNChanged denselben USN Wert, z.B. 6700. Wird anschließend die Beschreibung (das Attribut description) im selben Benutzerobjekt, auf demselben DC geändert, erhält die lokale USN des Attributs description als auch uSNChanged im Benutzerobjekt denselben Wert, also 6701. Der Wert in der lokalen USN des Attributs mail bleibt jedoch weiterhin auf 6700 bestehen, da diese USN bei der letzten Änderung dem Attribut mail auf diesem DC zugeordnet wurde.

Wenn man in der MMC Active Directory-Benutzer und -Computer (dsa.msc) unter Ansicht die Option „Erweiterte Features“ aktiviert, findet man anschließend in den Eigenschaften eines Objekts, im Reiter Objekt, unter anderem die aktuelle USN (das Attribut uSNChanged) des Objekts.



 

Und zuletzt wird die USN im originating USN, auf Deutsch im ursprünglichen USN Wert gespeichert, die im Up-To-Dateness Vector (UTDV) verwendet wird. Dieser Wert wird nur bei einer ursprünglichen Aktualisierung festgelegt. Bei einem Ursprungsschreibvorgang auf einem DC, wird die neue USN mit jedem aktualisierten Attribut im lokalen USN Wert und zusätzlich im ursprünglichen USN Wert gespeichert. Im Gegensatz zur lokalen USN und dem Attribut uSNChanged, wird die ursprüngliche USN mit dem Wert des aktualisierten Attributs repliziert. Führt man den Befehl Repadmin /showobjmeta <DC> "<DN des entsprechenden Objekts>“ auf einem deutschen DC aus, findet man die ursprüngliche USN in der Spalte Ur. USN. Wenn zum Beispiel die Straße im Benutzerobjekt Yusuf auf dem DC geändert wird, erhält im Attribut streetAddress die lokale USN, die ursprüngliche USN und das Attribut uSNChanged denselben Wert!



Wird nun die geänderte Straße repliziert, wird neben dem geänderten Attribut
streetAddress auch die ursprüngliche USN repliziert, die im Übrigen auf dem Ziel-DC nicht geändert wird. Auf dem Ziel-DC wird aber die lokale USN und das Attribut uSNChanged bearbeitet, da beide Werte DC-spezifisch sind. Die ursprüngliche USN wird so lange nicht geändert, bis das Attribut erneut aktualisiert wird.


 

Man kann erkennen, dass das Benutzerobjekt Yusuf Dikmenoglu auf dem R2DCON01 erstellt und das Attribut streetAddress am 25.08.2010 um 23:15:46 Uhr auf dem R2DCON02 geändert wurde.



Die höchste USN eines DCs

Jeder DC merkt sich auch in einem eigens dafür vorgesehenen Attribut, welche USN er als letztes einer lokalen AD-Änderung zugewiesen hat. Dabei kann eine lokale AD-Änderung durch eine ursprüngliche und replizierte Aktualisierung stattfinden. Die aktuelle USN eines DCs, sprich die letzte bestätigte bzw. zugewiesene USN des DCs, wird im Attribut highestCommittedUSN gespeichert. Dieses Attribut befindet sich in den Eigenschaften des rootDSE-Objekts, wobei jeder DC sein eigenes rootDSE Objekt besitzt. Mit anderen Worten: Das Attribut highestCommittedUSN enthält die höchste USN auf diesem DC!

Der Wert im Attribut highestCommittedUSN ändert sich bereits, sobald ein DC gestartet wird. Denn es werden Änderungen an der AD-Datenbank durchgeführt, auch ohne dass ein Administrator Änderungen im AD vorgenommen hat. Daher kann es sein, dass sich der Wert im Attribut highestCommittedUSN nach zwei hintereinander durchgeführten Änderungen um mehrere und nicht nur um eine einzige USN unterscheidet.

Mit REPADMIN kann man sich die höchste USN auf einem DC wie folgt Anzeigen lassen:

Repadmin /showattr <DC> "" /atts:highestCommittedUSN


Von allen DCs aus der Domäne kann man sich die Werte mit diesem Befehl anzeigen lassen:

Repadmin /showattr * "" /atts:highestCommittedUSN


Mit der AD-PowerShell kann man sich den Wert aus dem Attribut highestCommittedUSN von einem DC folgendermaßen anzeigen lassen:

Get-ADRootDSE –Server <DC> | Select highestCommittedUSN | FL

Natürlich kann man sich das Attribut highestCommittedUSN ebenfalls mit LDP anzeigen lassen. Dazu genügt es sich in LDP lediglich mit einem DC zu verbinden. Danach erhält man alle Einträge, unter anderem das Attribut highestCommittedUSN, aus dem rootDSE-Objekt von dem DC, mit dem man sich in LDP verbunden hat.


 

Dank des Attributs highestCommittedUSN, kann man sich die letzten durchgeführten Änderungen auf einem DC anzeigen lassen. Möchte man sich die letzten 500 Änderungen an der AD-Datenbank auf einem bestimmten DC anzeigen lassen, so kann man dies mit einem LDIFDE-Export herausfinden. Der LDIFDE-Befehl zum Export lautet wie folgt:

Ldifde /d „DC=<Domäne>,DC=<TLD> /s <DC> /x /r „(uSNChanged>=<Wert>)” /f C:\USNÄnderungen.txt

Nicht so schnell! Vorher muss man natürlich die aktuelle (höchste) USN des DCs in Erfahrung bringen. Daher gilt es zuerst eine Abfrage nach dem Attribut highestCommittedUSN durchzuführen. Mit der AD-PowerShell kann man die aktuelle USN wie folgt in Erfahrung bringen:

Get-ADRootDSE | Select highestCommittedUSN | FL

Enthält das Attribut highestCommittedUSN als Wert 5500, muss man lediglich im Ldifde-Filter „(uSNChanged>=5000)” angeben und schon werden die letzten 500 Änderungen, die in der AD-Datenbank dieses DC durchgeführt wurden, exportiert.

 


Der High-Watermark Vector (HWMV)

Der HWMV (auch bekannt als direct up-to-dateness vector) ist ein Mechanismus, der vom AD bei der Replikation der AD-Informationen verwendet wird, um die Replikation effizient und bandbreitenschonend durchzuführen. Der HWMV dient auch zur Ressourcenschonung, denn es verringert während einer AD-Replikation die CPU-Zeit und die Anzahl an Festplatten I/O eines DCs.

Durch den HWMV können die zwischen den DCs zu replizierenden AD-Informationen bestimmt werden. Dadurch ist es anderen DCs möglich, Änderungen basierend auf einer speziellen USN von einem Replikationspartner anzufordern.

Die Basis für den High-Watermark Vector stellt die USN einer Verzeichnispartition dar. Dabei erhöht sich der HWMV einer Verzeichnispartition auf einem DC, durch beide Aktualisierungstypen.

Der HWMV wird vom Ziel-DC für jede Verzeichnispartition und für jeden seiner direkten Replikationspartner verwaltet. Jeder DC verwaltet für jede Verzeichnispartition die er hält, eine HWMV-Tabelle. In der HWMV-Tabelle ist die höchste replizierte USN (also der HWMV) der entsprechenden Verzeichnispartition, von allen eingehenden direkten Replikationspartnern gespeichert. Mit dem HWMV verfolgt der Ziel-DC in seiner HWMV-Tabelle, welche Änderung, aus welcher Verzeichnispartition, er bereits von einem bestimmten Replikationspartner erhalten hat.

Jeder DC der kein GC ist, verwaltet je eine HWMV-Tabelle für die Schemapartition, Konfigurationspartition, Domänenpartition sowie für die beiden DNS Anwendungsverzeichnispartition (ab Windows Server 2003) „ForestDNSZones“ und „DomainDNSZones“, also insgesamt fünf HWMV-Tabellen. Ein GC in einer Gesamtstruktur mit mehreren Domänen, verwaltet zusätzlich je eine HWMV-Tabelle für jede andere Domänenpartition.

Doch letztlich handelt es sich bei dem HWMV lediglich um den aktuellen Wert im Attribut uSNChanged, den der Ziel-DC von einem bestimmten Replikationspartner erhalten hat! Wird eine Aktualisierung an einem Objekt durchgeführt, erhält automatisch auch das Attribut uSNChanged im geänderten Objekt einen höheren Wert. Der Quell-DC repliziert dann zusätzlich neben der eigentlichen Aktualisierung, das Attribut uSNChanged des zuletzt geänderten Objekts zum Ziel-DC. Der Ziel-DC wiederum, trägt den Wert aus dem mitgesendeten Attribut uSNChanged für seinen Replikationspartner, als den HWMV für die entsprechende Verzeichnispartition in seine HWMV-Tabelle ein. Und obwohl das Attribut uSNChanged mit der Aktualisierung zum Ziel-DC repliziert wurde, erhält das Attribut uSNChanged im selben Objekt auf dem Ziel-DC, nicht denselben Wert den der Quell-DC mitgeschickt hat!

Im HWMV wird neben weiteren Replikationsmetadaten, der Datenbank-GUID (Globally Unique Identifier) und der objectGUID, die beide in der Gesamtstruktur einmalig sind, und nicht der Computername des Remote-DCs gespeichert. Dadurch das sich der objectGUID zu Lebzeiten eines DCs niemals ändert, kommt es auch nicht zu Problemen, wenn sich der Computername eines DCs ändert. Bei dem Datenbank-GUID handelt es sich um das Attribut invocationId und dieser befindet sich so wie der objectGUID in der Konfigurationspartition, in den Eigenschaften des NTDS Settings Objekts eines DCs. Der LDAP-Pfad lautet: CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne.

Zwei wichtige IDs eines DCs: DC GUID und InvocationId

 

Den High-Watermark Vector anzeigen

Führt man den REPAMIN-Befehl Repadmin /showrepl /verbose aus, wird in der Ausgabe die HWMV USN neben dem Eintrag „/OU“ (steht für object update), für jede Verzeichnispartition von jedem Replikationspartner (und nicht der eigene HWMV!) angezeigt. Der Wert der mit der Angabe von „/OU“ angezeigt wird, ist der echte HWMV für die entsprechende Verzeichnispartition des Replikationspartners! Die object update USN ist der tatsächliche HWMV der benötigt wird, um die Attribute bzw. Objekte in der entsprechenden Verzeichnispartition zu bestimmen, die repliziert werden müssen.


Den Fortschritt innerhalb eines Replikationszyklus zeigt die object update USN an (gibt an ob gerade repliziert wird) und der USN-Wert bei „/PU“ (steht für property update), zeigt den letzten erfolgreich durchgeführten(!) Replikationszyklus an. Am Ende eines Replikationszyklus lautet die USN im object update und im property update gleich. Existiert bei /PU kein Wert, bedeutet das, dass die AD-Replikation noch nie erfolgreich durchgeführt wurde, wie es bei der Erstsynchronisation eines neuen DCs der Fall sein kann. Wenn sich die Werte im object update und im property update unterscheiden, bedeutet dies, dass ein Replikationszyklus im Gange ist. Die beiden Werte „/OU“ und „/PU“, die das Repadmin ausliest, stammen vom Attribut repsFrom. Das mehrwertige, optionale (system only) Attribut repsFrom wird nicht zwischen den DCs repliziert (aber in den GC schon) und befindet sich in den Eigenschaften der entsprechenden Verzeichnispartition! In dem Attribut ist von jedem Replikationspartner neben weiteren Replikationsmetadaten der HWMV (nicht der eigene!), gespeichert. Zum Anzeigen der Werte aus repsFrom eignet sich LDP.




Die Replikationsmetadaten eines Objekts anzeigen 

Die Replikationsmetadaten eines Objekts kann man sich mit einer Abfrage nach dem mehrwertigen (multivalue) constructed Attribut msDS-ReplAttributeMetaData anzeigen lassen. Dieses Attribut zeigt die Metadaten für jedes replizierte Attribut im XML Format an. Aus den Metadaten erfährt man unter anderem, auf welchem DC ein Attribut geändert wurde. Mit REPADMIN kann man sich die Replikationsmetadaten eines Objekts folgendermaßen anzeigen lassen:

Repadmin /showattr <DC> "<DN des Objekts>" /atts: msDS-ReplAttributeMetaData

In der AD-PowerShell lautet die Abfrage wie folgt:

Get-ADObject -Server <DC> "<DN des Objekts>" -Properties msDS-ReplAttributeMetaData


 


 

Im Folgenden einfachen Beispiel wird gezeigt, was es mit dem HWMV auf sich hat

1. In einer Domäne existieren zwei DCs: DC01 und DC02. Der aktuelle HWMV der Domänenpartition von DC01 ist 20500 und von DC02 37250. In der HWMV-Tabelle auf DC01 ist der HWMV der Domänenpartition von DC02 gespeichert. Dieser lautet wie bereits genannt: 37250. In der HWMV-Tabelle für die Domänenpartition auf DC02 ist wiederum gespeichert, dass der HWMV der Domänenpartition von DC01 20500 ist.



2. Wird nun auf dem Quell-DC DC02 ein Benutzer erstellt (es wird eine ursprüngliche Aktualisierung in der Domänenpartition durchgeführt), erhöht sich der lokale HWMV der lokalen Domänenpartition von DC02, auf den neuen Wert 37258. Da aber DC01 von DC02 noch nicht benachrichtigt wurde, dass Änderungen vorliegen und demzufolge die AD-Replikation noch nicht stattgefunden hat, ist weiterhin in der HWMV-Tabelle auf DC01 als HWMV Wert für die Domänenpartition auf DC02 37250 gespeichert. Erst wenn die AD-Replikation stattgefunden hat, aktualisiert DC01 seine HWMV-Tabelle.



3. Innerhalb eines AD-Standorts versendet DC02 ab dem Gesamtstrukturfunktionsmodus Windows Server 2003 nach 15 Sekunden eine Änderungsbenachrichtigung (change notification) an DC01. Standortübergreifend wird die Benachrichtigung, dass Änderungen vorliegen, nach dem in der Standortverknüpfung konfigurierten Zeitplan verschickt. Zur Erinnerung: Bei der AD-Replikation findet per se eine Pull-Replikation und keine(!) Push-Replikation statt! Wenn DC01 die Benachrichtigung erhalten hat, dass Änderungen auf DC02 verfügbar sind, initiiert DC01 die AD-Replikation. DC01 sendet neben weiteren Replikationsmetadaten, die detaillierter im folgenden UTDV-Beispiel aufgelistet werden, den HWMV an DC02, der für DC02 in der HWMV-Tabelle auf DC01 gespeichert ist.




4. Nun, da DC02 den HWMV für die Domänenpartition kennt, den DC01 in seiner HWMV-Tabelle für DC02 gespeichert hat, sendet DC02 die Änderungen zwischen den HWMV-Werten 37250 und 37258. Letzten Endes also das Benutzerobjekt. Zeitgleich aktualisiert der Ziel-DC DC01 seinen lokalen HWMV für die Domänenpartition von 20500 auf 20508, sowie den HWMV von DC02 in seiner HWMV-Tabelle auf 37258.


 


Wenn es jetzt keinen anderen Mechanismus als den HWMV gäbe, würde die Änderung die gerade zu DC01 repliziert wurde, wieder zurück zu DC02 repliziert werden. Schließlich hat sich auf DC01 durch die replizierte Aktualisierung der lokale HWMV der Domänenpartition erhöht. Das bedeutet im Umkehrschluss, dass Änderungen auf DC01 vorliegen die angeblich repliziert werden müssen. Damit es zu genau dieser Endlosschleife nicht kommt, gibt es einen weiteren Vektor, nämlich den Up-To-Dateness Vector.

 


Der Up-To-Dateness Vector (UTDV)

So wie beim HWMV, stellt die USN die Basis für den Up-To-Dateness Vector dar. Der Up-To-Dateness Vector ist ein weiterer Mechanismus der ebenfalls dazu dient, die zu replizierenden AD-Informationen zwischen den DCs zu verwalten, damit die AD-Replikation effizient durchgeführt werden kann. Der UTDV verhindert, dass dieselbe Änderung, die der DC erhalten hat, permanent zurück repliziert wird und dadurch eine Endlosschleife entsteht. Deshalb spricht man beim UTDV auch von Propagierungsdämpfung.

Durch den Up-To-Dateness Vector (auf Deutsch Aktualitätsvektor), auch bekannt als Up-To-Date Vector, verfolgt der Ziel-DC die ursprünglichen Aktualisierungen (originating update) in allen Verzeichnispartitionen, die er von beliebigen DCs erhalten hat. Der lokale UTDV eines DCs erhöht sich dabei nur, wenn der DC selbst eine Änderung im AD, also eine ursprüngliche Aktualisierung in der lokalen AD-Datenbank durchführt. Erhält der DC eine replizierte Aktualisierung, erhöht sich lediglich sein lokaler HVMW, aber nicht der lokale UTDV! Den UTDV eines anderen DCs kennt ein DC nur dann, wenn der Quell-DC eine ursprüngliche Aktualisierung in einer Verzeichnispartition die auch auf dem Ziel-DC existiert, durchgeführt hat und die Änderung repliziert wird (was standardmäßig immer der Fall ist).

Genau wie bei den HWMV-Tabellen verwaltet jeder DC zusätzlich je eine UTDV-Tabelle für jede Verzeichnispartition, die ein DC hält. In den entsprechenden UTDV-Tabellen wird jeder beschreibbare DC aufgelistet, der jemals eine ursprüngliche Aktualisierung in einer Verzeichnispartition durchgeführt hat, was in der Praxis auf jeden beschreibbaren DC in fast allen Verzeichnispartitionen zutrifft. In einer UTDV-Tabelle speichert jeder DC die Datenbank-GUIDs (das Attribut invocationId) der Replikationspartner. Des Weiteren werden die Einträge in den entsprechenden UTDV-Tabellen für die Lebensdauer einer Verzeichnispartition verwaltet, unabhängig davon, ob der DC oder die Verzeichnispartition vom DC bereits entfernt wurde.

Jeder DC, der kein GC ist, verwaltet je eine UTDV-Tabelle für die Schemapartition, Konfigurationspartition, Domänenpartition sowie für die beiden DNS Anwendungsverzeichnispartition (ab Windows Server 2003) „ForestDNSZones“ und „DomainDNSZones“, also insgesamt fünf UTDV-Tabellen. Ein GC in einer Gesamtstruktur mit mehreren Domänen verwaltet zusätzlich je eine UTDV-Tabelle für jede andere Domänenpartition.

Für die gesamtstrukturweiten Verzeichnispartitionen Schemapartition, Konfigurationspartition sowie die Anwendungsverzeichnispartition ForestDNSZones verfolgt ein DC in der jeweiligen UTDV-Tabelle den UTDV für alle DCs in der Gesamtstruktur. Im Grunde verfolgen bei der Schemapartition alle DCs einer Gesamtstruktur lediglich den UTDV eines DCs, nämlich den vom Schemamaster. Der Schemamaster ist der Einzige DC, der in der Schemapartition Änderungen durchführen darf. Was die Konfigurationspartition und die DNS Anwendungsverzeichnispartition „ForestDNSZones“ anbetrifft, verfolgt jeder DC den UTDV, jedes DCs in der Gesamtstruktur. Denn jeder DC erstellt Objekte in der Konfigurationspartition (z.B. Verbindungsobjekte) und jeder DC erstellt SRV-Einträge in der Anwendungsverzeichnispartition „ForestDNSZones“, genauer in der Forward Lookup Zone _msdcs.Root-Domäne.de. Für die Domänenpartition und für die DNS Anwendungsverzeichnispartition „DomainDNSZones“, verwaltet jeder DC den UTDV in der entsprechenden UTDV-Tabelle, für jeden anderen DC in der Domäne. Ein GC in einer Gesamtstruktur mit mehreren Domänen, verfolgt zusätzlich die Up-To-Dateness Vektoren für jeden DC aus den anderen Domänenpartitionen.

Genau genommen spiegelt das Attribut highestCommittedUSN aus dem rootDSE-Objekts eines DCs den lokalen UTDV eines DCs wieder. In dem Attribut highestCommittedUSN speichert der DC die letzte bestätigte und somit die höchste USN eines DCs, die einer lokalen AD-Änderung zugewiesen wurde.



Den Up-To-Dateness Vector anzeigen

Die Up-To-Dateness Vektoren, die ein bestimmter DC für eine Verzeichnispartition von seinen direkten und transitiven Replikationspartnern in seiner UTDV-Tabelle gespeichert hat, kann man sich mit dem Kommandozeilenbefehl Repadmin /showutdvec <DC> <DN der Verzeichnispartition> anzeigen lassen. Der Befehl listet auf dem angegebenen DC die eigene höchste USN und die höchste USN seiner direkten sowie transitiven Replikationspartner für die angegebene Verzeichnispartition auf, die zum Zeitpunkt der Abfrage in seiner lokalen UTDV-Tabelle gespeichert sind.

Repadmin /showutdvec


Führt man den Kommandozeilenbefehl Repadmin /showutdvec <DC> <DN der Root-Domäne> auf einem DC in der Root-Domäne aus, werden die UTDV für die Domänenpartition nur von allen DCs der Root-Domäne angezeigt und nicht der GC aus der Subdomäne! Denn wie bereits geschrieben, verfolgt der UTDV nur die ursprüngliche Aktualisierung, die innerhalb einer Verzeichnispartition durchgeführt wurde, und deshalb erscheint bei der Abfrage auf dem DC in der Root-Domäne der GC aus der Subdomäne nicht auf. Ein GC hat nur das Schreibrecht in der Domäne und somit nur in der Domänenpartition, in der er selbst Mitglied ist. Es werden zwar in einem Multi-Domain Forest alle Domänenpartitionen in den GC repliziert, jedoch besitzt der GC in allen anderen Domänenpartitionen nur das Leserecht! Erst wenn man denselben(!) Repadmin-Befehl auf einem DC in der Subdomäne ausführt, wird neben den DCs der Root-Domäne auch der GC der Subdomäne angezeigt.



Das Attribut, in dem die Up-To-Dateness Vektoren der Replikationspartner gespeichert sind

Jeder UTDV ist in dem system only Attribut replUpToDateVector gespeichert, das nicht zwischen den DCs repliziert wird (aber in den GC schon) und sich in den Eigenschaften einer Verzeichnispartition befindet. In diesem Attribut werden die UTDV von allen Replikationspartnern gespeichert, die jemals eine ursprüngliche Aktualisierung in der entsprechenden Verzeichnispartition durchgeführt und repliziert haben. In dem Attribut ist aber nicht der eigene UTDV gespeichert!

Am einfachsten lassen sich die Werte des Attributs, mit LDP anzeigen. Nach dem man sich in LDP zuerst mit einem DC verbunden und anschließend mit dem AD "Gebunden" hat, kann man sich unter Durchsuchen - Suchen die Werte aus dem Attribut replUpToDateVector für die angegebene Verzeichnispartition anzeigen lassen.


 

Möchte man in Erfahrung bringen, welche DCs hinter den Datenbank-GUIDs stecken die einem das LDP anzeigt, so kann man das leicht herausfinden. Dazu sollte man zuerst den Repadmin-Befehl Repadmin /showutdvec <DC> <DN der Verzeichnispartition> ausführen. Bei diesem Befehl werden die Computernamen der DCs angezeigt. Wenn anschließend der gleiche Befehl, mit dem Parameter /nocache ausgeführt wird, werden die Datenbank-GUIDs angezeigt. Anhand der UTDV Werte kann man dann sehen, hinter welchem Computernamen welche Datenbank-GUID steckt.


 


 

Anhand eines einfachen Beispiels, wird die Funktionsweise des UTDV gezeigt

1. In einer Domäne existieren drei DCs: DC01, DC02 und DC03. Der aktuelle HWMV der Domänenpartition von DC01 ist 20508, von DC02 37258 und von DC03 39270. Der aktuelle UTDV von DC01 ist 20508, von DC02 37258 und von DC03 39270. In den HWMV- und den UTDV-Tabellen auf allen DCs, sind jeweils die aktuellen Werte der anderen beiden DCs gespeichert.


 


2. Angenommen ein Administrator ändert auf dem Quell-DC DC01 im Benutzerobjekt Yusuf die Beschreibung. Es findet also eine einzelne ursprüngliche Aktualisierung auf DC01 statt und dieser weist dem Attribut description die lokale und ursprüngliche USN 20509 zu.


 

Der Wert 20509 wird als lokaler HWMV und UTDV für die Domänenpartition und im Attribut highestCommittedUSN auf DC01 gespeichert. Denn das ist zu diesem Zeitpunkt, die letzte bestätigte und höchste USN auf DC01.


3. DC01 versendet nach 15 Sekunden eine Änderungsbenachrichtigung zu DC02 und nach weiteren drei Sekunden zu DC03 und informiert beide DCs, dass Änderungen in der Domänenpartition vorliegen, die repliziert werden müssen.


4. Im Gegenzug senden die Ziel-DCs DC02 sowie DC03, die folgenden Informationen zum Quell-DC DC01:

  • Die Verzeichnispartition, in diesem Fall die Domänenpartition, in der die Änderung durchgeführt wurde.
  • Die maximale Anzahl der angeforderten Objekte.
  • Die maximale Anzahl der angeforderten Werte.
  • Den HWMV für die Domänenpartition vom Quell-DC DC01, den die Ziel-DCs DC02 und DC03 in ihren HWMV-Tabellen für DC01 gespeichert haben. Anhand des mitgesendeten HWMV erkennt der Quell-DC DC01, welche Änderungen die Ziel-DCs bereits besitzen und repliziert nur die aktuellsten Änderungen. Das bedeutet, es werden lediglich die Änderungen mit einer größeren USN, als der mitgesendete HWMV angefordert (in dem Beispiel, alle Änderungen ab der HWMV USN 20508), sofern der UTDV den Vorgang nicht verwirft.
  • Die Ziel-DCs senden ihre gesamte UTDV-Tabelle der entsprechenden Verzeichnispartition zum Quell-DC. Die UTDV-Tabelle enthält einen Eintrag für jeden DC, der ein vollständiges Replikat der Verzeichnispartition hält. Für die Domänenpartition sind es alle DCs der Domäne, für die Konfigurationspartition sind es alle DCs der Gesamtstruktur usw.


5. Der Quell-DC DC01 wiederum, antwortet dann unter anderem mit diesen Informationen:

  • Die DC-GUID (das Attribut objectGUID) von DC01.
  • Die Datenbank-GUID (das Attribut invocationId) von DC01.
  • Eine Reihe von Einträgen, die die Objektaktualisierung betreffen.
  • Der höchste uSNChanged Wert. Diesen Wert trägt der Ziel-DC in seine HWMV-Tabelle, als den aktuellen HWMV Wert für den Quell-DC ein.
  • Den UTDV von DC01


6. Findet nun die eigentliche Pull-Replikation vom Quell DC DC01 zu den Ziel-DCs DC02 und DC03 statt, wird neben dem aktualisierten Attribut description auch die ursprüngliche USN 20509 zu den Ziel-DCs repliziert.


7. Wenn die Ziel-DCs diese Änderung erhalten, aktualisieren sie in ihrer HWMV- und UTDV-Tabelle der Domänenpartition, die Werte für den Quell-DC DC01 auf den neuen Wert 20509. Zusätzlich aktualisieren die Ziel-DCs ihren eigenen HWMV, jedoch nicht ihren eigenen UTDV. Die Änderung wurde schließlich auf dem Quell-DC DC01 durchgeführt. Zur Erinnerung: Der UTDV wird nur bei einer ursprünglichen und nicht bei einer replizierten Aktualisierung erhöht.


 


8. Nach der Replikation liegen auf den Ziel-DCs Änderungen vor, die angeblich repliziert werden müssen. Auf beiden Ziel-DCs hat sich der lokale HWMV erhöht. Der neue HWMV der Domänenpartition von DC02 ist 37259 und von DC03 39271.

Wenn nun DC02 eine Änderungsbenachrichtigung an DC03 sendet und ihn darüber informiert, dass Änderungen vorliegen, sendet im Gegenzug DC03 den HWMV zu DC02, den er für DC02 in seiner HWMV-Tabelle gespeichert hat, also 37258 und seine komplette UTDV-Tabelle. In der UTDV-Tabelle die DC03 zu DC02 sendet, stehen die Werte „DC01-UTDV Domain NC 20509“ und „DC02-UTDV Domain NC 37258“.


9. Anhand des HWMV 37258 den DC03 zu DC02 gesendet hat, geht DC02 davon aus, dass DC03 die aktuelle Änderung noch nicht erhalten hat.

Und an dieser Stelle, kommt der UTDV zum Einsatz! DC02 erkennt nämlich anhand der UTDV-Tabelle (genauer an dem Eintrag DC01-UTDV Domain NC 20509), die DC03 vor der Replikation zu DC02 gesendet hat, das DC03 bereits die Änderung von DC01 erhalten hat. Die Änderung wird also nicht erneut repliziert! Danach aktualisiert DC03 nur den HWMV und UTDV von DC02 in seinen Tabellen, auf den aktuellen Wert 37259.


10. Das gleiche Verfahren wird in umgekehrter Konstellation angewendet, also wenn DC03 die beiden anderen DCs DC01 und DC02 informiert das Änderungen vorliegen oder wenn DC01 von DC02 benachrichtigt wird. Das Einzige was passiert ist, das jeder DC in seiner HWMV- und UTDV-Tabelle, die aktuellen Werte der beiden anderen Replikationspartner einträgt.


 

Der Änderungsstempel

Wenn ein Objekt erstellt wird, erhält jedes einzelne Attribut für das ein Wert vergeben wurde, einen Änderungsstempel. Der Änderungsstempel besteht aus dem Ursprungsserver, dem Zeitstempel und der Versionsnummer. Wird ein Attribut geändert, werden diese drei Komponenten aktualisiert.

Die drei Komponenten bedeuten:

Ursprungsserver: Bei dem Ursprungsserver handelt es sich um den DC, auf dem die ursprüngliche Aktualisierung eines Attributs durchgeführt wurde. Dieser Wert wird mit dem aktualisierten Attribut auf die Replikationspartner repliziert.

Zeitstempel: Bei der Änderung eines Attributs, wird der Zeitpunkt der Durchführung, in Form von Datum und Uhrzeit, mit dem Attribut gespeichert. Dieser Zeitwert wird ebenfalls mit dem aktualisierten Attribut repliziert.

Versionsnummer: An der Versionsnummer lässt sich erkennen, wie oft ein Attribut geändert wurde. Bei der Erstellung eines Objekts, wird jedem Attribut das einen Wert enthält, die Versionsnummer 1 zugewiesen. Alle Attribute die keinen Wert besitzen, erhalten die Versionsnummer 0. Jedes Mal wenn sich der Wert eines Attributs ändert, erhöht sich die Versionsnummer um einen Zähler. Auch dieser Wert wird so wie die anderen beiden Komponenten auf die Replikationspartner repliziert.


Mit Repadmin lassen sich die Komponenten mit diesem Befehl Anzeigen:

Repadmin /showobjmeta <DC> <DN des Objekts>


In der Repadmin-Ausgabe befindet sich der Ursprungsserver in der Spalte Ursprüngl. DSA. Hinter dieser Komponente steckt das Attribut objectGUID eines DCs. Wie zu erkennen, befindet sich der Zeitstempel in der Spalte Ur.Zeit/Datum und die Versionsnummer in der Spalte Ver.

Mittels des Änderungsstempels wird bei einem Replikationskonflikt darüber entschieden, welche Änderung übernommen wird. Wie das AD einen Replikationskonflikt auflöst und welche Konflikte wann entstehen können, beschreibt der folgende Artikel:

Active Directory-Replikationskonflikt

 

Weitere Informationen:
Die Linked Value Replikation (LVR)
Die unterschiedliche Größe der AD-Datenbank
Die konstruierten Attribute abfragen
Domänencontroller vergleichen
Die Active Directory-Attribute hinter den Feldnamen
Troubleshooting replication with repadmin
How the Active Directory Replication Model Works: Active Directory

Sunday, September 19, 2010 5:45:20 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Replikation  | 
 Sunday, August 29, 2010

Ein weit verbreitetes Missverständnis ist, das ein Ereignis, welches die dringende AD-Replikation auslöst, sofort an alle Domänencontroller (DC) repliziert wird. Genau genommen handelt es sich bei einer dringenden AD-Replikation (urgent replication) noch nicht einmal um eine echte sofortige Replikation. In Wirklichkeit wird lediglich die Benachrichtigung, dass Änderungen auf dem Quell-DC vorliegen, an erster Stelle der Replikationswarteschlange hinzugefügt.

Genau wie bei der standortinternen (Intra-Site) Replikation, basiert die dringende AD-Replikation auf Änderungsbenachrichtigungen (change notification). Außer das beim Eintreten eines wichtigen Ereignisses die Benachrichtigung unverzüglich versendet wird, statt 15 Sekunden (bzw. 300 Sekunden unter Windows 2000) abzuwarten. Diese Änderungsbenachrichtigung wird sofort an alle Replikationspartner versendet, noch bevor die in der Replikationswarteschlange anstehenden Änderungsbenachrichtigungen verschickt werden. Jeder DC, der eine dringende Aktualisierung erhält, leitet diese ebenfalls umgehend an seine Replikationspartner weiter. Durch diese Vorgehensweise ist sichergestellt, dass alle DCs am gleichen AD-Standort innerhalb von Sekunden aktualisiert werden.

Durch die dringende AD-Replikation erhalten die Replikationspartner in gewohnter Weise sofort eine Änderungsbenachrichtigung über das RPC over IP Protokoll. Aufgrund des hohen Replikationsaufkommens werden bei der dringenden AD-Replikation standardmäßig die AD-Standortgrenzen nicht überschritten. Das lässt sich jedoch konfigurieren.

 


Ereignisse, die eine dringende AD-Replikation auslösen

Die dringende AD-Replikation wird bei Eintreten bestimmter Ereignisse standardmäßig nur innerhalb eines AD-Standorts durchgeführt. Dabei ist es unabhängig, unter welchem Betriebssystem die DCs betrieben werden. Ist allerdings die standortübergreifende Änderungsbenachrichtigung in der Standortverknüpfung (Site-Link) aktiviert, werden diese Ereignisse auch unverzüglich zwischen den AD-Standorten repliziert.

Siehe dazu:

Die Inter-Site (standortübergreifende) Änderungsbenachrichtigung aktivieren


Zwischen den DCs, die sich innerhalb des gleichen AD-Standorts befinden, wird die dringende AD-Replikation durch folgende Änderungstypen ausgelöst:

  • Benutzerkontosperrung (nachdem ein Benutzer sein Kennwort zu oft falsch eingegeben hat). Die Sperrung eines Benutzerkontos wird über die dringende AD-Replikation in erster Linie zu dem DC, der die FSMO-Rolle des PDC-Emulators innehat, repliziert. Das Entsperren eines Benutzerkontos hingegen löst keine dingende AD-Replikation aus!

  • Bearbeitung der Kontosperrungsrichtlinie. Die Bearbeitung der gleichen Optionen in einem PSO (Password Setting Object) löst hingegen keine dringende AD-Replikation aus! Die Änderung eines PSO wird über die normale standortinterne (Intra-Site) und standortübergreifende (Inter-Site) AD-Replikation durchgeführt.

  • Bearbeitung der domänenweiten Kennwortrichtlinie. Aber das Bearbeiten der Kennwortvorgaben in einem PSO löst ebenfalls keine dringende AD-Replikation aus! Die Änderung der Kennwortvorgaben innerhalb einer PSO wird ebenfalls über die normale standortinterne und standortübergreifende AD-Replikation durchgeführt.

  • Verschiebung der RID-Master FSMO-Rolle auf einen anderen DC.

  • Änderung eines LSA-Schlüssels (Local Security Authority, lokale Sicherheitsautorität). Wenn zum Beispiel das Kennwort des Computerkontos eines DCs oder für eine Vertrauensstellung geändert wird.

 


Die dringende AD-Replikation durch eine Benutzerkontosperrung

Gibt ein Benutzer sein Kennwort häufiger falsch ein, als es in der Kontosperrungsrichtlinie oder im PSO definiert ist, wird sein Benutzerkonto gesperrt. Die Benutzerkontosperrung wird dann über die dringende AD-Replikation zum PDC-Emulator repliziert. Unabhängig davon, an welchem AD-Standort dieser sich befindet.

Anschließend wird ebenfalls über die dringende AD-Replikation die Benutzerkontosperrung zu den folgenden DCs repliziert:

  • Zu allen DCs der gleichen Domäne, die sich am gleichen AD-Standort befinden wie der DC der die FSMO-Rolle des PDC-Emulators innehat.

  • Zu allen DCs der gleichen Domäne, die sich am gleichen AD-Standort befinden wie der DC der die Benutzerkontosperrung durchgeführt hat.

  • Zu allen DCs der gleichen Domäne, die sich an einem AD-Standort befinden zu der die standortübergreifende Änderungsbenachrichtigung (und demnach die dringende AD-Replikation) mit dem AD-Standort aktiviert wurde, in dem sich der PDC-Emulator oder der DC befindet, der die Benutzerkontosperrung durchgeführt hat.


Wenn die Benutzerauthentisierung an einem DC, nicht jedoch am PDC-Emulator fehlschlägt, wird die Authentisierung auf dem PDC-Emulator wiederholt. Aus diesem Grund ist letzten Endes auch der PDC-Emulator derjenige, der das Benutzerkonto nach den Vorgaben der Kontosperrungsrichtlinie zuerst sperrt. Und nicht der DC, der die fehlgeschlagene Benutzerauthentisierung als erster entgegennahm.

 


Die Replikation einer Kennwortänderung

Oftmals wird auch fälschlicherweise angenommen, dass die Kennwortänderung eines Benutzers über die dringende AD-Replikation zu allen anderen DCs repliziert wird. Kennwortänderungen werden anders als die normale AD-Replikation und anders als die dringende AD-Replikation durchgeführt.

Bei der Kennwortänderung eines Domänen-Benutzers oder eines Computerkontos repliziert der DC, der die Kennwortänderung durchgeführt hat, umgehend das neue Kennwort durch den sicheren Kanal zum PDC-Emulator. Das neue Kennwort wird sogar dann zum PDC-Emulator repliziert, wenn dieser an einem anderen AD-Standort steht. Dabei greift der DC auch nicht auf die Bridgeheadserver an den AD-Standort zurück. Der DC, auf dem das Kennwort geändert wurde, nutzt stattdessen eine RPC over IP-Verbindung direkt zum PDC-Emulator, um das Kennwort zu aktualisieren.

Authentisiert sich der Benutzer danach an einem DC (z.B. aus einem anderen AD-Standort) der das neue Kennwort noch nicht kennt, fragt der DC beim PDC-Emulator nach, ob ihm ein neueres Kennwort vorliegt, bevor er dem Benutzer die Anmeldung verweigert. Falls ja, wird der Benutzer vom PDC-Emulator authentisiert und der Benutzer kann sich anmelden. Falls nicht, schlägt die Anmeldung fehl. Der PDC-Emulator hat also bei der Kennwortfrage immer das letzte Wort. Wenn die Kennwortnachfrage beim PDC-Emulator erfolgreich verlief, repliziert der PDC-Emulator das neue Kennwort unverzüglich zu dem DC, von dem die Anfrage kam. Dadurch ist sichergestellt, dass der DC nicht erneut wegen des geänderten Kennworts beim PDC-Emulator nachfrägt.

Die Kennwortaktualisierung wird sofort zum PDC-Emulator repliziert, ohne Rücksicht auf einen eventuell konfigurierten Zeitplan in der Standortverknüpfung. Anschließend wird sie innerhalb des AD-Standorts des PDC-Emulators und innerhalb des AD-Standorts des DC, der die Kennwortänderung durchgeführt hat, durch die standortinterne AD-Replikation zu den anderen DCs repliziert. Alle anderen DCs, die sich an entfernten AD-Standorten befinden, erhalten die Kennwortänderung ganz normal durch die standortübergreifende AD-Replikation.

Ist allerdings der PDC-Emulator nicht erreichbar (beispielsweise wegen Überlastung) oder schlägt die RPC over IP-Verbindung fehl, wird die Kennwortänderung über das normale Replikationsverfahren (standortintern und standortübergreifend) an alle DCs inklusive dem PDC-Emulator repliziert.


Wenn es nicht gewünscht wird, dass die Kennwortaktualisierung eines Benutzers oder eines Computers sofort zum PDC-Emulator an einem anderen AD-Standort repliziert wird, kann man dieses Verhalten unterbinden. Dazu muss folgender neuer Eintrag in die Registry erstellt werden:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters

REG_DWORD
AvoidPdcOnWan
1 = Aktiviert (True)

Dieser Registryeintrag muss auf jedem DC erstellt werden, der eine Kennwortaktualisierung nicht sofort zu einem (an einem entfernten AD-Standort stehenden) PDC-Emulator replizieren soll. Der PDC-Emulator erhält die Kennwortaktualisierung dann ganz normal über den konfigurierten Zeitplan für die standortübergreifende AD-Replikation. Befindet sich aber der PDC-Emulator am gleichen AD-Standort wie der DC, der die Kennwortaktualisierung durchgeführt hat, wird der Registryeintrag ignoriert und das neue Kennwort wird unverzüglich zum PDC-Emulator repliziert.

Komfortabler lässt sich diese Einstellung über die folgende GPO konfigurieren:

Computerkonfiguration\Richtlinien\Administrative Vorlagen\System\Netzwerkanmeldung\Verbindung mit PDC bei Anmeldungsfehler herstellen

Wird diese Richtlinie auf Deaktiviert konfiguriert, repliziert der DC, auf dem die Kennwortänderung stattgefunden hat, das neue Kennwort ebenfalls nicht sofort zum PDC-Emulator an einem anderen AD-Standort. Stattdessen wird das neue Kennwort dann über den konfigurierten Zeitplan für die standortübergreifende AD-Replikation repliziert. Wenn sich jedoch der PDC-Emulator am gleichen AD-Standort befindet wie der die Kennwortänderung durchführende DC, wird das neue Kennwort sofort zum PDC-Emulator repliziert.

Auf der anderen Seite hat man sowohl mit dem Registryeintrag als auch mit der GPO Einfluss darauf, wie sich ein DC Verhalten soll, wenn sich ein Benutzer oder Computer mit einem für den DC fremden Kennwort authentisieren möchte. Setzt man den Registryeintrag oder konfiguriert man die GPO, leitet der DC die Kennwortabfrage nicht an den PDC-Emulator weiter, wenn dieser sich an einem anderen AD-Standort befindet.

Der Registryeintrag oder die GPO kann zum Beispiel dann sinnvoll sein, wenn sich der PDC-Emulator an einem AD-Standort befindet, der mit einer geringen Bandbreite mit anderen Standorten angebunden ist (was in unserer Hemisphäre schon kaum mehr möglich ist). Oder um bei einer Brute Force Attacke nicht zusätzlich den PDC-Emulator und die VPN-Verbindung zu belasten. Dann muss man aber in Kauf nehmen, dass der Benutzer sich über einen längeren Zeitraum nicht an der Domäne anmelden kann.

 

Weitere Informationen:
Password Setting Objects erstellen und verwalten
Der RID-Master und sein RID-Pool
How the Active Directory Replication Model Works
New Password Change and Conflict Resolution Functionality in Windows

Sunday, August 29, 2010 6:33:38 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Replikation  | 
 Sunday, August 15, 2010

Die Mitglieder einer Gruppe werden im mehrwertigen Attribut member des AD-Objekts der Gruppe gespeichert. Bei diesem Attribut handelt es sich um das Forward-Link Attribut und das Pendant dazu ist das mehrwertige Attribut memberOf, das im Benutzerobjekt gespeichert ist und als Back-Link bezeichnet wird.

Mehr über verknüpfte Attribute gibt es hier: Verknüpfte Attribute

 


Möchte man die Mitglieder einer bestimmten Gruppe in eine andere kopieren, so hat man neben skriptbasierten Lösungen folgende Möglichkeiten


In der AD-PowerShell

In einem Einzeiler sieht der AD-PowerShellbefehl zum Kopieren der Mitglieder einer Gruppe in eine andere so aus:

Get-ADGroupMember <Quell-Gruppe> | Select sAMAccountName | ForEach { Add-ADGroupMember <Ziel-Gruppe> -Members $_.sAMAccountName }


Möchte man den Befehl mit Hilfe einer Variablen ausführen, so lautet der Befehl wie folgt:

$Gruppe = Get-ADGroupMember <Quell-Gruppe> | Select sAMAccountName
$Gruppe | ForEach { Add-ADGroupMember <Ziel-Gruppe> -Members $_.sAMAccountName }


Wenn es gewünscht ist einen bestimmten Benutzer zu den gleichen Gruppen hinzufügen in denen bereits ein anderer Benutzer Mitglied ist,
so kann man das ebenfalls mit der AD-PowerShell erledigen.

Den Benutzer Kaan kann man mit dem folgenden AD-PowerShellbefehl zu den gleichen Gruppen hinzufügen, in denen Yusuf Mitglied ist:

Get-ADPrincipalGroupmembership Yusuf | % {Add-ADPrincipalGroupmembership Kaan -MemberOf $_}

 


Mit den ds*-Tools

Mit den ds*-Tools die sich seit Windows Server 2003 on Bord befinden, lassen sich ebenfalls die Mitglieder einer Gruppe in eine andere Gruppe kopieren.
Mit den beiden Tools
dsget sowie dsmod lässt sich das wie folgt bewerkstelligen:

dsget group "DN der Quell-Gruppe" -members | dsmod group "DN der Zielgruppe" -addmbr -c

 


Mit einer gespeicherten Abfrage

Durch eine gespeicherte Abfrage kann man ebenfalls alle Mitglieder einer Gruppe in eine andere kopieren.
Dazu erstellt man in der MMC Active Directory-Benutzer und -Computer eine gespeicherte Abfrage mit diesem benutzerdefinierten Filter:

(objectCategory=user)(memberOf=CN=<Quell-Gruppe>,OU=<OU>,DC=Domäne,DC=de)

Ist die Abfrage erfolgt, markiert man mit STRG+A alle Benutzer, ruft mit einem Rechtsklick die Option "Einer Gruppe hinzufügen..." aus und wählt
anschließend die entsprechende Ziel-Gruppe aus.


Gespeicherte Abfragen
Gespeicherte Abfragen für dsa.msc

 


In der Kommandozeile mit dem Tool NET

Mit dem Kommandozeilentool NET müssen zuerst alle Benutzer der entsprechenden Gruppe in eine Textdatei exportiert werden.
Der Befehl dazu lautet folgendermaßen:

Net Group <Quell-Gruppe> /Domain > C:\Benutzer.txt


Danach kann man automatisiert mit einer FOR-Schleife die exportierten Benutzer zur Zielgruppe wie folgt importieren:

FOR /F "delims=" %i IN (C:\Benutzer.txt) DO (Net Group <Ziel-Gruppe> %i /Add /Domain)


Das funktioniert jedoch nur mit globalen und universellen Sicherheits- sowie Verteilergruppen.
Domänenlokale Sicherheits- sowie Verteilergruppen werden ignoriert.

 


Mit LDIFDE

Mit Ldifde lassen sich die Mitglieder einer bestimmten Gruppe wie folgt in eine andere Gruppe kopieren.
Dazu muss im ersten Schritt mit dem folgenden Befehl ein Export der Mitglieder aus der Quell-Gruppe durchgeführt werden:

Ldifde -f C:\Mitglieder.txt -r "(sAMAccountName=<Quell-Gruppe>)" -l member


Nach dem Export erhält man eine Datei mit folgendem Inhalt:

dn: CN=<Quell-Grupp>,OU=<OU>,DC=Domäne,DC=de
changetype: add
member: CN=Yusuf,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de
member: CN=Kaan Dikmenoglu,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de
member: CN=Aysim Dikmenoglu,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de

 

Die Exportdatei muss dann wie folgt angepasst werden (der Bindestrich am Ende ist zwingend notwendig!):

dn: CN=<Ziel-Gruppe>,OU=<OU>,DC=Domäne,DC=de
changetype: modify
add: member
member: CN=Dikmenoglu\,Yusuf,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de
member: CN=Kaan Dikmenoglu,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de
member: CN=Aysim Dikmenoglu,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de
-


Der Import muss dann mit diesem Befehl erfolgen:

Ldifde -i -f C:\Mitglieder.txt


LDIFDE - LDAP Data Interchange Format Data Exchange



Weitere Informationen:
Alle Benutzer einer OU aus einer bestimmten Gruppe entfernen
Alle Gruppenmitgliedschaften eines Benutzers exportieren
Active Directory - Abfrage

Sunday, August 15, 2010 12:28:43 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell  | 
 Sunday, August 01, 2010

Was in größeren und weltweiten AD-Umgebungen für selbstverständlich gehalten wird, sieht in kleineren und mittelständischen Unternehmen (KMUs) ganz anders aus.

Diese Frage wird oft gestellt: Warum sollte der Server ausschließlich als DC betrieben werden und kann der DC nicht weitere Dienste oder Applikationen zur Verfügung stellen?

Die Antwort darauf lautet: Ja, ein DC kann und darf weitere Dienste zur Verfügung stellen. Beispielsweise ist seitens Microsoft auch unterstützt, Applikationen wie z.B. Exchange oder SQL auf einem DC zu installieren. Doch es ist keineswegs empfohlen weitere Dienste oder Applikationen auf einem DC zu betreiben. Die Gründe folgen.

Viele Administratoren bringen an dieser Stelle nun den Einwand, dass der SBS doch das Paradebeispiel dafür ist. Ein SBS muss ein DC und darf nicht ein Mitgliedsserver sein. Des Weiteren existieren doch auch Exchange und SQL auf einem SBS. Die Antwort auf diese Argumentation lautet jedoch: Der SBS ist ein Spezialfall und ist gezielt für die Produktpositionierung so konzipiert worden. Mit dem SBS 2008 (Premium) wurde das entsprechend angepasst, in dem bspw. eine extra Windows Server Lizenz für die SQL Serverinstallation mitgeliefert wird.

Ein Schelm, wer Böses dabei denkt, dass der SBS kein echter Server sei. ;-)

 

Die Gründe weshalb es empfohlen ist, den Server nur als dedizierten DC zu betreiben und keine anderen Dienste zur Verfügung zu stellen sind:

  • Performance: Werden auf einem DC weitere Applikationen und Dienste installiert, kostet das Ressourcen. Damit steigt das Risiko, dass wenn sich viele Benutzer zur gleichen Zeit an der Domäne authentisieren, dem DC nicht genügend Ressourcen zur Verfügung stehen um jede Authentisierung eines Benutzers erfolgreich durchzuführen. Wenn intensiv mit AD-Abfragen gearbeitet wird, können die fehlenden Ressourcen den DC unnötig auslasten und von Nachteil sein.

  • Sicherheit: Werden auf einem DC Applikationen oder Dienste installiert, muss man bei entsprechender Rollentrennung dem Betreuer dieser Applikation bzw. der Dienste Rechte auf dem DC einräumen. Oftmals wird dann der Benutzer in die Gruppe der BuiltIn\Administratoren oder in die Gruppe der Domänen-Admins hinzugefügt, was beides selbstverständlich keineswegs gewünscht ist. Denn zum einen sind das zu viele Rechte die man dem Benutzer einräumt und zum anderen, birgt das Gefahren. Der Benutzer, wenn der DC auch noch der Einzige in der Domäne ist, könnte die Domäne gefährden.

    Mit Einführung von Windows Server 2008 und dem RODC hat man die Situation entschärft, was die Sicherheit der AD DS anbetrifft. Der Administrator für die Anwendung kann auf einem RODC lokale Adminrechte erhalten und hat dennoch keine weiteren Rechte auf die AD DS.

    Es sollten alle Server hinter Schloss und Riegel stehen und nur Befugten sollte der Zugang erlaubt sein. Doch aus AD-Sicht ist es nicht weiter tragisch wenn „nur“ der Applikationsserver anstatt eines DCs unter dem Schreibtisch steht.


  • Rollentrennung: Folgt man der Empfehlung und betreibt dedizierte DCs, kann man in einem Problemfall einen DC in einer Umgebung mit mehreren DCs einfach ersetzen. Ist jedoch auf dem DC eine wichtige Applikation installiert, gestaltet sich der Austausch besonders schwierig!

  • Stabilität: Das Installieren von Applikationen und Diensten gefährdet die Stabilität eines DCs (RWDC und RODC). Denn bereits das Installieren eines zusätzlichen nicht kompatiblen (Drucker?) Treibers kann zu Instabilitäten führen, so dass es regelmäßig zum BSOD (Blue Screen of Death) kommt. Dies kann natürlich auch zum Totalausfall des Active Directories führen, bspw. durch Inkonsistenzen die durch solche Abstürze entstehen. Wenn sich in der Domäne mehrere DCs befinden, kann man einen dedizierten DC im laufenden Betrieb herunterstufen, den Computernamen ändern und anschließend wieder zum DC heraufstufen. Ob das die installierte Applikation auf dem DC verkraftet ist fraglich. Ein installierter Exchange Server verhindert dies sehr wirkungsvoll.

 

Das sind die Hauptargumente warum es ein dedizierter DC sein sollte. Natürlich ist die Welt da draußen alles andere als rosarot und die Realität in der Praxis sieht anders aus. Man muss selbstverständlich unterscheiden, ob es sich um ein fünf-Mann oder um ein weitweites Unternehmen mit 500.000 Mitarbeitern handelt. In einem fünf Mann Unternehmen ist das Budget für IT-Kosten meist knapp und mit einem dedizierten DC würde man in solch einer Umgebung sicherlich mit Kanonen auf Spatzen schießen.


Daher gilt für Unternehmen die sich aus welchen Gründen auch immer keinen dedizierten DC leisten (können oder wollen), folgende Empfehlung:

  • Was die Performance des DCs anbetrifft, sollte eine Applikation bzw. Dienst vor dem Einsatz auf einem DC in einer produktiven Umgebung, ausgiebig in einer Testumgebung möglichst realitätsgetreu getestet werden. Das wichtigste dabei ist das Monitoring. Erst wenn die Tests nach mehreren Tagen zufriedenstellende Ergebnisse geliefert haben, sollte man die Applikation oder den Dienst auf dem DC in der produktiven Umgebung installieren. Bei den Tests die als Referenz dienen, sollte man über mehrere Tage die Auslastung des DCs (CPU, RAM, HDD, NIC) zu verschiedenen Zeitpunkten verteilt über den Tag aufzeichnen. Wurde die Applikation bzw. der Dienst auf dem produktiven DC installiert, sollte man die Auslastung des DCs ständig mit der Referenz vergleichen.

    Natürlich ist das ein Kraftakt den sich ein Unternehmen mit 5 Angestellten zwei Mal überlegt, ob er diese Tests durchführen soll bzw. kann. Ich kann es aber jedem nur ans Herz legen!

  • Derjenige der die Applikation bzw. den Dienst auf einem DC mit Domänen-Adminrechten betreut, muss vertrauenswürdig sein. Schließlich kann der Betreuer mit Domänen-Adminrechten der Domäne schaden bis hin zu zerstören! Die Virtualisierung ist eine Möglichkeit, die einem bei der Rollentrennung behilflich sein kann.

  • Es sollten ausschließlich vertrauenswürdige Applikationen und Dienste die vorher ausgiebig getestet wurden auf einem DC installiert werden. Dabei sollte die Datensicherung mit höchster Priorität sichergestellt sein. Sowohl die tatsächliche Durchführung einer funktionierenden System State Sicherung auf der einen Seite, als auch die Sicherung der Daten auf der anderen Seite sollte stets überprüft werden.

 

Deshalb lautet die Empfehlung: Wann immer möglich sollte ein dedizierter DC eingesetzt werden! Ist das aus welchen Gründen auch immer nicht möglich, sollten vorher ausreichende Tests und eine regelmäßige Datensicherung durchgeführt werden. Dabei sollte die regelmäßige Überprüfung des Gesundheitszustands des DCs nicht vernachlässigt werden (Eventlog, DCDIAG etc.).

 


Warum Exchange nicht auf einem DC installiert werden sollte

Das Installieren von Exchange auf einem DC ist zwar seitens Microsoft supportet, es wird jedoch nicht empfohlen!

Die Gründe die zusätzlich zu den oben genannten Punkten gegen das Installieren von Exchange auf einem DC sprechen sind:

  • Wiederherstellung: Beide Technologien, AD und Exchange erfordern im Falle eine Rücksicherung eine hohe Aufmerksamkeit. Für die Rücksicherung beider Technologien müssen bestimmte Arbeitsschritte durchgeführt werden. Erschwerend kommt dann noch hinzu, dass bei einem Servercrash die Zeit für die Rücksicherung eine umso größere Rolle spielt. Wenn der DC der Einzige in der Domäne ist, dann umso mehr. Deshalb ist es aus Wiederherstellungsgründen einfacher, lediglich eine Technologie rücksichern zu müssen.

  • Abhängigkeit: Exchange benötigt zwingend ein funktionierendes AD! Wenn auf einem (wo möglich Einzigen?) DC ein Problem besteht, hat das evtl. Auswirkungen auf Exchange. Wenn sich das DC-Problem nicht lösen lässt, steht unter Umständen Exchange nicht zur Verfügung.

  • Sicherheit: Stellt man den Benutzern Outlook Web Access (OWA) zur Verfügung, hat der Benutzer durch den IIS aus dem Internet per HTTP Zugriff auf den DC. Doch meistens ist das nicht gewünscht, dass ein DC von extern egal über welches Protokoll erreichbar ist.

    Der Exchange Administrator ist standardmäßig Mitglied in der Gruppe BuiltIn\Administratoren und ist dadurch Administrator auf den DCs! Das ist natürlich zwecks Rollentrennung und vor allem in größeren Umgebungen mit verteilter Administration nicht erwünscht.

    Alle Exchange Dienste werden als LocalSystem ausgeführt, was ein größeres Sicherheitsrisiko darstellt wenn eine Sicherheitslücke entsteht. Existiert z.B. ein Sicherheitsloch im AD das einem Angreifer den Zugriff auf das AD erlaubt, kann dieser auch auf Exchange (und umgekehrt) zugreifen.

  • Ressourcen: Werden die zur Verfügung stehenden Ressourcen auf dem Exchange Server knapp (CPU, RAM, HDD, NIC), leidet darunter auch der DC. Denn läuft z.B. Exchange aus welchen Gründen auch immer voll, hat nicht nur Exchange ein Problem sondern auch der DC! Oder wenn sich ein Exchange-Dienst aufhängt und somit den ganzen Server auslastet, zieht das auch den DC in Mitleidenschaft so das dieser unter Umständen keine Anfragen mehr beantworten kann.

  • Neustart: Es kann bis zu zehn Minuten dauern den DC herunterzufahren bzw. neu zu starten. Denn standardmäßig wird der Dienst LSASS.exe in dem das AD ausgeführt wird eher beendet, bevor die Exchange Dienste die vom AD abhängig sind beendet werden. Dadurch kommt es zu mehreren Timeouts und deshalb zu dem langsamen Verhalten. Eine mögliche Abhilfe für dieses Problem ist die Exchange-Dienste (insbesondere den Informationstore) manuell zu stoppen, bevor der DC heruntergefahren oder neu gestartet wird.

  • DCPROMO: Des Weiteren ist das Ausführen von DCPROMO auf einem Exchange Server nicht supportet! Das bedeutet, wurde Exchange auf einem DC installiert, darf der DC nicht heruntergestuft werden. Zuerst müsste Exchange deinstalliert werden, ehe der DC anschließend heruntergestuft werden kann. Oder wenn Exchange auf einem Mitgliedsserver installiert wurde, darf dieser nicht mit DCPROMO zum DC heraufgestuft werden.

    Siehe (unter dem Abschnitt "Directory Server Architecture\Installing Exchange 2010 on Directory Servers"):

    Exchange 2010 System Requirements: Exchange 2010 Help

  • Exchangeabhängigkeit vom GC: Selbst wenn man mehr als einen DC/GC in der Domäne besitzt, wird Exchange immer den DC/GC nutzen, auf dem es installiert ist. Das bedeutet im Umkehrschluss, dass Exchange den Betrieb einstellt, sollte mit der DC Funktion auf dem Server etwas im Argen liegen.

    Exchange resident on domain controller that is not a global catalog server


 

Fazit: Als Best Practice ist es empfehlenswert einen dedizierten DC zu betreiben und Exchange auf einem Mitgliedsserver anstatt auf einem DC zu installieren. Ist das aus organisatorischen Gründen (Kosten etc.) nicht möglich, ist eine funktionierende Datensicherung neben dem Monitoring das Mindeste das regelmäßig durchgeführt werden sollte! Bei der Rollentrennung und bei der Installation von Exchange ist die Virtualisierung eine hilfreiche Option.


Virtualization Support Wizard
Exchange Server Supportability Matrix

 

Weitere Informationen:
Wie viele DCs pro Domäne werden benötigt?
Die Besonderheiten eines Small Business Server`s (SBS)
Images als Sicherung?
Zwei wichtige IDs eines DCs: DC GUID und InvocationId
Security Considerations for a SQL Server Installation

Sunday, August 01, 2010 11:24:05 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Installation  | 
 Sunday, July 18, 2010

Bis einschließlich Windows Server 2003 kann mit Bordmittel nur eine Kennwort- und Kontosperrungsrichtlinie innerhalb einer Domäne auf Domänenbenutzer wirken. Damit die Richtlinien auf Domänenbenutzer wirken, müssen diese zwingend auf Domänenebene verlinkt werden. Wenn stattdessen die beiden Richtlinien auf eine Organisationseinheit (OU) verlinkt werden, wirkt sich das lediglich auf die Computer die sich in dieser OU befinden aus und die Kennwortvorgaben gelten somit nur für die lokalen Benutzerkonten, die sich auf diesen Computern befinden!

Möchte man bis Windows Server 2003 mit Bordmittel mehrere Kennwortrichtlinien nutzen, muss man weitere Domänen erstellen, was natürlich den Ressourceneinsatz sowie den Verwaltungsaufwand wesentlich erhöht. Man kann sich aber auch zusätzliche Kennwortfilter erstellen oder weicht auf Dritt-Anbieter Lösungen aus.

Die Kennwort- und Kontosperrungsrichtlinie sollten in allen Serverversionen stets in der Default Domain Policy (DDP) konfiguriert werden, nicht zuletzt, da die DDP standardmäßig ohnehin schon auf der Domänenebene verlinkt ist. Ein weiterer viel wichtiger Punkt ist, das man in den Eigenschaften der Domänenpartition die Attribute die für beide Richtlinien relevant sind (maxPwdAge, minPwdAge, minPwdLength, pwdHistoryLength, pwdProperties, lockoutDuration, lockOutObservationWindow, lockouThreshold etc.) auf dem PDC-Emulator auch direkt konfigurieren kann. Die Konfiguration der Kennwortvorgaben muss nicht zwingend in der DDP vorgenommen werden. Durch einen automatisierten Prozess werden dann die Änderungen die man in den Attributen vorgenommen hat vom PDC-Emulator in die beiden Richtlinien, aber nur in die DDP übertragen!

Es gilt zu beachten, dass die Kennwortoptionen unter den Computerkonfigurationen in der Gruppenrichtlinie und nicht wie man annehmen könnte, unter den Benutzerkonfigurationen konfiguriert wird! Die Benutzerobjekte können mit den Kennworteinstellungen nichts anfangen. Die Kennwortoptionen werden nur von Computerobjekten verwertet und befinden sich unter:

Computerkonfiguration\Richtlinien\Windows-Einstellungen\Sicherheitseinstellungen\Kontorichtlinien\Kennwortrichtlinien

und

Computerkonfiguration\Richtlinien\Windows-Einstellungen\Sicherheitseinstellungen\Kontorichtlinien\Kontosperrungsrichtlinien

 


Die fein abgestimmten Kennwortrichtlinien

Seit Windows Server 2008 ist es mit Bordmittel nun endlich möglich, mehrere Kennwort- und Kontosperrungsrichtlinien für verschiedene Benutzergruppen innerhalb einer einzigen Domäne zu erstellen. Genau genommen sind es keine weiteren Richtlinien, sondern Active Directory (AD) Objekte. Die AD Objekte nennen sich Kennworteinstellungsobjekte und lauten im Fachjargon Password Setting Objects, kurz PSO.

Mit dieser Funktion die auch als granulare Kennwort- und Kontosperrungsrichtlinien oder als fein abgestimmte/abgestufte Kennwortrichtlinien (auf Englisch: Fine-Grained Password Policy, FGPP) bezeichnet wird, können getrennte Kennwort- und Kontosperreinstellungen für bestimmte Benutzer in der Domäne eingerichtet werden. Standardmäßig können die Mitglieder der Gruppe Domänen-Admins verschiedene Kennwortbeschränkungen und Kontosperreinstellungen für verschiedene Benutzertypen in der Domäne einrichten. Das Erstellen und administrieren von PSOs kann aber auch an eine entsprechende Gruppe delegiert werden.

Durch die beiden neuen Objektklassen Password Settings Container (PSC) und Password Settings die dem AD-Schema ab Windows Server 2008 hinzugefügt wurden, ist das Erstellen und Speichern von PSOs möglich. Der PSC in dem die PSOs für die Domäne gespeichert werden wird standardmäßig im Container System erstellt, dass sich in jeder Domänenpartition befindet. Der LDAP-Pfad zum PSC lautet CN=Password Settings Container,CN=System,DC=Domäne,DC=de.

Aktiviert man in der MMC Active Directory-Benutzer und -Computer unter Ansicht die „Erweiterten Features“, kommt der System Container in dem sich der PSC befindet zum Vorschein. Das systemflags Attribut in den Eigenschaften des PSCs verhindert, dass der Container weder verschoben, noch umbenannt oder gar gelöscht werden kann.

 


Die Voraussetzungen

  • Der Domänenfunktionsmodus muss sich mindestens auf der Ebene Windows Server 2008 befinden! Der Gesamtstrukturfunktionsmodus wiederum kann sich z.B. auf der Ebene Windows Server 2003 befinden. Somit dürften sich in der Gesamtstruktur noch Domänen mit Windows Server 2003 DCs befinden, die dann aber keine PSOs einsetzen können!

  • PSOs können nur auf Benutzerobjekte, globale Sicherheitsgruppen und auf inetOrgPerson-Objekte angewendet werden. Die Gruppenbereiche „Lokal (in Domäne)“ und „Universal“ sowie der Gruppentyp „Verteiler“ werden nicht berücksichtigt! Es ist empfehlenswert PSOs lediglich auf globale Gruppen zu verlinken. Dadurch müssen die Benutzer die eine andere Kennwortvorgabe erhalten sollen, nur noch zur entsprechenden Gruppe hinzugefügt werden.

  • Auf eine OU können PSOs nicht direkt angewendet werden! Stattdessen kann man eine Schattengruppe (shadow group) verwenden, die der OU logisch zugeordnet ist. Eine Schattengruppe ist nichts anderes als eine globale Sicherheitsgruppe. Alle Benutzer einer OU werden dann zu dieser Schattengruppe hinzugefügt und die PSO wird dieser Schattengruppe zugewiesen. Wird ein Benutzer aus einer OU in eine andere verschoben, muss die Mitgliedschaft der Schattengruppe angepasst werden, falls der Benutzer die PSO der neuen OU zugewiesen bekommen soll.

  • Auf einen Benutzer kann immer nur ein einziges PSO wirken!

  • PSOs können nur im PSC erstellt werden!

  • Das ein und dasselbe PSO kann auf mehrere Benutzer und/oder Gruppen angewandt werden, die sich in der gleichen Domäne befinden wie das PSO.

  • Es gibt kein eigenes Bordmittel für PSOs. Ein PSO kann nicht in der MMC Active Directory-Benutzer und -Computer erstellt werden, lediglich das Anzeigen ist möglich. PSOs können mit Bordmittel mit der MMC ADSIEdit, mit dem Kommandozeilentool LDIFDE, LDP oder der AD-PowerShell erstellt und administriert werden. Zusätzlich gibt es aber im Internet kostenlose Tools, die einem das Leben mit den PSOs erleichtern.

 


Die Attribute eines PSO

Ein PSO in dem die Kennwortvorgaben und Kontosperreinstellungen konfiguriert werden, hat Attribute für alle Kennwortoptionen, die ebenfalls in der DDP festgelegt werden können (bis auf die Kerberos-Einstellungen).

In einem PSO existieren die Attribute für die folgenden Kennwort- und Kontosperreinstellungen:

  • Vorrang: Das Attribut msDS-PasswordSettingsPrecedence dient zum Lösen von Konflikten, wenn auf ein Benutzer- oder Gruppenobjekt mehrere PSOs verlinkt sind. Dieses Attribut entscheidet letztendlich darüber welches PSO angewendet wird, falls mehrere PSOs auf ein Benutzer- oder Gruppenobjekt verlinkt sind. Das PSO, das den niedrigsten Wert in diesem Attribut enthält wird angewendet. Existieren mehrere PSOs mit dem gleichen Wert, gewinnt das PSO dessen GUID niedriger ist! Als Werte wird jeder Wert akzeptiert, der größer als 0 ist.

  • Kennwörter mit umkehrbarer Verschlüsselung speichern: Diese Option wird im Attribut msDS-PasswordReversibleEncryptionEnabled konfiguriert. Als Werte können FALSE und TRUE vergeben werden. Es versteht sich von selbst, dass man der Empfehlung folgen und hier als Wert FALSE vergeben sollte. Ansonsten würden die Kennwörter im Klartext abgespeichert werden, was ein erhebliches Sicherheitsrisiko darstellt!

  • Kennwortchronik erzwingen: Für diese Option ist das Attribut msDS-PasswordHistoryLength zuständig. Hiermit wird die Anzahl der zu speichernden Kennwörter festgelegt. Wird als Wert 10 konfiguriert, werden die letzten 10 Kennwörter die der Benutzer vergeben hatte gespeichert. Wenn der Benutzer aufgefordert wird ein neues Kennwort zu vergeben, darf es kein Kennwort von den letzten 10 Kennwörtern sein. Der Wert muss zwischen 0 und 1024 liegen. Wird als Wert 0 vergeben, werden keine Kennwörter gespeichert.

  • Kennwort muss Komplexitätsvoraussetzungen entsprechen: Hinter dieser Option steckt das Attribut msDS-PasswordComplexityEnabled. Als Werte können hier FALSE (Deaktiviert) und TRUE (Aktiviert) vergeben werden, wobei TRUE empfohlen ist. Mit dieser Option wird festgelegt, dass das Kennwort komplex sein muss.

    Komplex bedeutet:

    1. Das Kennwort darf nicht den Kontonamen des Benutzers oder mehr als zwei Zeichen enthalten, die nacheinander im vollständigen Namen des Benutzers vorkommen.
    2. Das Kennwort muss mindestens sechs Zeichen lang sein.
    3. Das Kennwort muss Zeichen aus drei der folgenden Kategorien enthalten:

    - Großbuchstaben (A bis Z)
    - Kleinbuchstaben (a bis z)
    - Zahlen zur Basis 10 (0 bis 9)
    - Nicht alphabetische Zeichen (zum Beispiel !, $, #, %)

  • Minimale Kennwortlänge: Die minimale Kennwortlänge wird im Attribut msDS-MinimumPasswordLength konfiguriert. In diesem Attribut muss angegeben werden, aus wie vielen Zeichen das Kennwort mindestens bestehen muss. Als Wert kann 0 bis 255 vergeben werden, wobei mit 0 der Benutzer selbst die Länge seines Kennworts bestimmen kann.

  • Minimales Kennwortalter: Das minimale Kennwortalter im PSO konfiguriert man im Attribut msDS-MinimumPasswordAge. Dieses Attribut gibt vor, wie alt ein Kennwort mindestens sein muss ehe es geändert werden darf. Die Zeitangabe muss im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) erfolgen. Soll der Benutzer erst nach fünf Tagen sein Kennwort ändern dürfen, so muss als Wert 5:00:00:00 eingetragen werden. Man kann aber auch als Wert mit Klammern (Nie) oder 0 eingeben, um kein Mindestalter zu definieren. Dadurch kann der Benutzer noch am selben Tag sein Kennwort erneut ändern. Der Wert von msDS-MinimumPasswordAge muss „kleiner als“ oder „gleich“ dem Wert von msDS-MaximumPasswordAge sein.

  • Maximales Kennwortalter: Das Attribut das hinter dieser Option steckt lautet  msDS-MaximumPasswordAge. Mit dieser Option wird angegeben, nach wie vielen Tagen spätestens der Benutzer sein Kennwort ändern muss. Dieser Wert muss „gleich“ oder „größer“ als der Wert im Attribut msDS-MinimumPasswordAge sein. Die Zeitangabe muss in diesem Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) eingegeben werden. Vergibt man als Wert mit Klammern (Nie), läuft das Kennwort des Benutzers nicht ab. Als Wert kann nicht 0 konfiguriert werden.


 

Des Weiteren existieren im PSO Attribute, mit denen man die folgenden Kontosperreinstellungen konfigurieren kann:

  • Kontensperrungsschwelle: Die Anzahl maximal möglicher Fehlversuche bei der Benutzeranmeldung bestimmt das Attribut msDS-LockoutThreshold. Als Wert kann man 0 bis 65535 eintragen, wobei 0 diese Option deaktiviert. Dann erfolgt niemals eine Kontosperrung. Das ist allerdings aus Sicherheitsgründen, z.B. wegen Brute Force Attacken nicht zu empfehlen!

  • Zurücksetzungsdauer des Kontosperrungszählers: Wie lange die fehlgeschlagenen Anmeldeversuche zwischengespeichert werden, bevor der Kontosperrungszähler auf 0 zurückgesetzt wird, bestimmt das Attribut msDS-LockoutObservationWindow. Die Zeitangabe muss im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) angegeben werden. Möchte man als Wert 30 Minuten eintragen, so gilt es die Zeit wie folgt einzugeben 00:00:30:00. Der Wert von msDS-LockoutObservationWindow darf nicht „größer“ als der Wert von msDS-LockoutDuration sein, höchstens „gleich“! Denn es ist nicht möglich, den Kontosperrungszähler länger aktiv zu halten als die Zeit, die das Konto gesperrt und somit im Attribut msDS-LockoutDuration konfiguriert ist.

  • Kontosperrdauer: Wie lange ein Benutzerkonto nach den Anmeldefehlversuchen (es zählt der Wert im Attribut msDS-LockoutThreshold) gesperrt werden soll, ehe es automatisch entsperrt wird, definiert man im Attribut msDS-LockoutDuration. Die Zeitangabe muss im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) erfolgen. Wird als Wert mit Klammern (Nie) eingetragen, entsperrt sich das Benutzerkonto nicht automatisch. Stattdessen muss ein Administrator manuell das Konto entsperren. Der Wert im Attribut msDS-LockoutDuration darf nicht „kleiner“ sondern höchstens „gleich“ sein, als der Wert in msDS-LockoutObservationWindow.



Ferner existiert im PSO zusätzlich noch dieses Attribut:

  • PSO-Link: Im PSO-Link hinter dem das mehrwertige Attribut msDS-PSOAppliesTo steckt, konfiguriert man auf welche Objekte das PSO angewendet werden soll. Das bedeutet, ein PSO kann auf mehrere Benutzer und/oder Gruppen angewendet werden. In diesem Forward-Link muss der LDAP-Pfad bzw. der Distinguished Name (DN) des Objekts eingetragen werden, auf dem das PSO wirken soll.

    Das Pendant zum Forward-Link ist das Back-Link, dass Attribut msDS-PSOApplied. In diesem Back-Link das den Benutzer und Gruppenobjekten ab Windows Server 2008 hinzugefügt wurde, ist das PSO bzw. wenn mehrere PSOs auf ein Benutzerobjekt direkt oder indirekt infrage kommen, sind die PSOs enthalten, mit dem das Objekt verknüpft ist. Welches PSO dann letztendlich auf ein Benutzerkonto angewandt wird, entscheidet der Richtlinienergebnissatz (Resultant Set of Policy, RSOP), genauer das Attribut msDS-ResultantPSO das sich ebenfalls in den Eigenschaften eines Benutzerobjekts befindet.

    Back-Links werden als constructed Attributes bezeichnet was nichts anderes bedeutet, als dass diese Art von Attribut von jedem DC selbst veraltet wird und der Wert eines solchen Attributs auch nicht vom Administrator bearbeitet werden kann. Es ist ein system-only Attribut und wird auch nicht auf andere DCs repliziert. Des Weiteren wird ein Back-Link und sein Wert erst zum Zeitpunkt der Abfrage generiert.
     

Verknüpfte Attribute
Die konstruierten Attribute abfragen

 


Die PSO-Attribute mit einer Zeitangabe

Es gibt im PSO vier Attribute die als Wert eine Zeitangabe im Form von Tage:Stunden:Minuten:Sekunden verlangen.
Die vier Attribute sind:

- msDS-MaximumPasswordAge
- msDS-MinimumPasswordAge
- msDS-LockoutObservationWindow
- msDS-LockoutDuration

Erstellt man ein PSO in der AD-PowerShell oder mit ADSIEdit, muss man die Zeitangabe nach der Vorgabe tt:ss:mm:ss konfigurieren. Möchte man jedoch ein oder mehrere PSOs mit LDIFDE erstellen, so müssen die Werte in diesen Attributen im I8-Format angegeben werden! Im I8-Format wird die Zeit in Intervallen von -100 Nanosekunden (Schema: attributeSyntax = 2.5.5.16 (I8)) gespeichert. Unter Windows Server 2003 wird in der Default Domain Policy genau diese Zeiteinheit für die entsprechenden Zeit-bezogenen Attribute verwendet. Um in diesen vier Attributen die entsprechenden Werte zu konfigurieren, gilt es die Zeitangabe in Tage, Stunden oder Minuten in die Intervalle von -100 Nanosekunden zu konvertieren. Anschließend muss dem konvertierten Ergebnis noch ein negatives Vorzeichen (das Minuszeichen „-„) vorangestellt werden.

Zum umrechnen der Zeit können die folgenden Umrechnungsformel verwendet werden, um die entsprechenden I8-Werte zu erhalten:

Tage: Die Umrechnungsformel für einen Tag lautet = -24*60*60*(10^7) = -864000000000.
Demzufolge würde der Wert für fünf Tage so lauten:
-4320000000000 (5*864000000000).

Stunden: Eine Stunde wird wie folgt umgerechnet: -60*60*(10^7) = -36000000000.
Der Wert für zwei Stunden lautet -72000000000 (2*36000000000).

Minuten: Die Formel für eine Minute lautet = -60*(10^7) = -600000000.
Sollen 30 Minuten ins I8-Format konvertiert werden, so lautet das Ergebnis -18000000000 (30*600000000).

 


Welches PSO wird angewendet und hat Vorrang, falls mehrere PSOs infrage kommen?

PSOs können sowohl Benutzerobjekten als auch globalen Sicherheitsgruppen zugewiesen werden. Der Richtlinienergebnissatz (RSOP) kann jedoch nur für das Benutzerobjekt berechnet werden. Sind mehrere PSOs mit einem Benutzer oder einer globalen Gruppe verknüpft, wird der RSOP wie folgt berechnet:

  • Es wird zuerst geprüft, ob ein PSO direkt mit dem Benutzerkonto verknüpft ist. Ist das der Fall, wird dieses PSO angewendet. Sind mehrere PSOs direkt mit dem Benutzerkonto verknüpft, gewinnt das PSO, das den niedrigsten Wert im Attribut msDS-PasswordSettingsPrecedence enthält! Existieren mehrere PSOs mit demselben Wert im Attribut msDS-PasswordSettingsPrecedence, wird das PSO auf das Benutzerkonto angewendet dessen GUID niedriger ist!

  • Wenn kein PSO direkt mit dem Benutzerobjekt verknüpft ist, werden die Mitgliedschaften in den globalen Sicherheitsgruppen des betreffenden Benutzers überprüft. Existiert darunter eine Gruppe das mit einem PSO verknüpft ist, wird das PSO auf Umwege auf das Benutzerkonto angewendet. Befindet sich der Benutzer in mehreren globalen Gruppen auf denen verschiedene PSOs verknüpft sind, wird das PSO auf das Benutzerkonto angewendet, das den niedrigsten Wert im Attribut msDS-PasswordSettingsPrecedence hat! Wenn mehrere PSOs mit demselben Wert im Attribut msDS-PasswordSettingsPrecedence existieren, wird das PSO auf das Benutzerkonto angewendet dessen GUID niedriger ist!

  • Wenn kein PSO direkt oder indirekt per globaler Sicherheitsgruppe mit einem Benutzerobjekt verknüpft ist, werden die Kennwort- und Kontosperrungsrichtlinien aus der Default Domain Policy angewandt! Deshalb sollten immer die Kennwort- und Kontosperrungsrichtlinien in der DDP konfiguriert werden, um eine Mindestanforderung an die Benutzerkennwörter zu stellen.

  • Existiert ein PSO das direkt oder indirekt mit einem Benutzerobjekt verknüpft ist, hat das PSO stets vor der DDP Vorrang! Erst wenn ermittelt wurde, dass letztendlich einem Benutzerobjekt kein PSO zugewiesen wurde, greifen die Kennwortbeschränkungen aus der DDP.

  • Welches PSO letzten Endes auf ein Benutzerkonto angewendet wird, entscheidet das RSOP! Denn ein weiteres neues constructed Attribut das dem Benutzerobjekt ab Windows Server 2008 hinzugefügt wurde, lautet msDS-ResultantPSO. In diesem Attribut ist der DN des PSOs gespeichert, das letztendlich nach den o.g. Regeln auf den Benutzer angewandt wird.

    Mehr über constructed Attribute gibt es hier:
    Die konstruierten Attribute abfragen

  • Es gibt jedoch drei Einstellungen die direkt im Benutzerobjekt vorgenommen werden können, um stets die Kennwortvorgaben eines PSOs auszuhebeln. Die drei Optionen lassen sich mit den Flags des userAccountControl Attributs konfigurieren und sind:

    - Kennwort läuft nie ab
    - Kennwort mit umkehrbarer Verschlüsselung speichern
    - Kennwort nicht erforderlich

    How to use the UserAccountControl flags to manipulate user account properties

    Im Übrigen setzen diese drei Flags die Kennwortvorgaben die in der DDP konfiguriert sind, ebenso außer Kraft!

 


PSOs mit der AD-PowerShell erstellen und verwalten

Unter „Windows Server 2008“ konnten PSOs mit Bordmittel lediglich mit ADSIEdit, LDIFDE sowie LDP erstellt und administriert werden. Ab „Windows Server 2008 R2“ können PSOs mit einem weiteren Bordmittel, mit dem State of the Art Werkzeug der AD-PowerShell erstellt und verwaltet werden.

Auch unter Windows Server 2003 und Windows Server 2008 kann man die AD-PowerShell nach vorheriger Installation der AD-Management Gateway Services nutzen.

Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008


Zum Überprüfen und konfigurieren der Kennwort- und Kontosperrungsrichtlinie in der DDP gibt es ebenfalls die beiden AD-PowerShell Cmdlets Get-ADDefaultDomainPasswordPolicy und Set-ADDefaultDomainPasswordPolicy. Das Cmdlet Get-ADDefaultDomainPasswordPolicy mit dem die Kennwortoptionen direkt aus den Attributen (und nicht aus der DDP) die sich in der Domänenpartition befinden abgerufen werden, zeigt die Kennwortvorgaben die mit der DDP verteilt werden an.

Das Cmdlet Set-ADDefaultDomainPasswordPolicy ändert nicht etwa die Kennworteinstellungen in der DDP, sondern direkt die Attribute die sich in der Domänenpartition befinden. Wie die einzelnen Kennwortoptionen zum Konfigurieren in der AD-PowerShell lauten, erfährt man mit dem Befehl Get-Help <Cmdlet> -Full. Also z.B. Get-Help Set-ADDefaultDomainPasswordPolicy –Full.


Zum Administrieren der PSOs in der AD-PowerShell stellt Microsoft diese acht Cmdlets zur Verfügung:

- Add-ADFineGrainedPasswordPolicySubject
- Get-ADFineGrainedPasswordPolicy
- Get-ADFineGrainedPasswordPolicySubject
- Get-ADUserResultantPasswordPolicy
- New-ADFineGrainedPasswordPolicy
- Remove-ADFineGrainedPasswordPolicy
- Remove-ADFineGrainedPasswordPolicySubject
- Set-ADFineGrainedPasswordPolicy

 

  • Mit diesem Einzeiler lässt sich ein PSO wie folgt erstellen:

    New-ADFineGrainedPasswordPolicy –Name “PSO für die GF” –Precedence 20 –ComplexityEnabled $true –Description “Dieses PSO gilt nur für die GF” –Displayname “GF-PSO” –LockoutDuration “0.00:15:00” –LockoutObservationWindow “0.00:15:00” –LockoutThreshold 15 -MaxPasswordAge "60.00:00:00" -MinPasswordAge "5.00:00:00" -MinPasswordLength 8 -PasswordHistoryCount 10 -ReversibleEncryptionEnabled $false


  • Ist das PSO erstellt, muss es anschließend mit dem folgenden Befehl an einen Benutzer oder eine Gruppe wie folgt zugewiesen werden:

    Add-ADFineGrainedPasswordPolicySubject <Name der PSO> <Benutzer/Gruppe>


  • Einzelne Optionen lassen sich in einem bestehenden PSO folgendermaßen ändern:

    Set-ADFineGrainedPasswordPolicy “CN=<Name der PSO>,CN=Password Settings Container,CN=System,DC=Domäne,DC=de” –Precedence 15 -MinPasswordLength 12


  • Alle PSOs mit den konfigurierten Kennwortoptionen lassen sich mit diesem Befehl Anzeigen:

    Get-ADFineGrainedPasswordPolicy -Filter { Name -Like "*" }





  • Welches PSO letzten Endes auf einen Benutzer wirkt und wie die einzelnen Kennwortoptionen konfiguriert sind, erfährt man mit diesem Befehl:

    Get-ADUserResultantPasswordPolicy <Benutzer>


  • Mit der AD-PowerShell kann man sogar abfragen, auf welche Benutzer- und/oder Gruppenobjekte ein bestimmtes PSO verlinkt ist. Der Befehl lautet:

    Get-ADFineGrainedPasswordPolicySubject <Name der PSO>


  • Um die Verlinkung einer PSO von einem Benutzer oder von einer Gruppe zu entfernen, muss dieser Befehl ausgeführt werden:

    Remove-ADFineGrainedPasswordPolicySubject <Name der PSO> -Subjects <Benutzer/Gruppen> -Confirm:$False


  • Eine PSO kann man in der AD-PowerShell so löschen:

    Remove-ADFineGrainedPasswordPolicy <Name der PSO> -Confirm:$False

 


Ein PSO mit ADSIEdit erstellen

Die Attribute eines PSO, müssen zwingend in dieser Reihenfolge bei der Erstellung mit ADSIEdit konfiguriert werden.
Das Erstellen eines PSOs erfolgt mit Bordmittel in ADSIEdit wie folgt:

  • Zuerst verbindet man sich in ADSIEdit mit der Domänenpartition und navigiert zum Container CN=Password Settings Container,CN=System,DC=Domäne,DC=de.

  • Mit einem Rechtsklick auf den PSC kann man unter Neu - Objekt… ein PSO, das zur Klasse msDS-PasswordSettings gehört erstellen.

  • Mit einem Klick auf Weiter muss der Common-Name im Attribut cn angegeben werden. Der CN ist ein Name, der das PSO eindeutig identifiziert (z.B. „PSO für GF“ etc.).

  • Im nächsten Schritt muss der Password Settings Precedence, der Wert für das Attribut msDS-PasswordSettingsPrecedence angegeben werden. Der Wert (der größer 0 sein muss!) der hier eingetragen wird entscheidet darüber, welches PSO auf das Objekt letztendlich angewendet wird, falls mehrere PSOs auf das Objekt verlinkt sind. Das PSO das den niedrigsten Wert in diesem Attribut enthält, wird auf das Objekt angewendet. Existieren mehrere PSOs mit dem gleichen Wert, gewinnt das PSO dessen GUID niedriger ist.

  • Dann muss für die Option Password reversible encryption status for user accounts im Attribut msDS-PasswordReversibleEncryptionEnabled entweder als Wert FALSE (was empfohlen ist!) oder TRUE eingegeben werden.

  • Als nächstes muss bei der Option Password History Length for user accounts ein Wert zwischen 0 und 1024 im Attribut msDS-PasswordHistoryLength vergeben werden.

  • Bei der Option Password complexity status for user accounts muss im Attribut msDS-PasswordComplexityEnabled als Wert FALSE oder TRUE vergeben werden. Wobei TRUE die empfohlene Einstellung ist.

  • Danach gibt man bei der Option Minimum Password Length for user accounts im Attribut msDS-MinimumPasswordLength die Mindestlänge, die ein Kennwort zwingend haben muss an! Es kann ein Wert zwischen 0 und 255 vergeben werden.

  • Nun muss im Attribut msDS-MinimumPasswordAge für die Option Minimum Password Age for user accounts das minimale Kennwortalter angegeben werden, ehe es vom Benutzer geändert werden darf. Die Zeitangabe muss im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) angegeben werden (z.B. 7:00:00:00 für sieben Tage). Wird als Wert mit Klammern (Nie) eingetragen, wird kein Mindestalter definiert.

  • Im darauffolgenden Schritt muss man in der Option Maximum Password Age for user accounts im Attribut msDS-MaximumPasswordAge diesmal das maximale Alter eines Kennworts eingeben. In diesem Attribut wird definiert, nach wie vielen Tagen spätestens der Benutzer sein Kennwort ändern muss! Auch hier muss die Zeitangabe im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) erfolgen. Es dürfte jedem klar sein, dass dieser Wert gleich oder höher sein muss als der Wert im Attribut msDS-MinimumPasswordAge.

  • Bei der nächsten Option Lockout threshold for lockout of user accounts muss im Attribut msDS-LockoutThreshold der Wert für die Kontosperrschwelle eingegeben werden. Wie oft der Benutzer sein Kennwort falsch eingeben darf ehe sein Benutzerkonto gesperrt wird, legt man in diesem Attribut fest. Als Wert kann zwischen 0 und 65535 gewählt werden. Gibt man als Wert 0 ein, wird das Benutzerkonto nie gesperrt.

  • Mit der Option Observation Window for lockout of user accounts bestimmt man im Attribut msDS-LockoutObservationWindow, wie lange die Anmeldefehlversuche gespeichert werden sollen, ehe der Kontosperrungszähler zurückgesetzt wird. Die Zeitangabe muss im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) angegeben werden. Möchte man die Zeit auf 20 Minuten festlegen, so muss der Wert folgendermaßen konfiguriert werden 00:00:20:00.

  • Zum Schluss muss man noch für die Option Lockout duration for locked out user accounts im Attribut msDS-LockoutDuration die Kontosperrdauer angeben. Das Format der Zeitangabe muss so aussehen Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss). Wenn also der Benutzer sein Kennwort mehr als der Wert, der im Attribut msDS-LockoutThreshold definiert ist falsch eingegeben hat und das Benutzerkonto für zehn Minuten gesperrt werden soll, muss man diesen Wert eintragen 00:00:10:00.

  • Nun gelangt man auf die letzte Seite, auf der man zum einen Fertig stellen und zum anderen auf Weitere Attribute klicken kann. Mit einem Klick auf Weitere Attribute öffnet sich ein weiteres Dialogfenster in dem man die Benutzer und Gruppen angeben kann, mit denen dieses PSO verknüpft werden soll. Dort gilt es im Feld Anzuzeigende Eigenschaften den Eintrag Optional und im Feld Anzuzeigende Eigenschaft das Attribut msDS-PSOAppliesTo auszuwählen. Daraufhin muss im Feld Attribut bearbeiten der DN des Objekts angegeben werden, auf dem das PSO angewendet werden soll. Da es sich hierbei um ein mehrwertiges Attribut handelt, können mehrere Objekte angegeben werden, auf denen dasselbe PSO wirken soll. Wenn ein DN eingetragen wurde, muss der Wert mit Hinzufügen in das Feld Wert(e) übernommen werden. Wurden alle Werte eingetragen, gelangt man mit OK zum Dialogfeld Objekt erstellen zurück.





  • Mit einem Klick auf Fertig stellen wird nun endlich das PSO im „Password Settings Container“ erstellt. Falls ein Attribut einen ungültigen Wert enthält, erscheint nach dem Klick auf Fertig stellen eine Fehlermeldung.

    Nach dem bestätigen der Fehlermeldung mit OK kann man im Dialogfenster Objekt erstellen zurück zum bemängelten Attribut navigieren, um den Wert zu korrigieren. Die Verdächtigen sind dabei die Attribute, die eine Zeitangabe in Form von
    Tage:Stunden:Minuten:Sekunden enthalten. Z.B. darf der Wert im Attribut msDS-LockoutObservationWindow nicht größer sein (höchstens gleich) als der Wert im Attribut msDS-LockoutDuration. Auch das UAC kann schuld sein. Das ADSIEdit sollte explizit als Administrator gestartet werden.

 


PSOs mit LDIFDE erstellen

Es gibt auch eine skriptbasierte Alternative, mit dem PSOs erstellt werden können. Das Erstellen von PSOs kann auch mit dem Kommandozeilentool LDIFDE automatisiert durchgeführt werden.

Die Einträge in der LDF Datei müssen folgendermaßen aussehen:

dn:CN=PSO,CN=Password Settings Container,CN=System,DC=Domäne,DC=de
changetype:add
objectClass:msDS-PasswordSettings
msDS-MaximumPasswordAge:-51840000000000 (entspricht 60 Tage)
msDS-MinimumPasswordAge:-1728000000000 (entspricht 2 Tage)
msDS-MinimumPasswordLength:8
msDS-PasswordHistoryLength:20
msDS-PasswordComplexityEnabled:TRUE
msDS-PasswordReversibleEncryptionEnabled:FALSE
msDS-LockoutObservationWindow:-36000000000 (entspricht 60 Minuten)
msDS-LockoutDuration:-36000000000 (entspricht 60 Minuten)
msDS-LockoutThreshold:0
msDS-PasswordSettingsPrecedence:10
msDS-PSOAppliesTo:CN=<Gruppe>,OU=<OU>,DC=Domäne,DC=de


Der Import erfolgt mit diesem Befehl:

Ldifde -i -f C:\PSO.ldf

 


Weitere Informationen:
Den ersten Windows Server 2008 R2 DC zur Gesamtstruktur hinzufügen
Domänen- und Gesamtstrukturfunktionsmodus
LDIFDE - LDAP Data Interchange Format Data Exchange

Saturday, July 17, 2010 11:19:47 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell | Gruppenrichtlinien  | 
 Sunday, July 04, 2010

Das Active Directory (AD), das auf dem Extensible Storage Engine (ESE) Datenbankmodul basiert organisiert Objekte in einer hierarchischen Baumstruktur und stellt die Hierarchie der Objekte für eine Gesamtstruktur. Das AD speichert die transaktionale Datenbank intern in drei Tabellen: Datentabelle (Data-Table), Verknüpfungstabelle (Link-Table) und in der erweiterten Sicherheitseinstellungen Tabelle (Security Descriptor-Table, kurz SD-Table). Die beiden wichtigsten Tabellen in der sich die Daten des AD befinden ist die Datentabelle, die alle Objekte sowie Attribute enthält und die Verknüpfungstabelle, in der die Beziehungen zwischen den Objekten gespeichert werden.

Siehe auch: Verknüpfte Attribute


In der Datentabelle wird jedes Attribut und jedes Objekt in einer einzelnen Zeile, mit einer Spalte pro Attribut gespeichert. Das bedeutet, jede Zeile in der Datentabelle entspricht einem Attribut bzw. Objekt. Die Einträge die sich auf einem Domänencontroller (DC) in der Datentabelle befinden, sind aus der Schema-, Konfigurations-, Anwendungs- und Domänenpartition. Die Datentabelle eines globalen Katalogs (GC) enthält neben den Einträgen aus den bereits erwähnten Verzeichnispartitionen, zusätzlich noch die Einträge aus allen anderen Domänenpartitionen innerhalb der Gesamtstruktur. Denn bekanntermaßen werden alle Objekte aus allen Domänen innerhalb einer Gesamtstruktur, lediglich mit den Attributen die für eine Suche relevant sind in den GC repliziert.

Um jede Zeile in der Datentabelle eindeutig identifizieren zu können, verwendet das AD als eindeutige Kennung das Distinguished Name Tag (DNT). Bei dem DNT handelt es sich um einen vier Byte (32Bit) Integer Wert und dieser wird zum internen Verweis auf Attribute und Objekte verwendet. Der Distinguished Name Tag ist eine lokale Kennung der nicht zwischen den DCs repliziert wird und lautet bei jedem DC anders.

Der DNT gibt die Zeile in der AD-Datenbank an, in der das Attribut bzw. Objekt gespeichert ist. Jedes Objekt das erstellt wird erhält im DNT eine fortlaufende Nummer. Oder wenn z.B. ein Benutzer einer Gruppe hinzugefügt wird, speichert das AD den DNT des Benutzerobjekts im member Attribut der Gruppe und nicht den Distinguished Name (DN). Dadurch das sich der DNT selbst beim Umbenennen eines Objekts nicht ändert kann ein Benutzerobjekt umbenannt werden, ohne dass das AD alle Gruppen durchsuchen muss um den DN des Benutzers in jedem member Attribut der Gruppe aktualisieren zu müssen.

Im AD hat jedes Objekt genau ein übergeordnetes Objekt und ein Verweis auf das übergeordnete Objekt ist mit dem Objekt selbst gespeichert. Für die Beziehung zwischen den über- und untergeordneten Objekten speichert das AD in einer zusätzlichen Spalte innerhalb der Datentabelle den Parent Distinguished Name Tag (PDNT). In dieser Spalte wird der DNT vom übergeordneten Objekt gespeichert. Die Auflösung der Beziehung zwischen den über- und untergeordneten Objekten ist optimiert, da der DNT und PDNT indizierte Felder in der AD-Datenbank sind.

Um sich das genauer vor Augen zu führen empfiehlt es sich einen Export der AD-Datenbank mit LDP zu generieren. Diese Möglichkeit, einen Export der AD-Datenbank und das sogar im laufenden Betrieb durchzuführen, existiert seit Windows 2000 und ist dank des speziellen Attributs dumpdatabase möglich, das nur für diesen Zweck existiert. Nach dem man LDP gestartet hat, muss man sich zunächst mit einem DC verbinden. Dazu wählt man in LDP unter dem Menüpunkt Remotedesktopverbindung die Option Verbinden… und gibt den gewünschten DC an, von dem aus ein Export der lokalen AD-Datenbankkopie durchgeführt werden soll. Danach muss man ebenfalls unter dem Menüpunkt Remotedesktopverbindung die Option Gebunden… wählen, um sich mit dem AD zu binden. Anschließend gilt es unter dem Menüpunkt Durchsuchen die Option Ändern aufzurufen. Nun muss im Feld Attribut das Attribut dumpdatabase eingetragen werden. Im Feld Werte können die gewünschten Attribute angegeben werden die mit exportiert werden sollen. Das Feld darf dabei nicht leer bleiben und es muss mindestens ein Attribut angegeben werden. Standardmäßig werden unter Windows Server 2008 R2 bereits diese Werte exportiert: DNT - PDNT - CNT - NCDNT - OBJ – DelTime - RecTime - INST - RDNTyp – RDN. Hat man die entsprechenden Attribute eingegeben, muss im Bereich Vorgang die Option Hinzufügen gewählt und mit einem Klick auf Eingabe die getätigten Einträge in die Eingabeliste übernommen werden. Mit einem Klick auf Ausführen wird der Export dann durchgeführt.



Je nach Anzahl der Attribute, Objekte und Größe der AD-Datenbank kann der Export einige Zeit in Anspruch nehmen. Daher ist es empfehlenswert, den Export auf einem DC zu einem Zeitpunkt zu generieren, wenn gerade keine größere Last auf dem DC besteht!

Die exportierte Datei mit dem Dateinamen NTDS.dmp kann mit einem Texteditor geöffnet werden (z.B. Notepad) und wird im gleichen Verzeichnis erstellt, in der sich auch die AD-Datenbank NTDS.dit befindet (standardmäßig %windir%\NTDS).


 

 

Was passiert denn nun in der AD-Datenbank wenn ein Objekt, z.B. ein Benutzer gelöscht wird?

Es heißt wenn ein Objekt, z.B. ein Benutzer gelöscht wird, wandert es in den versteckten Container Deleted Objects das sich in der Domänenpartition befindet.
Näheres zum Container Deleted Objects liefert der folgende Artikel:

Der Container Deleted Objects


Doch bevor das Objekt überhaupt gelöscht wird, findet anhand bestimmter Kriterien eine Überprüfung statt, ob das Objekt auch tatsächlich gelöscht werden darf.
Welche Kriterien das hauptsächlich sind, steht im diesem Artikel:

Active Directory Wiederherstellung


Wenn die Kriterien erfüllt und das Objekt gelöscht werden darf, werden folgende Änderungen am dem gelöschten Objekt vorgenommen:

Lingering Objects (veraltete Objekte)


In Wirklichkeit wird in der AD-Datenbank das Objekt das gelöscht wurde, also z.B. ein Benutzer nicht verschoben. Stattdessen bleibt das Objekt nach dem Löschen weiterhin in der AD-Datenbank an seinem Platz bestehen! Lediglich die Beziehung zu dem übergeordneten Objekt, also der PDNT im gelöschten Objekt ändert sich. Das gelöschte Objekt erhält in der Spalte PDNT den DNT vom Container Deleted Objects.

Im Übrigen trifft das nicht nur auf das Löschen von Objekten zu. Auch wenn ein Objekt in eine andere OU verschoben wird, bleibt das Objekt weiterhin an seinem Ursprungsort in der AD-Datenbank bestehen. Das Einzige was sich auch hier ändert, ist die Beziehung zum übergeordneten Objekt, also der Wert in der Spalte PDNT.

Schauen wir uns das im folgenden Beispiel an:


Das Benutzerobjekt Yusuf Dikmenoglu enthält in der Spalte DNT den Wert 3702. Das Objekt befindet sich also in der Zeile 3702. In der Spalte PDNT ist als Wert 3697 eingetragen. Im PDNT ist der DNT vom übergeordneten Objekt gespeichert. Schaut man sich nun in der Spalte DNT die Zeile 3697 an wird schnell klar, das sich der Benutzer Yusuf Dikmenoglu in der OU „IT“ befindet.

Löscht man jetzt das Benutzerobjekt Yusuf Dikmenoglu, bleibt das Objekt weiterhin in der Zeile 3702 bestehen. Der Wert in der Spalte PDNT, sprich die Beziehung zum übergeordneten Objekt ändert sich jedoch! Das übergeordnete Objekt des gelöschten Benutzerobjekts Yusuf Dikmenoglu ist jetzt nicht mehr die OU „IT“, sondern der Container Deleted Objects in der Domänenpartition.



Wie zu erkennen ist wurde der Wert in der Spalte PDNT im gelöschten Benutzerobjekt Yusuf Dikmenoglu, von 3697 auf 1802 geändert.

Was an dieser Stelle auch zu erkennen ist, der Relative Distinguished Name (RDN) des gelöschten Benutzerobjekts hat einen eindeutigen Namen erhalten. Das gelöschte Objekt erhält intern den Namen <alterRDN>DEL:<objectGUID>. Durch das Hinzufügen der objectGUID ist sichergestellt, dass das Objekt auch im gelöschten Status einen einmaligen Namen innerhalb der AD-Datenbank besitzt und somit eindeutig zu identifizieren ist. Das ist auch notwendig, denn wenn es ein zweites Benutzerobjekt Yusuf Dikmenoglu geben würde das ebenfalls gelöscht wird, müssen beide Objekte im Container Deleted Objects identifiziert werden können. Diese Vorgehensweise ist insbesondere für das wiederherstellen des Tombstones oder aus dem AD-Papierkorb zwingend notwendig!

 

Weitere Informationen:
Die unterschiedliche Größe der AD-Datenbank
Domänencontroller vergleichen
Phantome im Active Directory

Sunday, July 04, 2010 2:06:25 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Schema  | 
 Wednesday, June 23, 2010

Anlässlich des Erscheinens der aktuellen ADMT Version 3.2 findet ihr hier eine Übersicht die aufzeigt:

  • Welche ADMT Version sich auf welchem Serverbetriebssystem installieren lässt.
  • Mit welcher ADMT Version man von welcher Quell-Domäne zu welcher Ziel-Domäne migrieren kann.
  • Auf welchen Systemen sich der ADMT Agent installieren lässt.

 

ADMT Version

OS

Kann installliert werden auf

Quell-Domäne

Ziel-Domäne

ADMT Agent kann installiert werden auf

ADMT 3.2

Windows Server 2008 R2

ü (nicht auf RODC und Server Core)

ü

ü

ü

Windows Server 2008 

X

ü

ü

ü

Windows Server 2003

X

ü

ü

ü

Windows 2000 Server

X

X

X

X

Windows NT Server 4.0

X

X

X

X

Windows 7

X

X

X

ü

Windows Vista

X

X

X

ü

Windows XP

X

X

X

ü

Windows 2000 Professional

X

X

X

X

ADMT Version

OS

Kann installliert werden auf

Quell-Domäne

Ziel-Domäne

ADMT Agent kann installiert werden auf

ADMT 3.1

Windows Server 2008 R2

X

X

ü

ü

Windows Server 2008 

ü (nicht auf RODC und Server Core)

ü

ü

ü

Windows Server 2003

X

ü

ü

ü

Windows 2000 Server

X

ü

ü

ü

Windows NT Server 4.0

X

X

X

X

Windows 7

X

X

X

ü

Windows Vista

X

X

X

ü

Windows XP

X

X

X

ü

Windows 2000 Professional

X

X

X

ü

ADMT Version

OS

Kann installliert werden auf

Quell-Domäne

Ziel-Domäne

ADMT Agent kann installiert werden auf

ADMT 3.0

Windows Server 2008 R2

X

X

X

X

Windows Server 2008 

X

X

X

X

Windows Server 2003

ü

ü

ü

ü

Windows 2000 Server

X

ü

ü

ü

Windows NT Server 4.0

X

ü

X

ü

Windows 7

X

X

X

X

Windows Vista

X

X

X

X

Windows XP

X

X

X

ü

Windows 2000 Professional

X

X

X

ü

ADMT Version

OS

Kann installliert werden auf

Quell-Domäne

Ziel-Domäne

ADMT Agent kann installiert werden auf

ADMT 2.0

Windows Server 2008 R2

X

X

X

X

Windows Server 2008 

X

X

X

X

Windows Server 2003

ü

ü

ü

ü

Windows 2000 Server

ü

ü

ü

ü

Windows NT Server 4.0

X

ü

X

ü

Windows 7

X

X

X

X

Windows Vista

X

X

X

X

Windows XP

X

X

X

ü

Windows 2000 Professional

X

X

 

X

 

 

Weitere Informationen:
Eine Domänenmigration durchführen
Einen Domänensplitt durchführen
ADMT Version 3.1
Benutzermigration mit ADMT v3: How-To
Den ersten Windows Server 2008 R2 DC zur Gesamtstruktur hinzufügen
Active Directory Migration Tool v.2.0
Password Export Server version 3.1 (x86)
Password Export Server version 3.1 (x64)

Wednesday, June 23, 2010 12:58:31 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Migration  | 
 Saturday, June 19, 2010

Seit der Veröffentlichung von Windows Server 2008 R2 konnte die bis dahin aktuelle ADMT Version 3.1 nicht auf einem Windows Server 2008 R2 installiert werden. Möchte man die bestehende Windows 2000, Windows Server 2003 oder Windows Server 2008 Umgebung mit ADMT in eine Windows Server 2008 R2 Domäne migrieren, muss dazu die ADMT Version 3.1 auf einem Windows Server 2008 installiert werden.

Nun hat aber Redmond die ADMT Version 3.2 veröffentlicht. Diese Version lässt sich ausschließlich auf einem Windows Server 2008 R2 installieren.

Active Directory Migration Tool version 3.2


Das aktualisierte ADMT-Handbuch findet man hier:

Active Directory Migration Tool (ADMT) Guide: Migrating and Restructuring Active Directory Domains


Mit ADMT 3.2 können Migrationen von folgenden Quell-Domänen durchgeführt werden:

- Windows Server 2003
- Windows Server 2008
- Windows Server 2008 R2


Als Ziel-Domänen werden ebenfalls diese unterstützt:

- Windows Server 2003
- Windows Server 2008
- Windows Server 2008 R2


Wie unschwer zu erkennen ist, kann man ADMT 3.2 nicht für eine Migration von Windows 2000 verwenden!
Wer eine Windows 2000 Domäne migrieren möchte, der muss ADMT 3.1 verwenden.

ADMT 3.2 lässt sich wie schon ADMT 3.1 nicht auf einem Server Core oder RODC installieren!

Wer eine Migration mit diesem Werkzeug durchgeführt hat, weiß es zu schätzen! Vor allem da es kostenlos von Microsoft zur Verfügung gestellt wird.

Viel Erfolg bei euren Migrationen! :-)

 

Weitere Informationen:
Eine Domänenmigration durchführen
ADMT Version 3.1
Einen Domänensplitt durchführen

Saturday, June 19, 2010 9:16:22 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Migration  | 
 Sunday, May 30, 2010

Mit Windows Server 2008 führte Microsoft eine neue Funktion ein mit der es möglich ist, eine Momentaufnahme (im englischen Snapshot genannt) des Active Directory (AD) im laufenden Betrieb auf einem DC zu erstellen und das sogar ohne den Betrieb zu beeinflussen. Ein AD-Snapshot kann dann zu Analyse- und Vergleichszwecken bereitgestellt werden. Aber auch zum Begutachten eines früheren Datenbestands eignet sich diese Technik hervorragend. Des Weiteren hat der Administrator mit dieser Funktion die Möglichkeit, ohne den DC im Modus Verzeichnisdienste wiederherstellen starten zu müssen, Daten aus dem AD-Snapshot zu exportieren und in der produktiven Umgebung zu importieren. Dabei ist lediglich ein Lese- und kein Schreibzugriff auf ein AD-Snapshot möglich! Mit dieser Technik die auf dem Volumenschattenkopiedienst (VSS) beruht, kann man in wenigen Augenblicken auf einfache Weise, punktgenaue AD-Snapshots der lokalen Kopie der AD-Datenbank (NTDS.dit) erstellen. Genau genommen wird ein Snapshot des gesamten Volumes erstellt, auf der sich die AD-Datenbank samt -Protokolle und dem SYSVOL-Verzeichnis befindet. Dabei können AD-Snapshots manuell oder automatisiert auf DCs, die mindestens unter Windows Server 2008 laufen erstellt werden. Der Domänenfunktionsmodus hat keine Relevanz.

Es gilt zu beachten, dass ein AD-Snapshot keine vollständige Kopie der AD-Datenbank enthält! Vielmehr stellt ein AD-Snapshot eine Sammlung von Datenträgerblöcken in der AD-Datenbank dar, die seit dem letzten AD-Snapshot geändert wurden. Durch zusammenfügen der Blöcke mit der lokalen Kopie der AD-Datenbank, kann der Volumenschattenkopiedienst die lokale Verzeichnisdatenbank zum Zeitpunkt der Erstellung des Snapshots darstellen.

Ein AD-Snapshot wird mit dem Kommandozeilentool NTDSUTIL erstellt. Man könnte zwar auch ein Snapshot im Betriebssystem erstellen, doch nur wenn das AD-Snapshot mit NTDSUTIL erstellt wird ist sichergestellt, dass die AD-Datenbank konsistent ist!

AD-Snapshots die mit Windows Server 2008 R2 fortgeführt werden helfen dem Administrator zu bestimmen, welche AD-Sicherung die gewünschten wiederherzustellenden Daten enthält. Auch wenn man lediglich überprüfen möchte, welche Werte ein Objekt bzw. ein Attribut vor einer Änderung hatte, eignet sich dieses Verfahren. In den AD Versionen vor Windows Server 2008 muss der Administrator mehrere Sicherungssätze rücksichern um zu bestimmen, welche Sicherung die wiederherzustellenden Daten enthält. Dazu ist es zwingend notwendig, dass der DC im Modus Verzeichnisdienst-wiederherstellen neu gestartet wird. Der Nachteil an den vorherigen AD-Versionen ist auch, dass es keine Möglichkeit gibt die AD-Daten die zu verschiedenen Zeitpunkten erstellt wurden zu vergleichen.

Aber: Ein AD-Snapshot ist nicht zur alleinigen Datensicherung geeignet! Er ist nur als Ergänzung gedacht! Denn aus einem AD-Snapshot können Daten bzw. Objekte nur sehr eingeschränkt mit Bordmittel (mit CSVDE oder LDIFDE) oder aufwändig mit Skripts exportiert und in die produktive AD-Umgebung importiert werden.

 


Ein AD-Snapshot erstellen

Für das Erstellen eines AD-Snapshots werden Domänen-Admin Rechte benötigt. Auf einem DC wird ein AD-Snapshot in der Kommandozeile mit NTDSUTIL wie folgt erstellt:

C:\>NTDSUTIL
NTDSUTIL: Snapshot
Snapshot: Activate Instance NTDS
Aktive Instanz wurde auf "NTDS" festgelegt.
Snapshot: Create
Snapshot wird erstellt...
Der Snapshotsatz {5b9dae90-de11-43b2-a8bb-e842b44ffb62} wurde erfolgreich generiert.
Snapshot:


Ein AD-Snapshot lässt sich auch mit einem Einzeiler erzeugen. Fügt man den folgenden Befehl z.B. in eine Batchdatei und lässt in einem geplanten Task die Batch ausführen (mit entsprechenden Rechten), kann man so das Erstellen von AD-Snapshots zusätzlich zur regelmäßigen System State-Sicherung automatisieren:

C:\>NTDSUTIL Snapshot "Activate Instance NTDS" Create quit quit

NTDSUTIL: Snapshot

Snapshot: Activate Instance NTDS

Aktive Instanz wurde auf "NTDS" festgelegt.

Snapshot: Create

Snapshot wird erstellt...

Der Snapshotsatz {5057fdd0-a0fb-427d-b71a-c36a4d22f9c3} wurde erfolgreich generiert.

Snapshot: quit

NTDSUTIL: quit

 
C:\>



Wenn ein AD-Snapshot erstellt wurde, wird in der Ereignisanzeige unter der Serverrolle Active Directory-Domänendienste die Ereignis-ID 2001 mit der Beschreibung
NTDS (528) NTDSA: Schattenkopieinstanz 2: Fixierung wurde gestartet. protokolliert.

 


Die erstellten AD-Snapshots anzeigen

Alle verfügbaren AD-Snapshots die gegenwärtig vom VSS auf einem DC verwaltet werden, lassen sich mit NTDSUTIL wie folgt Anzeigen:

C:\>NTDSUTIL

NTDSUTIL: Snapshot

Snapshot: List All

 1: 2010/05/01:15:23 {ad2cf6fc-6fc4-420b-9d43-104196d67a57}

 2:   C: {41d34055-d61f-41f3-84d7-81b7b4016a8f}

 

 3: 2010/05/02:13:39 {f9675e58-54bb-4a51-be21-60c81c44c286}

 4:   C: {110b7077-5c11-4b93-99e2-31411f6ebd8d}

 

 5: 2010/05/03:21:21 {f747533a-7fd7-4915-a01d-6f59b1f31cb1}

 6:   C: {df0a7738-5d2d-4102-b006-e0c8cc712650}

Snapshot:


Die Ausgabe in diesem Beispiel stellt jeden AD-Snapshot in zwei Zeilen dar. Wie in dem oberen Beispiel zu sehen ist, wurden drei AD-Snapshots erstellt. Sind die AD-Protokolle auf einer anderen Partition gespeichert als die AD-Datenbank, wird eine weitere Zeile angezeigt.

 


Ein AD-Snapshot löschen

Auch wenn man genau weiß welchen AD-Snapshot man löschen möchte, muss man sich zuerst mit List All auf der Snapshot Ebene in NTDSUTIL alle verfügbaren AD-Snapshots anzeigen lassen. Lässt man sich die verfügbaren AD-Snapshots vorher nicht anzeigen und versucht mit einem Einzeiler direkt ein AD-Snapshot zu löschen, so kommt es zu dieser Fehlermeldung:

C:\>NTDSUTIL Snapshot "Delete 4"

NTDSUTIL: Snapshot

Snapshot: Delete 4

Ungültiger Snapshotindex 4.
Snapshot:



Erst wenn man sich alle bestehenden AD-Snapshots anzeigen lässt, kann man ein AD-Snapshot wie folgt löschen:

C:\>NTDSUTIL Snapshot "List All"

NTDSUTIL: Snapshot

Snapshot: List All

 1: 2010/05/01:15:23 {ad2cf6fc-6fc4-420b-9d43-104196d67a57}

 2:   C: {41d34055-d61f-41f3-84d7-81b7b4016a8f}

 

 3: 2010/05/02:13:39 {f9675e58-54bb-4a51-be21-60c81c44c286}

 4:   C: {110b7077-5c11-4b93-99e2-31411f6ebd8d}

 

 5: 2010/05/03:21:21 {f747533a-7fd7-4915-a01d-6f59b1f31cb1}

 6:   C: {df0a7738-5d2d-4102-b006-e0c8cc712650}

 

Snapshot: Delete 4

Der Snapshot {110b7077-5c11-4b93-99e2-31411f6ebd8d} wurde gelöscht.
Snapshot:



Zum Löschen eines AD-Snapshots kann man einen der beiden Zeilen (die zusammen ein AD-Snapshot darstellen) angeben. Mit
Delete 3 kann man ebenfalls dasselbe AD-Snapshot löschen. Anstatt der Nummern kann man auch die GUID angeben. Mit Delete f9675e58-54bb-4a51-be21-60c81c44c286 oder Delete 110b7077-5c11-4b93-99e2-31411f6ebd8d löscht man ebenso dasselbe AD-Snapshot.

Alle AD-Snapshots auf einmal kann man in der Snapshot Ebene mit Delete * löschen.

 


Ein AD-Snapshot verbinden

Möchte man auf ein AD-Snapshot zugreifen, muss man diesen im ersten Schritt verbinden. Im zweiten Schritt muss dann das verbundene AD-Snapshot mit dem Datenbankbereitstellungstool DSAMAIN bereitgestellt werden. Um ein AD-Snapshot zu verbinden, gilt es entweder die Nummer oder die GUID bei Mount anzugeben. Doch zuerst müssen auch an dieser Stelle mit List All alle verfügbaren AD-Snapshots aufgerufen werden. Erst danach lässt sich ein AD-Snapshot folgendermaßen verbinden:

C:\>NTDSUTIL Snapshot „List All“

NTDSUTIL: Snapshot

Snapshot: List All

 1: 2010/05/01:15:23 {ad2cf6fc-6fc4-420b-9d43-104196d67a57}

 2:   C: {41d34055-d61f-41f3-84d7-81b7b4016a8f}

 

 3: 2010/05/03:21:21 {f747533a-7fd7-4915-a01d-6f59b1f31cb1}

 4:   C: {df0a7738-5d2d-4102-b006-e0c8cc712650}

 

Snapshot: Mount 1

Der Snapshot {41d34055-d61f-41f3-84d7-81b7b4016a8f} wird als C:\$SNAP_201005011523_VOLUMEC$\ bereitgestellt.
Snapshot:



Nach dem das AD-Snapshot verbunden ist, wird dadurch auf dem
%Systemdrive% Laufwerk, beginnend mit der Bezeichnung $SNAP<Erstellungsdatum und Uhrzeit> der AD-Snapshot im Dateisystem eingeblendet. Es ist auch möglich, mehrere AD-Snapshots gleichzeitig zu verbinden. Hat man also mit Mount 1 das erste AD-Snapshot verbunden, kann man anschließend mit Mount 3 das nächste AD-Snapshot zeitgleich verbinden, ohne vorher das erste AD-Snapshot zu trennen. Aus Lastgründen ist es jedoch sinnvoll, nicht mehr als zwei AD-Snapshots gleichzeitig zu verbinden bzw. bereitzustellen!

Es ist auch möglich, die AD-Datenbank aus einer System State-Sicherung zu verbinden und anschließend bereitzustellen. Dazu muss die AD-Datenbank an einen alternativen Ort wiederhergestellt werden.

 


Die verbundenen AD-Snapshots anzeigen

Auf der Snapshot Ebene kann man mit List Mounted alle verbundenen AD-Snapshots auflisten:

C:\>NTDSUTIL Snapshot "List Mounted"

NTDSUTIL: Snapshot

Snapshot: List Mounted

 1: 2010/05/01:15:23 {ad2cf6fc-6fc4-420b-9d43-104196d67a57}

 2:   C: {41d34055-d61f-41f3-84d7-81b7b4016a8f} C:\$SNAP_201005011523_VOLUMEC$\

 

 3: 2010/05/03:21:21 {f747533a-7fd7-4915-a01d-6f59b1f31cb1}

 4:   C: {df0a7738-5d2d-4102-b006-e0c8cc712650}

C:\$SNAP_201005032121_VOLUMEC$\

 
Snapshot:



Wie in diesem Beispiel zu sehen ist, sind zwei AD-Snapshots verbunden.

 


Ein verbundenes AD-Snapshot trennen

Um ein AD-Snaphot zu trennen, muss man auch an dieser Stelle zuerst alle verbundenen AD-Snapshots mit List Mounted anzeigen lassen, ehe man ein oder alle verbundenen AD-Snapshots trennen kann.

C:\>NTDSUTIL Snapshot "List Mounted"

NTDSUTIL: Snapshot

Snapshot: List Mounted

 1: 2010/05/08:14:35 {95c31025-b317-4df6-a7a5-767d0ddbc771}

 2:   C: {65971d9e-5608-46a9-ab92-043d73b4a6af} C:\$SNAP_201005081435_VOLUMEC$\

 

 3: 2010/05/08:17:11 {fef7ad30-a129-466c-9a37-09f2f4e50d84}

 4:   C: {8fcee771-b002-46aa-a878-7e2d9519eaf3} C:\$SNAP_201005081711_VOLUMEC$\

 

Snapshot: Unmount 1

Die Bereitstellung des Snapshots {65971d9e-5608-46a9-ab92-043d73b4a6af} wurde au

fgehoben.

Snapshot:


Sind mehrere AD-Snapshots verbunden, kann man alle auf einmal in der Snapshot Ebene mit Unmount * gleichzeitig trennen.

 


Ein AD-Snapshot mit dem Datenbankbereitstellungstool DSAMAIN bereitstellen

Damit man auf ein AD-Snapshot mit dem man sich bereits verbunden hat zugreifen kann, muss dieser parallel zur lokalen Kopie der AD-Datenbank auf dem DC als zusätzlicher Verzeichnisdienst geladen werden. Deshalb sollte man in einer separaten Eingabeaufforderung mit dem Datenbankbereitstellungstool DSAMAIN, das verbundene AD-Snapshot das mithilfe von NTDSUTIL erstellt wurde bereitstellen. Anschließend kann man dann mit einem LDAP-Tool wie z.B. Active Directory-Benutzer und -Computer, ADSIEdit oder LDP den AD-Snapshot wie jeden anderen aktiven DC durchsuchen oder mit CSVDE bzw. LDIFDE Inhalte exportieren.

Damit das AD-Snapshot bereitgestellt werden kann, muss dieser Befehl in der Kommandozeile eingegeben werden: DSAMain -DBPath <Pfad zur NTDS.dit> -LDAPPORT <ausgewählter LDAP-Port>. Bei dem Parameter -DBPath muss der Pfad zur AD-Datenbank das sich im verbundenen AD-Snapshot befindet angegeben werden. Bei -LDAPPort muss mindestens ein Port spezifiziert werden, über den die parallele AD-Instanz zur Verfügung gestellt wird. Standardmäßig benötigt das AD vier LDAP-Ports, nämlich 389 für LDAP, 636 für LDAP über SSL/TLS, 3268 für den globalen Katalog (GC) und 3269 für den GC über SSL. Da standardmäßig diese vier Ports von dem eigentlichen produktiven AD auf einem DC benutzt werden, ist es zwingend notwendig für das Bereitstellen des AD-Snapshots einen anderen, eigens ausgewählten verfügbaren Port zu wählen. Gibt man lediglich für den erforderlichen LDAPPort den Port 30000 an, wird automatisch für LDAPS der Port 30001, für den GC 30002 und für den GC über SSL der Port 30003 reserviert.


 


Der Befehl zum Bereitstellen eines AD-Snapshots muss mindestens so aussehen:

DSAMain -DBPath C:\$SNAP_201005091521_VOLUMEC$\Windows\NTDS\NTDS.dit -LDAPPort 30000


Möchte man alle benötigten LDAP-Ports selbst spezifizieren, so lautet der Befehl wie folgt:

DSAMain -DBPath C:\$SNAP_201005091521_VOLUMEC$\Windows\NTDS\NTDS.dit -LDAPPort 30000 -sslPort 30100 -gcPort 30200 -gcSslPort 30300



Wenn ein AD-Snapshot bereitgestellt wurde, wird in der Ereignisanzeige unter der Serverrolle Active Directory-Domänendienste die Ereignis-ID 102 mit der Beschreibung NTDS (2924) NTDSA: Das Datenbankmodul (6.01.7600.0000) hat eine neue Instanz gestartet (0).protokolliert. Wird die Bereitstellung aufgehoben, so wird die Ereignis-ID 103 verzeichnet.

Nach durchgeführter Arbeit, kann die Bereitstellung der zusätzlichen AD-Instanz mit CTRL+C beendet werden und man sollte noch mit Unmount * das bzw. die verbundenen AD-Snapshots trennen.

 


Auf den AD-Snapshot zugreifen

  • Wenn der AD-Snapshot bereitgestellt ist, kann man ihn mit der MMC dsa.msc betrachten, in dem man zuerst auf den Eintrag Active Directory-Benutzer und -Computer [FQDN des DCs] mit einem Rechtsklick die Option Domänencontroller ändern… aufruft. Danach wählt man die Option Bestimmter Domänencontroller oder AD LDS-Instanz aus und trägt den Computernamen, FQDN oder die IP-Adresse des DCs ein, auf dem der AD-Snapshot bereitgestellt wurde. Dabei ist zu beachten: Egal welches Tool verwendet wird, es ist zwingend notwendig das man den für die zusätzliche AD-Instanz vergebenen LDAP-Port stets mit angibt!





    Die MMC dsa.msc eignet sich ideal um den AD-Datenbestand zum Erstellungszeitpunkt des AD-Snapshots zu durchforsten, aber nicht um Inhalte zu exportieren um diese dann in die produktive Umgebung zu importieren.


  • Einen Export kann man mit Bordmittel ebenfalls durchführen, nämlich mit CSVDE und LDIFDE. Natürlich lassen sich auch durch eigene Skripte Daten exportieren. Ein Export aller Benutzer mit lediglich den gewünschten Attributen aus einer bestimmten OU, könnte mit CSVDE wie folgt aussehen:

    CSVDE -S <DC> -T <vergebener LDAP-Port> -D „OU=<OU>,DC=Domäne,DC=de“ -R „(sAMAccountType=805306368)“ -L “<gewünschteAttribute>” -P Subtree -M -N -U -F „C:\ADFoto.csv“


    Nach dem Export kann man die CSV-Datei zur weiteren Bearbeitung in Excel importieren. Hat man die Bearbeitung der Datendatei fertiggestellt, kann man dann mit dem folgenden Befehl den Import in der produktiven AD-Umgebung durchführen:

    CSVDE -I –K -F „C:\Datendatei.csv“


    Beim Import in der produktiven AD-Umgebung mit CSVDE gilt es jedoch zu beachten, dass man dieses Kommandozeilentool nicht für die Bearbeitung bestehender Objekte einsetzen kann! Zum Bearbeiten bestehender Objekte bietet sich das Kommandozeilentool LDIFDE an, dass ähnlich wie CSVDE funktioniert. Mit LDIFDE könnte man einen Export aus dem AD-Snapshot folgendermaßen gestalten:

    LDIFDE -S <DC> -T <vergebener LDAP-Port> -D „OU=<OU>,DC=Domäne,DC=de“ -R „(sAMAccountType=805306368)“ -L “<gewünschteAttribute>” -P Subtree -M -N -F „C:\Export.ldf“


    Auch mit diesem Befehl werden alle Benutzer aus der angegebenen OU, mit den gewünschten Attributen aus der Momentaufnahme exportiert. Hat man die gewünschten Informationen aus dem AD-Snapshot exportiert, kann man diese wie folgt in die produktive Umgebung importieren:

    LDIFDE -I -K -Z -F „C:\Import.ldf“


    LDIFDE - LDAP Data Interchange Format Data Exchange


  • Auch mit den ds*-Tools kann man auf den AD-Snapshot zugreifen. Dabei muss man lediglich den Parameter -S mit dem Wert <FQDN des DCs>:<vergebener LDAP-Port> zusätzlich zur Abfrage angeben. Eine Abfrage die alle Benutzer einer bestimmten OU anzeigt, sieht so aus:

    Dsquery * "OU=<OU>,DC=Domäne,DC=de" -Filter "(sAMAccountType=805306368)" -Attr * -Server <FQDN des DCs>:30000 -Limit 0


  • Natürlich kann man auch mit dem State of the Art Werkzeug, nämlich der AD-PowerShell auf die Momentaufnahme zugreifen und Daten daraus exportieren. Doch bevor man mit der AD-PowerShell auf die Momentaufnahme zugreifen kann, muss wie gehabt zuerst in NTDSUTIL das AD-Snapshot verbunden und mit DSAMain bereitgestellt werden. Ist der AD-Snapshot bereitgestellt, muss man in der AD-PowerShell als nächstes ein AD-PowerShell-Laufwerk erstellen. Mit dem folgenden AD-PowerShellbefehl wird ein Laufwerk, basierend auf dem AD-Snapshot erstellt:

    New-PSDrive -Name <frei wählbarer Laufwerksname> -PSProvider ActiveDirectory -Root "" -Server <DC.Domäne.de>:<vergebener LDAP-Port>


    Hat man das AD-PowerShell-Laufwerk erstellt, muss man mit cd <vergebener Laufwerksname>: auf das Laufwerk wechseln.






    Anschließend kann man mit
    cd "<DN der Domänenpartition>" zur Domänenpartition, also auf die Verzeichnispartition in der die Benutzer-, Gruppen- und Computerkonten enthalten sind wechseln.





    Nun kann man sich mit den entsprechenden AD-PowerShellabfragen die gewünschten Informationen ausgeben lassen oder im Zusammenhang mit dem Cmdlet Export-CSV, einen Export der gewünschten Daten in eine CSV-Datei durchführen. Z.B. kann man alle Benutzer aus einer OU mit allen Eigenschaften wie folgt exportieren:

    Get-ADUser -Filter * -Searchbase "OU=<OU>,DC=Domäne,DC=de" -Properties * | Export-Csv C:\Export.txt -NoTypeInformation


    Man muss aber nicht zwangsläufig zuerst ein neues AD-PowerShell-Laufwerk erstellen! Stattdessen kann man auch, nach dem der AD-Snapshot mit DSAMain bereitgestellt wurde, alle Benutzer aus einer OU mit allen Eigenschaften wie folgt exportieren:

    Get-ADUser -Filter * -Searchbase "OU=<OU>,DC=Domäne,DC=de" -Properties * -Server <FQDN des DCs>:<vergebener LDAP-Port> | Export-Csv C:\Export.txt -NoTypeInformation



    Massenimporte- und -exporte mit CSVDE und der AD-PowerShell durchführen

    AD-PowerShell Befehle

 


Nützliche Werkzeuge


Der ADExplorer

Ein hilfreiches Werkzeug im Zusammenhang mit AD-Snapshots stellt der ADExplorer dar. Mit diesem Tool ist es unter anderem zum einen möglich, AD-Snapshots auf Knopfdruck zu erstellen und zum anderen, zwei AD-Snapshots miteinander zu vergleichen. Dabei kann jedoch ein AD-Snapshot weder mit der aktuellen AD-Datenbank, noch mit mehreren AD-Snapshots gleichzeitig verglichen werden! Was das Erstellen und verwalten eines AD-Snapshots mit dem ADExplorer betrifft, gestaltet sich das mit dem Tool bemerkenswert einfacher als mit NTDSUTIL!

Zum Erstellen eines AD-Snapshots startet man den ADExplorer und trägt im Feld Connect to den DC ein mit dem eine Verbindung hergestellt werden soll. In den Feldern User und Password gibt man die entsprechenden Benutzerdaten ein. Führt man stattdessen den ADExplorer direkt auf einem DC aus, muss keins der Felder ausgefüllt werden. Dann verbindet sich der ADExplorer automatisch mit dem DC auf dem es ausgeführt wird und verwendet die Benutzerinformationen, mit dem das Tool gestartet wurde. Nach dem sich der ADExplorer mit dem DC, genauer mit der AD-Datenbank verbunden hat, klickt man entweder in der Symbolleiste auf das Diskettensymbol oder im Menü unter File auf Create Snapshot… um eine Momentaufnahme der AD-Datenbank zu erstellen. Im Feld Specify the path to the snapshot file muss der Pfad inklusive des Dateinamen angegeben werden, in dem das AD-Snapshot erstellt werden soll. Bei dem Dateinamen ist zwingend darauf zu achten, dass die Dateiendung DAT lautet. Zusätzlich kann im Feld Enter an optional description for the snapshot eine Beschreibung angegeben werden, was aber nicht zwingend ist.



Die DAT-Datei die erstellt wurde kann nun auf ein anderes System, das keine Verbindung zur produktiven Umgebung hat transportiert und von dort aus mit dem ADExplorer analysiert werden. Das ist auf der einen Seite zwar ein wesentlicher Vorteil gegenüber NTDSUTIL, hat aber auch auf der anderen Seite einen gravierenden Nachteil! Das AD-Snapshot das mit NTDSUTIL erstellt wurde benötigt die Verbindung zur produktiven Umgebung, um die Momentaufnahme rekonstruieren zu können. Somit kann das AD-Snapshot nicht einfach kopiert und irgendwohin transportiert werden. Das AD-Snapshot das mit dem ADExplorer erstellt wurde benötigt hingegen keine Verbindung zur produktiven Umgebung und befindet sich in genau einer DAT-Datei. Das stellt natürlich ein hohes Sicherheitsrisiko dar! Deshalb ist bei den AD-Snapshots die mit dem ADExplorer erstellt wurden die gleiche Sicherheit zu gewähren, wie der physikalische Zugriff auf DCs oder den Datensicherungen!

Um auf ein AD-Snapshot (die DAT-Datei) zuzugreifen, startet man den ADExplorer, wählt die Option Enter the path of a previous snapshot to load aus und trägt den Pfad zur DAT-Datei ein oder navigiert dorthin. Ist man mit dem ADExplorer bereits mit dem produktiven AD verbunden, kann man sich zusätzlich mit ein oder mehreren AD-Snapshots (nacheinander) unter File - Connect… verbinden. Das eignet sich ideal für das schnelle überprüfen von vorherigen Datenbeständen. Hat man z.B. bei ein oder mehreren Objekten in der produktiven Umgebung Werte versehentlich verändert, kann man mit dem ADExplorer nachschauen welche Werte vorher eingetragen waren, in dem man sich mit dem produktiven AD und einem AD-Snapshot verbindet.

Das Löschen eines AD-Snapshots das mit dem ADExplorer erstellt wurde gestaltet sich ebenfalls einfacher als mit der NTDSUTIL-Variante. Es muss lediglich die DAT-Datei vom Dateisystem gelöscht werden.


Möchte man zwei AD-Snapshots miteinander vergleichen, startet man den ADExplorer mit der Option Enter the path of a previous snapshot to load und gibt das Quell-AD-Snapshot an. Anschließend wählt man im Menü Compare - Compare Snapshot… und gibt im Feld Select an archive to compare to das Ziel-AD-Snapshot an. Sollen nur ausgewählte Klassen und bestimmte Felder bzw. Attribute miteinander verglichen werden, so muss man diese in den beiden unteren Bereichen auswählen.



Mit einem Klick auf Compare werden beide AD-Snapshots verglichen und wenn unterschiede vorhanden sind, werden diese angezeigt.


AD Explorer

 


Das Directory Service Comparison Tool (DSCT)

Ein weiteres nützliches Werkzeug, das mehr Funktionen als der ADExplorer bietet ist das DSCT. Die Beschreibung zu dem Tool sowie den Download findet man auf der folgenden Seite:

Directory Service Comparison Tool 2.0 B3

 


Fazit

Die AD-Snapshots sind eine hervorragende Technik, die die AD-Sicherung sowie -Wiederherstellung ergänzt. Zum Wiederherstellen von AD-Informationen muss der DC nicht erst im Modus Verzeichnisdienste wiederherstellen gestartet werden. Die Wiederherstellung kann im laufenden Betrieb, ohne Beeinträchtigung, mit der AD-Snapshot Funktion erfolgen. Auch für das Vergleichen verschiedener Datenbestände eignet sich diese Technik. Außerdem können aus einem AD-Snapshot gezielt (einzelne) Werte exportiert und in die produktive Umgebung importiert werden. Gerade ab Windows Server 2008 R2 mit dem AD-Papierkorb und der bestehenden AD-Sicherung rundet diese Technik die AD-Wiederherstellung ab! Denn mit dem aktivierten AD-Papierkorb können zwar gelöschte Objekte ohne Datenverlust wiederhergestellt werden, nicht jedoch einzelne Werte. Dazu eignet sich ein AD-Snapshot.

 

 

Weitere Informationen:
Der Active Directory-Papierkorb im Windows Server 2008 R2
Active Directory Wiederherstellung
Der Container Deleted Objects

Sunday, May 30, 2010 9:10:23 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Wiederherstellung  | 
 Sunday, May 16, 2010

Wer für die Administration von Gruppenrichtlinien in einem Windows Netzwerk zuständig ist, der sollte und wird die Gruppenrichtlinien-Verwaltungskonsole (auf Englisch: Group Policy Management Console, kurz GPMC) kennen. Installiert man sich unter Windows XP und Windows Server 2003 die GPMC das separat heruntergeladen werden muss, stehen einem 32 Skripte im Verzeichnis %PROGRAMFILES%\GPMC\Scripts zur Verfügung. Mit diesen GPMC-Skripts kann man viele alltägliche Gruppenrichtlinien-Aufgaben leicht und automatisiert durchführen. Viele Gruppenrichtlinien-Administratoren werden diese Skripte zu schätzen wissen.

Doch mit Vista und Windows Server 2008 stehen die GPMC-Skripte erst mal nicht zur Verfügung. Die GPMC steht zwar ab Vista nach der Installation der Remote Server Administration Tools (RSAT) und unter Windows Server 2008, erst nach Aktivierung der Gruppenrichtlinienverwaltung in den Features weiterhin zur Verfügung, doch die GPMC Skripte fehlen hingegen. Stattdessen stellt Microsoft die GPMC Skripte als separaten Download für Vista und Windows Server 2008 zur Verfügung. Nach der Installation stehen die GPMC Skripte in gewohnter Weise zur Verfügung.

GPMC Sample Scripts


Unter Windows 7 und Windows Server 2008 R2 steht die GPMC ohne die GPMC Skripte in den RSAT auch zur Verfügung. Es gibt jedoch keinen separaten Download der GPMC Skripte für Windows 7 und Windows Server 2008 R2. Aber die GPMC Skripte für Vista und Windows Server 2008 lassen sich auch unter Windows 7 und Windows Server 2008 R2 weiterhin nutzen. Wer allerdings für die Administration der Gruppenrichtlinien zukunftsorientiert sein möchte, der nutzt die PowerShell! Microsoft stellt 25 Cmdlets allein für Gruppenrichtlinien bereit, mit denen weitestgehend die gleichen Administrationsaufgaben durchgeführt werden können wie mit den GPMC Skripts. Die GPO Cmdlets die in der Zukunft erweitert werden, sind die Nachfolger der GPMC Skripts.

Damit die 25 GPO Cmdlets zur Verfügung stehen, müssen diese zuerst mit dem PowerShellbefehl Import-Module GroupPolicy geladen werden. Das Laden der GPO Cmdlets muss sowohl in der AD-PowerShell, als auch in der Windows PowerShell v2 durchgeführt werden. Man kann sich natürlich ein PowerShell-Profil erstellen, damit beim Starten der AD-/PowerShell die GPO Cmdlets beim Öffnen der PowerShell Konsole automatisch geladen werden. Nach dem Import kann man sich die folgenden 25 GPO Cmdlets mit Get-Command *-GP* anzeigen lassen. Startet man dagegen die Konsole Windows PowerShell Modules, wird beim Starten der Konsole unter anderem automatisch das GPO-Modul geladen.

Die 25 GPO Cmdlets sind:

  • Backup-GPO: Mit diesem Cmdlet sichert man das angegebene Gruppenrichtlinienobjekt (GPO) oder alle Gruppenrichtlinienobjekte in einer angegebenen Domäne in ein Sicherungsverzeichnis. Dabei muss das Sicherungsverzeichnis bereits existieren.

  • Copy-GPO: Dieses Cmdlet erstellt eine neue GPO und kopiert die Einstellungen aus der Quell-GPO in die neue GPO. Mit diesem Cmdlet kann eine GPO aus einer Domäne in eine andere Domäne innerhalb der gleichen Gesamtstruktur kopiert werden.

  • Get-GPInheritance: Informationen zur Gruppenrichtlinienvererbung für eine angegebene Domäne oder Organisationseinheit kann man sich mit diesem Cmdlet ausgeben lassen.

  • Get-GPO: Eine bestimmte GPO oder alle GPOs innerhalb einer Domäne kann man sich mit diesem Cmdlet anzeigen lassen.

  • Get-GPOReport: Hiermit wird ein Bericht im XML- oder HTML-Format generiert, in dem die Eigenschaften und Richtlinieneinstellungen für eine angegebene GPO oder für alle GPOs einer Domäne angezeigt werden. Dieses Cmdlet eignet sich ideal zu Dokumentationszwecken. Möchte man alle Richtlinieneinstellungen aller GPOs innerhalb der Domäne in eine HTML Datei exportieren, so gilt es diesen Befehl auszuführen: Get-GPOReport -All -Domain <Domäne.de> -ReportType HTML -Path C:\GPOReport\GPOReport.html. Das Zielverzeichnis muss bereits existieren, sonst erhält man eine Fehlermeldung.

  • Get-GPPermissions: Die Berechtigungen für einen oder mehrere Sicherheitsprinzipale kann man mit diesem Cmdlet in der angegebenen GPO abrufen.

  • Get-GPPrefRegistryValue: Dieses Cmdlet zeigt eine oder mehrere Registrierungseinstellungen die unterhalb der Computerkonfiguration oder der Benutzerkonfiguration in einer GPO getätigt wurden an.

  • Get-GPRegistryValue: Bei diesem Cmdlet werden eine oder mehrere registrierungsbasierte Richtlinieneinstellungen aus der Computerkonfiguration oder der Benutzerkonfiguration in einer GPO abgerufen.

  • Get-GPResultantSetOfPolicy: Mit diesem Cmdlet kann man die Richtlinienergebnissatz-Informationen für einen Benutzer, einen Computer oder für beide in eine Datei im HTML- oder XML-Format ausgeben lassen.

  • Get-GPStarterGPO: Ein bestimmtes oder alle Starter-GPOs werden mit diesem Cmdlet angezeigt.

  • Import-GPO: Dieses Cmdlet importiert die Einstellungen aus einer gesicherten GPO in die angegebene Ziel-GPO. Dabei kann sich das Ziel-GPO in einer anderen Domäne oder in einer anderen Gesamtstruktur befinden als die Sicherungs-GPO und muss vorher nicht existieren.

  • New-GPLink: Eine GPO wird auf eine Organisationseinheit (OU), einen AD-Standort oder auf die Domäne mit diesem Cmdlet verlinkt.

  • New-GPO: Eine neue GPO wird mit diesem Cmdlet erstellt.

  • New-GPStarterGPO: Mit diesem Cmdlet wird eine neue Starter-GPO erstellt.

  • Remove-GPLink: Dieses Cmdlet entfernt eine GPO-Verklinkung von einer OU, einem AD-Standort oder von der Domäne.

  • Remove-GPO: Eine GPO wird mit samt allen Verlinkungen, mit diesem Cmdlet gelöscht.

  • Remove-GPPrefRegistryValue: Eine oder mehrere Registrierungseinstellungen werden aus der Benutzerkonfiguration oder Computerkonfiguration innerhalb einer GPO mit diesem Cmdlet entfernt.

  • Remove-GPRegistryValue: Um eine oder mehrere Registrierungsbasierte Richtlinieneinstellungen aus der Benutzerkonfiguration oder Computerkonfiguration innerhalb einer GPO zu entfernen, muss dazu dieses Cmdlet verwendet werden.

  • Rename-GPO: Mit diesem Cmdlet kann man eine GPO umbenennen bzw. der GPO einen anderen Anzeigenamen zuweisen. Dabei bleibt die GUID der umbenannten GPO erhalten.

  • Restore-GPO: Dieses Cmdlet stellt eine GPO-Sicherung in der Domäne wieder her, in der sie ursprünglich gespeichert wurde. Ist die ursprüngliche Domäne oder die GPO nicht mehr in der Domäne vorhanden, tritt ein Fehler auf.

  • Set-GPInheritance: Die Vererbung einer GPO kann mit diesem Cmdlet deaktiviert werden. Oder die Deaktivierung der Vererbung für eine angegebene OU oder Domäne lässt sich ebenfalls mit diesem Cmdlet aufheben.

  • Set-GPLink: Die Eigenschaften einer GPO-Verknüpfung lassen sich mit diesem Cmdlet festlegen.

  • Set-GPPermissions: Die Berechtigungen einer GPO oder für alle GPOs innerhalb einer Domäne lassen sich mit diesem Cmdlet bearbeiten.

  • Set-GPPrefRegistryValue: Dieses Cmdlet konfiguriert eine Registrierungseinstellung unter der Benutzerkonfiguration oder der Computerkonfiguration in einer GPO.

  • Set-GPRegistryValue: Mit diesem Cmdlet konfiguriert man eine oder mehrere registrierungsbasierte Richtlinieneinstellungen unter der Benutzerkonfiguration oder der Computerkonfiguration in einer GPO.


Die Hilfe zu jedem einzelnen Cmdlet lässt sich mit Get-Help <Cmdlet> -Full anzeigen. Also z.B.: Get-Help Get-GPOReports -Full.


Auch an dieser Stelle zeigt sich: Die Zukunft spricht PowerShell! ;-)

 

Weitere Informationen:
Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008
AD-PowerShell Befehle

Sunday, May 16, 2010 11:07:59 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell | Gruppenrichtlinien  | 
 Sunday, May 09, 2010

Befinden sich alle Benutzer die alle aus einer bestimmten Gruppe entfernt werden sollen in der gleichen OU,
so kann man alle Benutzer in einem Schritt mit dem folgenden AD-PowerShell Befehl aus der Gruppe entfernen:

$Benutzer = Get-ADUser -Filter * -Searchbase "OU=<Benutzer>,DC=Domäne,DC=de"
Remove-ADGroupMember -identity <Gruppe> -Member $Benutzer -Confirm:0

Befinden sich in der OU in der sich die Benutzer befinden auch Benutzer, die nicht Mitglied der entsprechenden Gruppe sind, schlägt der Befehl fehl.


Wenn sich alle Benutzer die Mitglied der Gruppe "Consultants" sind in der OU "IT" befinden, so lautet der Befehl wie folgt:

$Benutzer = Get-ADUser -Filter * -Searchbase "OU=IT,DC=Domäne,DC=de"
Remove-ADGroupMember -identity Consultants -Member $Benutzer -Confirm:0

Dabei spielt es weder eine Rolle um welchen Gruppenbereich es sich dabei handelt (Global, Lokal (in Domäne), Universal),
noch ob es sich um eine Sicherheits- oder Verteilergruppe handelt.

 

Weitere Informationen:
AD-PowerShell Befehle

Sunday, May 09, 2010 4:21:16 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell  | 
 Sunday, May 02, 2010

Das Active Directory (AD) stets zu pflegen, ist eines der Aufgaben eines AD-Administrators. Mit der Zeit entstehen Leichen was die Computerkonten im AD betrifft. Clients die verschrottet wurden, sind vorher nicht aus der Domäne entfernt worden. Aber auch wenn Clients oder Mitgliedsserver aus der Domäne entfernt und zu einer Arbeitsgruppe (AG) hinzugefügt werden, wird nicht automatisch das Computerkonto im AD gelöscht. Es wird lediglich deaktiviert und bleibt im AD bestehen. Im Nachgang muss dann das Computerkonto manuell entfernt werden.

State oft the Art löscht man die Computerkonten mit der AD-PowerShell. Weitere Möglichkeiten findet man im folgenden Artikel:

Computerkonto löschen


# Alle deaktivierten Computerkonten, also alle Computer (Clients und Mitgliedsserver) die aus der Domäne entfernt und in eine AG hinzugefügt oder manuell deaktiviert wurden, werden mit diesem Befehl angezeigt:
Search-ADAccount -AccountDisabled -ComputersOnly | Sort-Object | FT Name -A


Sollen die deaktivierten Computerkonten aus einer bestimmten Organisationseinheit (OU) angezeigt werden, so gilt es diesen Befehl zu verwenden:
Search-ADAccount -AccountDisabled -Searchbase “OU=<OU>,DC=Domäne,DC=de” -ComputersOnly | Sort-Object | FT Name -A



# Alle deaktivierten Computerkonten werden auf Nachfrage, nacheinander mit diesem Befehl gelöscht:
Search-ADAccount -AccountDisabled -ComputersOnly | Sort-Object| Remove-ADComputer


Deaktivierte Computerkonten aus einer bestimmten OU werden auf Nachfrage mit diesem Befehl entfernt:
Search-ADAccount -AccountDisabled -Searchbase “OU=<OU>,DC=Domäne,DC=de” -ComputersOnly | Sort-Object| Remove-ADComputer


Sollen alle deaktivierten Computerkonten auf einmal ohne Nachfrage gelöscht werden, so muss der Parameter „-Confirm:“ mit dem Wert „$False“ mit angegeben werden. Sprich:
Search-ADAccount –AccountDisabled -ComputersOnly | Remove-ADComputer -Confirm:$False


Ohne Nachfrage werden die deaktivierten Computerkonten aus einer OU wie folgt gelöscht:
Search-ADAccount –AccountDisabled -Searchbase “OU=<OU>,DC=Domäne,DC=de” -ComputersOnly | Remove-ADComputer -Confirm:$False



# Alle Computer die sich seit 180 Tagen nicht am AD angemeldet haben werden mit dem folgenden Befehl angezeigt. Damit der Parameter AccountInactive verwendet werden kann, muss sich jedoch der Domänenfunktionsmodus mindestens auf der Ebene “Windows Server 2003” befinden:
Search-ADAccount -AccountInactive –Timespan 180 –ComputersOnly | Sort-Object | FT Name -A


Möchte man sich alle Computer aus einer bestimmten OU anzeigen, die sich seit 180 Tagen nicht mehr am AD angemeldet haben, so sieht der Befehl folgendermaßen aus:
Search-ADAccount -AccountInactive –Timespan 180 -Searchbase “OU=<OU>,DC=Domäne,DC=de” –ComputersOnly | Sort-Object | FT Name -A


Gelöscht werden die Computerkonten dann wie folgt:
Search-ADAccount -AccountInactive –Timespan 180 -ComputersOnly | Remove-ADComputer -Confirm:$False


Aus einer bestimmten OU werden die Computerkonten so entfernt:
Search-ADAccount -AccountInactive –Timespan 180 -Searchbase “OU=<OU>,DC=Domäne,DC=de” -ComputersOnly | Remove-ADComputer -Confirm:$False



# Alle Computer die seit dem 01.01.2010 inaktiv sind und sich nicht mehr am AD angemeldet haben, werden wie folgt angezeigt:
Search-ADAccount -AccountInactive -DateTime "01.01.2010" –ComputersOnly | Sort-Object | FT Name -A


Alle Computer aus einer bestimmten OU, die sich seit dem 01.01.2010 nicht mehr am AD angemeldet haben, werden so angezeigt:
Search-ADAccount -AccountInactive -DateTime "01.01.2010" -Searchbase “OU=<OU>,DC=Domäne,DC=de” –ComputersOnly | Sort-Object | FT Name -A


Alle Computerkonten die sich seit dem 01.01.2010 nicht mehr am AD angemeldet haben, lassen sich dann mit diesem Befehl löschen:
Search-ADAccount -AccountInactive -DateTime "01.01.2010" –ComputersOnly | Remove-ADComputer -Confirm:$False


Die Computer einer bestimmten OU, die seit dem 01.01.2010 inaktiv sind, werden wie folgt gelöscht:
Search-ADAccount -AccountInactive -DateTime "01.01.2010" -Searchbase “OU=<OU>,DC=Domäne,DC=de” –ComputersOnly | Remove-ADComputer -Confirm:$False



Weitere Informationen:
Das Erstellungsdatum eines AD-Objekts mit der AD-PowerShell abfragen
AD-PowerShell Befehle

Sunday, May 02, 2010 2:29:23 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell | Erweiterte Abfragen  | 
 Sunday, April 18, 2010

Zwei wichtige IDs eines Domänencontrollers (DC) sind der DC GUID (Globaly Unique Identifier) und der Datenbank GUID. Beide IDs sind wichtige Bestandteile bei der AD-Replikation. Mit dem Kommandozeilenbefehl Repadmin /Showrepl <DC> kann man sich beide IDs anzeigen lassen. Gibt man den <DC> nicht an, wird der Befehl gegen den DC ausgeführt, auf dem man den Repadmin Befehl ausführt. Führt man den Befehl auf einem Windows Server 2003 DC aus, so erhält man diese Ausgabe auf dem ersten DC einer Gesamtstruktur:

 

Auf einem Windows Server 2008 R2 DC sieht das Ergebnis auf dem ersten DC wie folgt aus:


Jeder DC besitzt eine eindeutige DC GUID innerhalb einer Gesamtstruktur, der auch als Directory Service Agent GUID (kurz DSA-GUID) bekannt ist. Mit der DC GUID der im Attribut objectGUID gespeichert ist, wird der DC in der Gesamtstruktur identifiziert. Dabei spielt es auch keine Rolle in welcher Domäne sich der DC innerhalb einer Gesamtstruktur befindet. Der DC GUID eines DCs ist in der Gesamtstruktur einmalig und ändert sich solange der DC existiert (im Gegensatz zu der invocationId) niemals! Es sei denn, der DC wird zuerst herunter- und anschließend wieder zum DC heraufgestuft. Denn der DC GUID eines DCs wird beim heraufstufen eines Servers zu einem DC erstellt und beim herunterstufen eines DCs entfernt. Natürlich ist das manuelle bearbeiten des DC GUIDs ebenso nicht möglich, weil das Attribut objectGUID system-only ist. Das Attribut objectGUID findet man in den Eigenschaften des „NTDS Settings“ Objekts unterhalb des entsprechenden DC-Objekts in der Konfigurationspartition und ist als ein Oktett-String gespeichert. Der LDAP-Pfad zum “NTDS Settings” Objekt lautet: CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne.

Die objectGUID wird unter anderem auch dazu verwendet, um die Reihenfolge der DCs einer ringförmigen Replikationstopologie zu bestimmen und ist außerdem bei der Wahl des Bridgeheadservers eines AD-Standorts von Bedeutung. Damit der DC für seine Replikationspartner erreichbar ist, erstellt dieser mit der objectGUID in der Forward Lookup Zone _msdcs.Root-Domäne im DNS einen CNAME Eintrag.

Beim heraufstufen eines Servers zu einem DC wird der AD-Datenbank (NTDS.dit) ebenfalls eine GUID zugeordnet, die als Datenbank GUID bezeichnet wird. Diese GUID wird dazu verwendet, um die AD-Datenbank eines DCs bei einem Replikationsaufruf zu identifizieren. Bei der Datenbank GUID handelt es sich um das Attribut invocationId und befindet sich so wie die objectGUID ebenfalls in der Konfigurationspartition, in den Eigenschaften des NTDS Settings Objekts eines DCs im LDAP-Pfad: CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne. Auch die invocationId wird wie die objectGUID beim heraufstufen eines Servers zu einem DC erstellt und beim herunterstufen eines DCs entfernt. Replikationspartner nutzen die invocationId und die Update Sequence Number (USN) um die aktuellen Änderungen für die AD-Replikation zu bestimmen.

Die invocationId des ersten DCs mit dem die Gesamtstruktur erstellt wurde, hat den gleichen Wert wie die objectGUID. Bei allen weiteren DCs einer Gesamtstruktur werden unterschiedliche Werte in den beiden Attributen objectGUID und invocationId gespeichert.

Im Gegensatz zur objectGUID ändert sich die invocationId wenn:

  • eine neue Anwendungsverzeichnispartition erstellt wird. Oder wenn eine bestehende Anwendungsverzeichnispartition entfernt und erneut erstellt wird.

  • der DC mit einer gültigen Sicherung und einer unterstützten Rücksicherungsmethode (supportet von Microsoft!) rückgesichert wird. Eine gültige Sicherung ist eine Sicherung die mit einer Sicherungssoftware durchgeführt wurde, dass das entsprechende API des Betriebssystems verwendet und somit das AD in Kenntnis setzt, dass eine Sicherung durchgeführt wurde. Nur wenn eine gültige und somit eine supportete Sicherung mindestens vom System State durchgeführt wird, erspart man sich je nach Umgebung größeren Schaden im Fall einer Rücksicherung! Ab Windows Server 2003 SP1 kann man mit dem Kommandozeilenbefehl Repadmin /Showbackup überprüfen, ob eine Verzeichnispartition jemals supportet gesichert wurde.

    Eine unterstützte Rücksicherung findet in Abstimmung mit der AD-Replikation statt. Denn nur wenn das AD durch eine ordnungsgemäß durchgeführte System State Sicherung und einer supporteten Rücksicherungsmethode rückgesichert wird, erhält die invocationId auf dem rückgesicherten DC einen neuen Wert. Dadurch erkennen alle anderen DCs, dass die Metadaten für die AD-Replikation zu dem rückgesicherten DC hinfällig sind und das die AD-Replikation ab dem durchgeführten Sicherungsdatum mit dem der DC rückgesichert wurde, neu aufgebaut und durchgeführt werden muss. Einige Sicherungsprogramme (bis Windows Server 2003 NTBACKUP und ab Windows Server 2008 Wbadmin, ARCServe…) führen eine ordnungsgemäße Sicherung und Rücksicherung des System States durch und darauf kommt es an!

    Das entscheidende bei der Rücksicherung ist nun mal, dass die invocationId einen neuen Wert erhalten muss! Das ist genau der Nachteil bei Image-Programmen. Beim klassischen Imagen zieht man sich eine eins zu eins Kopie des DCs. Sollte es nun zum Rückspielen des Images kommen, erhält die invocationId keinen neuen Wert und somit erfahren je nach Umgebung die Replikationspartner auch nicht, dass ein DC rückgesichert wurde und das die Replikation mit dem rückgesicherten DC neu aufgebaut werden muss. Beim rücksichern eines Images schafft man sich ein USN Rollback, was je nach Fall zu einem größeren Schaden für die AD-Umgebung bedeutet! Im günstigsten Fall hätte man sich lediglich den zurück-geimageten DC zerstört. Diesen müsste man dann gewaltsam herunterstufen und anschließend die Metadaten des AD bereinigen (siehe weiterführende Informationen). Im ungünstigsten Fall hätte man mindestens doppelte RIDs verteilt, nicht mehr gültige Computerkontokennwörter und keine funktionierende AD-Replikation mit diesem DC mehr!

    Wenn eine unterstützte Rücksicherung stattgefunden hat, wird der nicht mehr gültige Wert aus dem Attribut invocationId in das Attribut retiredReplDSASignatures (das sich ebenfalls im NTDS Settings Objekt eines DCs befindet) gesetzt.

    Auch eine IFM (Install from Media) Installation eines DCs kommt einer Rücksicherung eines DCs gleich. Denn bei einer IFM-Installation wird der Wert aus dem Attribut invocationId das von der Sicherung stammt, in das Attribut retiredReplDSASignatures auf dem neuen DC geschrieben. Der Grund dafür ist, wenn ein Verbindungsobjekt für die Replikation erstellt wird, überprüft der neue DC sein Attribut retiredReplDSASignatures um festzustellen ob das Attribut einen Wert enthält, der mit den invocationIds im Up-To-Dateness Vector (UTDV) des Ziel-DCs übereinstimmt. Durch diese Vorgehensweise ist sichergestellt, dass nur eine Teilmenge der AD-Datenbank, nämlich nur die Änderungen die ab der Sicherung durchgeführt wurden repliziert wird.

 

Durch die ausschließlich ordnungsgemäß durchgeführte Sicherung und der Rücksicherungsmethode wird ein USN Rollback und somit Schaden verhindert! Wenn man sich nicht sicher ist ob das eingesetzte Sicherungsprogramm eine unterstützte Sicherung sowie Rücksicherung durchführt, sollte man ein klärendes Telefonat mit dem Hersteller führen. Von ungültigen Sicherungsmethoden wie das Rücksichern eines Images, VM-Images und VM-Snapshots (mindestens auf Servern die transaktionale Datenbanken bereitstellen wie ein DC, Exchange und SQL) sollte man stets Abstand halten und wird seitens Microsoft auch nicht supportet!

Auf einem DC ist es Pflicht mindestens das System State zu sichern und das kann man bereits mit Windows-Bordmittel (NTBACKUP, Wbadmin) durchführen!

 

Weiterführende Informationen:
Domänencontroller-Installation von einer Sicherung
Images als Sicherung?
Das Active Directory gewaltsam vom DC entfernen
Die Metadaten des Active Directory unter Windows Server 2008 bereinigen
Der RID-Master und sein RID-Pool
Lingering Objects (veraltete Objekte)
How to detect and recover from a USN rollback in Windows Server 2003
How To Convert a String Formatted GUID to a Hexadecimal String Form For Use When Querying the Active Directory

Sunday, April 18, 2010 1:18:07 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Replikation | Wiederherstellung  | 
 Sunday, March 21, 2010

Der Distinguished Name (DN) der einzelnen Verzeichnispartitionen die auf einem Domänencontroller (DC) gespeichert sind, werden in den folgenden Attributen gespeichert. Diese Attribute gehören zur nTDSDSA-Objektklasse und befinden sich in den Eigenschaften des „NTDS Settings“ Objekts des jeweiligen DCs. Zu finden ist das Objekt in diesem LDAP-Pfad: CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne.

Die im Verlauf dieses Artikels verwendeten Abfragen werden unter anderem über alle AD-Standorte hinweg durchgeführt. Möchte man die Abfrage auf einen bestimmten AD-Standort eingrenzen, so muss im Filter der gewünschte AD-Standort mit angegeben werden. Also anstatt "CN=Sites,CN=Configuration,DC=Root-Domäne" muss es dann so lauten: "CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne".

 

In welchen Attributen ist die Information gespeichert, welche Verzeichnispartitionen sich auf einem DC befinden?

hasMasterNCs = In diesem mehrwertigen (multivalue) Attribut werden die DNs der beschreibbaren Verzeichnispartitionen die sich auf einem DC befinden gespeichert. Diese sind standardmäßig die Schema-, Konfigurations- und Domänenpartition. In diesem Attribut werden aber keine Anwendungsverzeichnispartitionen gespeichert, wie z.B. die beiden DNS-Partitionen ForestDNSZones sowie DomainDNSZones. Auf RODCs enthält dieses Attribut logischerweise keinen Wert, da auf einem RODC keine beschreibbaren Verzeichnispartitionen gespeichert sind da der RODC auf alle Verzeichnispartitionen lediglich das Leserecht besitzt!

hasPartialReplicaNC = In diesem mehrwertigen Attribut werden die DNs der Domänenpartitionen aus den anderen Domänen innerhalb einer Gesamtstruktur gespeichert, die sich auf einem DC befinden. Das Attribut enthält nur dann einen Wert, wenn zum einen mehr als eine Domäne in der Gesamtstruktur existiert und zum anderen, auf dem DC der globale Katalog (GC) aktiviert wurde! Da ein GC lediglich das Leserecht auf die Domänenpartitionen aus anderen Domänen hat, sind in diesem Attribut die DNs der Domänenpartitionen worauf ausschließlich das Leserecht besteht gespeichert. Da man auf einem RODC auch den GC aktivieren kann, werden bei der Abfrage nach diesem Attribut auch RODCs angezeigt.

msDS-HasDomainNCs = In diesem einwertigen (single-value) Attribut das erst ab Windows Server 2003 existiert, wird der DN der Domänenpartition die sich auf einem DC befindet gespeichert. RODCs verwenden ebenfalls dieses Attribut und werden demzufolge auch bei Abfragen mit angezeigt.

msDS-hasFullReplicaNCs = In diesem mehrwertigen Attribut das nur von einem RODC genutzt wird, sind die DNs der Verzeichnispartitionen: Schemapartition, Konfigurationspartition, Domänenpartition (in der sich der RODC befindet) sowie den beiden DNS-Anwendungsverzeichnispartitionen DomainDNSZones und ForestDNSZones gespeichert.

msDS-hasMasterNCs = In diesem mehrwertigen Attribut werden sämtliche DNs der beschreibbaren Verzeichnispartitionen die sich auf einem DC befinden gespeichert. Standardmäßig enthält das Attribut ab Windows Server 2003 die DNs der folgenden Verzeichnispartitionen: Schemapartition, Konfigurationspartition, Domänenpartition sowie die beiden Anwendungsverzeichnispartitionen DomainDNSZones (der eigenen Domäne) und ForestDNSZones. Da ein RODC keine beschreibbaren Verzeichnispartitionen vorhält, erscheinen bei der Abfrage nach diesem Attribut demzufolge auch keine RODCs!

msDS-NC-Replica-Locations = In diesem mehrwertigen Attribut, das sich im Container CN=Partitions,CN=Configuration,DC=Root-Domäne in den Eigenschaften der Cross-Reference (crossRef) Objekte befindet, sind in den crossRef Objekten der Anwendungsverzeichnispartitionen der DN der NTDS Settings-Objekte aller DCs gespeichert, die eine Replik der entsprechenden Anwendungsverzeichnispartition gespeichert haben. Ab Windows Server 2003 sind es mindestens die beiden DNS-Partitionen "DomainDNSZones" und "ForestDNSZones".

 


Welche beschreibbaren Verzeichnispartitionen sind auf einem DC gespeichert?

Um herauszufinden welche beschreibbaren Verzeichnispartitionen auf einem DC gespeichert sind, sollte eine Abfrage nach dem Attribut msDS-hasMasterNCs erfolgen.

Mit der AD-PowerShell

$ADSI = [ADSI]"LDAP://<DC>:389/CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne"
$ADSI."msDS-hasMasterNCs"


Oder mit diesem AD-PowerShell Befehl:

Get-ADObject -LDAPFilter “(&(objectClass=nTDSDSA)(msDS-hasMasterNCs=*))“ -Searchbase "CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne" -Properties msDS-hasMasterNCs -SearchScope Subtree | Select msDS-hasMasterNCs | % {write $_."msDS-hasMasterNCs"}


Mit LDP

Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN das „NTDS Settings“ Objekt des entsprechenden DCs in der Konfigurationspartition angeben.
Also: CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectClass=nTDSDSA)(msDS-hasMasterNCs=*)). Als Suchbereich sollte die Option „Unterstruktur“ ausgewählt und im Feld Attribute msDS-hasMasterNCs angegeben werden.


Mit Dsquery

dsquery * "CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne" -attr msDS-hasMasterNCs

 


Alle Verzeichnispartitionen einer Gesamtstruktur anzeigen

Die Verzeichnispartitionen einer Gesamtstruktur sind standardmäßig:

  • die Schemapartition (wird auf alle DCs innerhalb einer Gesamtstruktur repliziert, egal in welcher Domäne sie sich befinden).
  • die Konfigurationspartition (wird auf alle DCs innerhalb einer Gesamtstruktur repliziert, egal in welcher Domäne sie sich befinden).
  • die jeweilige Domänenpartition (wird auf alle DCs innerhalb der jeweiligen Domäne repliziert). Wenn sich mehrere Domänen in der Gesamtstruktur befinden, werden alle Domänenpartitionen aufgelistet.
  • die Anwendungsverzeichnispartition ForestDNSZones (wird auf alle DCs innerhalb einer Gesamtstruktur repliziert, egal in welcher Domäne sie sich befinden).
  • die Anwendungsverzeichnispartition DomainDNSZones der jeweiligen Domäne (wird auf alle DCs innerhalb der jeweiligen Domäne repliziert). Existieren mehrere Domänen in einer Gesamtstruktur und wurde die Forward Lookup Zone der entsprechenden Domäne in der DomainDNSZones-Partition gespeichert, werden alle DomainDNSZones-Anwendungsverzeichnispartitionen aufgelistet.



Alle Verzeichnispartitionen einer Gesamtstruktur mit der AD-PowerShell abfragen

Get-ADObject -LDAPFilter "(objectCategory=crossRef)" -Properties * -Searchbase "CN=Partitions,CN=Configuration,DC=Root-Domäne" | ? {$_.systemFlags -band 5} –SearchScope OneLevel | Select ncName


Oder mit dieser AD-PowerShell Abfrage

Get-ADObject -LDAPFilter "(&(objectCategory=crossRef)(systemflags:1.2.840.113556.1.4.804:=5))" -Properties * -Searchbase "CN=Partitions,CN=Configuration,DC=Root-Domäne" -SearchScope OneLevel | Select ncName


Mit LDP

Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Partitions Container in der Konfigurationspartition angeben. Also:
CN=Partitions,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectCategory=crossRef)(systemFlags:.12.840.113556.1.4.803:=5)). Als Suchbereich sollte die Option „Eine Ebene“ ausgewählt und im Feld Attribute ncName angegeben werden.


Mit Dsquery

dsquery partition

Oder mit:

dsquery * "CN=Partitions,CN=Configuration,DC=Root-Domäne" -Filter "(&(objectCategory=crossRef)(systemFlags:1.2.840.113556.1.4.804:=5))" -Scope OneLevel -attr ncName

 


Alle beschreibbaren DCs und die Verzeichnispartitionen anzeigen, die jeweils auf den DCs gespeichert sind


Mit der AD-PowerShell

Get-ADObject -LDAPFilter "(objectClass=nTDSDSA)" -Properties msds-hasMasterNCs -Searchbase "CN=Sites,CN=Configuration,DC=Root-Domäne" | Select distinguishedName,msDS-hasMasterNCs | FT –A -Wrap


Mit LDP

Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Sites Container in der Konfigurationspartition angeben. Also: CN=Sites,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (objectClass=nTDSDSA). Als Suchbereich sollte die Option „Unterstruktur“ ausgewählt und im Feld Attribute distinguishedName;msDS-hasMasterNCs angegeben werden.


Mit Dsquery

dsquery * "CN=Sites,CN=Configuration,DC=Root-Domäne" -Filter "(ob jectclass=nTDSDSA)" -attr distinguishedName msds-hasMasterNCs -Limit 0 > C:\Temp\dsquery.txt

 


Alle Anwendungsverzeichnispartitionen einer Gesamtstruktur anzeigen

Alle Anwendungsverzeichnispartitionen die in einer Gesamtstruktur existieren, standardmäßig sind das ab Windows Server 2003 die beiden DNS-Anwendungsverzeichnispartitionen DomainDNSZones und ForestDNSZones, werden mit der folgenden AD-PowerShell Abfrage angezeigt. Existieren mehrere Domänen in der Gesamtstruktur die mindestens unter Windows Server 2003 betrieben werden, wird für jede Domäne die DNS-Anwendungsverzeichnispartition DomainDNSZones angezeigt.


AD-PowerShell

Get-ADObject -LDAPFilter "(&(objectCategory=crossRef)(systemflags:1.2.84 0.113556.1.4.803:=5))" -Properties * -Searchbase "CN=Partitions,CN=Configuration ,DC=Root-Domäne" -SearchScope OneLevel | Select dnsRoot | FT


Auch mit diesem AD-PowerShell Befehl lassen sich alle Anwendungsverzeichnispartitionen einer Gesamtstruktur Anzeigen:

Get-ADObject -LDAPFilter "(objectCategory=crossRef)" -Searchbase "CN=Partitions,CN=Configuration,DC=Root-Domäne" -Properties * -SearchScope OneLevel | Where {$_.systemFlags -band 4} | Select dnsRoot

Mit LDP

Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Partitions Container in der Konfigurationspartition angeben. Also:
CN=Partitions,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectCategory=crossRef)(systemFlags:.12.840.113556.1.4.803:=5)). Als Suchbereich sollte die Option „Eine Ebene“ ausgewählt und im Feld Attribute dnsRoot angegeben werden.


Mit Dsquery

Mit Dsquery werden alle Anwendungsverzeichnispartitionen einer Gesamtstruktur mit dieser Kommandozeilenabfrage angezeigt:

dsquery * "CN=Partitions,CN=Configuration,DC=Root-Domäne" -Filter "(&(objectCategory=crossRef)(systemflags:1.2.840.113556.1.4.803:=5))" -Scope OneLevel -attr dnsRoot

 


Welche Anwendungsverzeichnispartitionen sind auf einem DC gespeichert?

Um sich die Anwendungsverzeichnispartitionen die auf einem bestimmten DC gespeichert sind anzuzeigen, gilt es eines der folgenden Abfragen durchzuführen. Standardmäßig werden ab Windows Server 2003 die beiden DNS-Partitionen ForestDNSZones und DomainDNSZones (der jeweiligen Domänen) angezeigt.


Mit der AD-PowerShell

Get-ADObject -LDAPFilter "(&(objectcategory=crossRef)(systemFlags:1.2.840.113556.1.4.803:=5)(msDS-NC-Replica-Locations=CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne))" –Properties * -Searchbase "CN=Partitions,CN=Configuration,DC=Root-Domäne" -SearchScope OneLevel | Select dnsRoot


Oder mit diesem AD-PowerShell Befehl:

Get-ADObject -LDAPFilter "(&(objectCategory=crossRef)(msDS-NC-Replica-Locations=CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne))" -Properties * -Searchbase "CN=Partitions,CN=Configuration,DC= Root-Domäne" -SearchScope OneLevel | Where {$_.systemFlags -band 5} | Select dnsRoot


Mit LDP

Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Partitions Container in der Konfigurationspartition angeben. Also:
CN=Partitions,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectcategory=crossRef)(systemFlags:1.2.840.113556.1.4.803:=5)(msDS-NC-Replica-Locations=CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne)). Als Suchbereich sollte die Option „Eine Ebene“ ausgewählt und im Feld Attribute dnsRoot angegeben werden.


Mit Dsquery

dsquery * "CN=Partitions,CN=Configuration,DC=Root-Domäne" -Scope OneLevel -attr dnsRoot -Filter "(&(objectcategory=crossRef)(systemFlags:1.2.840.113556.1.4.803:=5)(msDS-NC-Replica-Locations=CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne))"

 


Auf welchen beschreibbaren DCs ist die Anwendungsverzeichnispartition ForestDNSZones gespeichert?

Mit dem folgenden AD-PowerShell Befehl werden alle DCs angezeigt, auf denen die ForestDNSZones-Partition gespeichert ist. Dabei spielt es auch keine Rolle, an welchem AD-Standort sich die DCs befinden.

Get-ADObject -LDAPFilter "(&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=ForestDNSZones,DC=Root-Domäne))" -Searchbase "CN=Sites,CN=Configuration,DC=Root-Domäne" -SearchScope Subtree | Select distinguishedName | FT

Mit LDP

Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Sites Container in der Konfigurationspartition angeben. Also:
CN=Sites,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=ForestDNSZones,DC=Root-Domäne)). Als Suchbereich sollte die Option „Unterstruktur“ ausgewählt und im Feld Attribute distinguishedName angegeben werden.


Mit Dsquery

dsquery * "CN=Sites,CN=Configuration,DC=Root-Domäne" -Filter "(&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=ForestDNSZones,DC=Root-Domäne))" -Scope Subtree -attr distinguishedName

 


Auf welchen beschreibbaren DCs ist die Anwendungsverzeichnispartition DomainDNSZones gespeichert?

Um die DCs abzufragen auf denen die DNS-Partition DomainDNSZones gespeichert ist, gilt es den folgenden AD-PowerShell Befehl auszuführen. Die DomainDNSZones Verzeichnispartition wird jeweils nur innerhalb der Domäne repliziert.

Get-ADObject -LDAPFilter "(&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=DomainDNSZones,DC=Domäne))" –Properties * -Searchbase "CN=Sites,CN=Configuration,DC=Root-Domäne" -SearchScope Subtree | Select distinguishedName | FT -A –Wrap


Mit LDP

Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Sites Container in der Konfigurationspartition angeben. Also:
CN=Sites,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=DomainDNSZones,DC=Domäne)). Als Suchbereich sollte die Option „Unterstruktur“ ausgewählt und im Feld Attribute distinguishedName angegeben werden.


Mit Dsquery

dsquery * "CN=Sites,CN=Configuration,DC=Root-Domäne" -Filter "(&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=DomainDNSZones,DC=Domäne))" -Scope Subtree -attr distinguishedName

 


Einfache Abfrage mit DNSCMD

Eine andere einfache Variante um zu überprüfen ob auf einem bestimmten DC die beiden DNS-Anwendungsverzeichnispartitionen gespeichert sind, stellt das DNS-Kommandozeilentool dnscmd dar. Die Abfrage in einer Kommandozeile die auch domänenübergreifend funktioniert lautet so:

Dnscmd <DC> /EnumDirectoryPartitions


 

Weitere Informationen:
Die unterschiedliche Größe der AD-Datenbank
Domänencontroller vergleichen

Sunday, March 21, 2010 1:48:25 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Powershell | Dokumentation | Erweiterte Abfragen  | 
 Sunday, March 07, 2010
Mit Windows Server 2008 führte Redmond den Read Only Domänencontroller (kurz RODC) ein. Der RODC der für Außenstellen die eine geringe bis keine physikalische Sicherheit den Servern bieten können konzipiert wurde, ist ein Domänencontroller (DC) der ausschließlich einen lesenden Zugriff auf die Active Directory-Domänendienste (AD DS) hat. Der RODC kann keine Änderungen in den AD DS und im AD-integrierten DNS vornehmen (RODNS). Clients oder Applikationen die einen Lesezugriff auf die AD DS benötigen erhalten Zugriff auf den RODC, während Clients oder Applikationen die einen Schreibvorgang in die AD DS durchführen wollen, diesen nicht auf dem RODC durchführen können sondern vom RODC an einen beschreibbaren DC verwiesen werden.

Der RODC besitzt ein vollständiges Replikat der AD-Datenbank, mit allen Attributen und Objekten die sich auch auf einem beschreibbaren DC befinden. Neben dem Unterschied das der RODC lediglich das Leserecht auf die AD-Datenbank hat, werden im Gegensatz zu einem beschreibbaren DC standardmäßig auch keine Benutzer- oder Computeranmeldeinformationen auf dem RODC gespeichert, außer das eigene Computerkonto sowie ein besonderes krbtgt-Konto für diesen RODC. Damit die Anmeldeinformationen der entsprechenden Benutzer-, Computer- und Dienstkonten auf dem RODC gespeichert werden können, muss das explizit in der Kennwortreplikationsrichtlinie (Password Replication Policy, kurz PRP) auf einem beschreibbaren DC gestattet werden, damit der RODC Authentifizierungs- und Dienstticketanforderungen eigenständig verarbeiten kann. Mit der Kennwortreplikationsrichtlinie wird bestimmt, ob die Anmeldeinformationen eines Benutzer- oder Computerkontos von einem beschreibbaren DC auf den RODC repliziert werden können.


Weitere Informationen zum RODC bekommt man in den folgenden beiden Artikeln:

Read-Only Domain Controller (RODC)
Die Installation eines RODC

 

 

Der gefilterte Attributsatz vom RODC

Diverse Applikationen könnten die AD-Domänendienste als Datenspeicher verwenden und sensible Daten darin speichern. Oder evtl. möchte man einfach nicht, dass bestimmte Daten von Benutzern (z.B. die Adressdaten oder die Personalnummer) auf einen RODC repliziert werden. Natürlich sollen diese kritischen Daten ebenfalls geschützt sein und nicht auf einem RODC gespeichert werden, falls der RODC kompromittiert, gestohlen oder die Sicherheit gefährdet wird. Und für genau diesen Anwendungstyp gibt es den gefilterten Attributsatz. Der gefilterte Attributsatz (auf Englisch: Filtered Attribute Set, kurz FAS) ist ein dynamischer Attributsatz, die nie auf einen RODC in der Gesamtstruktur repliziert werden da sie sensible oder vertrauliche Daten enthalten. Der gefilterte Attributsatz kann aber erst ab Windows Server 2008 konfiguriert werden.

 

 

Damit ein Attribut das wichtige Daten enthält nicht auf einen RODC repliziert wird, sollten die folgenden Schritte durchgeführt werden:

  • Das entsprechende Attribut sollte zu dem gefilterten Attributsatz (FAS) hinzugefügt werden. Damit wird verhindert, dass das Attribut an die RODCs in der Gesamtstruktur repliziert wird. Die Konfiguration des gefilterten Attributsatzes betrifft die Gesamtstruktur und kann nicht pro Domäne konfiguriert werden!
  • Des Weiteren sollte das Attribut als vertraulich gekennzeichnet werden. Dies ist eine weitere Sicherheitseinstellung das konfiguriert werden sollte, wenn man nicht möchte das ein sensibles Attribut zu einem RODC repliziert werden soll! Ein Attribut wird als vertraulich gekennzeichnet, in dem die Leseberechtigung für das entsprechende Attribut für die Gruppe Authentifizierte Benutzer entfernt wird. Somit können diese Attribute von den Mitgliedern der Gruppe Authentifizierte Benutzer (das betrifft alle Benutzer- sowie Computerkonten, inklusive RODCs) nicht mehr gelesen werden. Auch die Konfiguration eines vertraulichen Attributs betrifft die Gesamtstruktur und kann nicht pro Domäne konfiguriert werden! Doch bevor ein Attribut als vertraulich gekennzeichnet wird, sollte der Vorgang in einer Testumgebung ausgiebig getestet werden!
  • Der Gesamtstrukturfunktionsmodus sollte sich aus Sicherheitsgründen mindestens auf Windows Server 2008 befinden. Denn die Attribute die sich im gefilterten Attributsatz befinden, werden nur von DCs die mindestens unter Windows Server 2008 laufen berücksichtigt! Windows Server 2003 DCs ignorieren die Konfiguration das ein Attribut geschützt ist und replizieren die Attribute die sich in dem gefilterten Attributsatz befinden trotzdem auf einen RODC.

    Die Domänenpartition in der sich der RODC befindet wird zwar erst ab einem beschreibbaren Windows Server 2008 DC auf den RODC repliziert, doch wenn auf dem RODC der globale Katalog (ROGC) aktiviert wird, baut sich eine eigene Replikationstopologie für die Replikation des GCs auf. Existieren in der Gesamtstruktur noch weitere Domänen mit Windows Server 2003 GCs in denen ebenfalls ein gefilterter Attributsatz konfiguriert wurde, ist es durchaus möglich das ein Windows Server 2003 GC den gefilterten Attributsatz aus seiner Domäne zu einem RODC repliziert.
  • Das Hinzufügen eines systemkritischen Attributs zum gefilterten Attributsatz ist nicht möglich! Ein systemkritisches Attribut ist ein Attribut, das z.B. für die ordnungsgemäße Funktion der AD DS oder für das Kerberos-Authentifizierungsprotokoll benötigt wird. Erst wenn in den Eigenschaften des entsprechenden Attributs im Attribut schemaFlagsEx, das aus einer Bitmaske besteht, das Flag FLAG_ATTR_IS_CRITICAL aktiviert ist, handelt es sich um ein systemkritisches Attribut. Dieses Flag existiert aber erst seit Windows Server 2008 und Windows Server 2003 DCs würden diese Einstellung ignorieren.

    Daher ist es umso mehr wichtig, dass sich nicht nur der Schemamaster auf mindestens einem Windows Server 2008 DC, sondern der Gesamtstrukturfunktionsmodus sich zwingend im Modus Windows Server 2008 oder höher befindet. Denn wäre der Schemamaster ein Windows Server 2003 DC, würde sich ein systemkritisches Attribut dem gefilterten Attributsatz scheinbar erfolgreich hinzufügen lassen. Aber da ein Windows Server 2003 DC die Konfiguration eines gefilterten Attributsatzes sowieso nicht kennt, sollte in einer Gesamtstruktur in der ein gefilterter Attributsatz genutzt wird ein Windows Server 2003 DC ohnehin nicht mehr existieren!

 

 

Die technische Umsetzung wie ein Attribut zum gefilterten Attributsatz hinzugefügt wird, findet wie folgt statt

  • Um ein Attribut zum gefilterten Attributsatz hinzuzufügen und somit die Replikation des entsprechenden Attributs zu einem RODC zu verwehren, muss im zu schützenden Attribut das zehnte Bit (also Bit 9) im searchFlags Attribut gesetzt werden. Im searchFlags Attribut kann unter anderem bestimmt werden, dass ein Attribut zum gefilterten Attributsatz hinzugefügt wird und das es vertraulich ist. Im searchFlags Attribut das aus einer Bitmaske besteht, muss im zehnten Bit als Wert in Hexadezimal 0x200 und in Dezimal 512 eingetragen werden. Anschließend wird das entsprechende Attribut zu keinem RODC in der Gesamtstruktur repliziert.
  • Im Attribut searchFlags liegt auch das Geheimnis, warum ein Windows Server 2003 DC die Attribute im gefilterten Attributsatz nicht berücksichtigt. Denn das zehnte Bit, also Bit 9 in searchFlags ist erst mit Windows Server 2008 und der Einführung des RODCs hinzugekommen.
  • Soll ein Attribut zum gefilterten Attributsatz hinzugefügt werden, sollte es auch als vertraulich deklariert werden. Als vertraulich deklariert und somit die Leseberechtigung den Authentifizierten Benutzern entzogen, wird ein Attribut durch das Setzen des achten Bits (Bit 7) ebenfalls im searchFlags Attribut. Dieses Flag kam mit Windows Server 2003 SP1 hinzu. Daher sollte darauf geachtet werden, dass wenn mit diesem Flag Attribute als vertraulich definiert werden, alle DCs in der Gesamtstruktur mindestens unter Windows Server 2003 SP1 installiert sind. Alle älteren Serverversionen ignorieren die Kennzeichnung als vertraulich! Im achten Bit des searchFlags Attributs muss als Wert in Hexadezimal 0x080 und in Dezimal 128 eingetragen werden.
  • Demnach erhält also searchFlags als Wert 640 in Dezimal (in Hexadezimal 0x280), damit zum einen das gewünschte Attribut zum gefilterten Attributsatz hinzugefügt und zum anderen, als vertraulich definiert wird. Trägt man als Wert 641 ein, wird zugleich das Attribut indiziert. Sollten bereits andere Flags im searchFlags Attribut konfiguriert sein, müssen die Werte addiert werden!

 

 

Den gefilterten Attributsatz abfragen

Standardmäßig befinden sich die folgenden Attribute ab Windows Server 2008 im gefilterten Attributsatz: 

 

ms-FVE-KeyPackage

ms-FVE-RecoveryPassword

ms-PKI-AccountCredentials
ms-PKI-DPAPIMasterKeys
ms-PKI-RoamingTimeStamp

ms-TPM-OwnerInformation

 

 

Um die Attribute die sich im gefilterten Attributsatz befinden abzufragen, muss eine Abfrage nach dem Attribut searchFlags mit dem Wert 512 (das zehnte Bit in searchFlags) durchgeführt werden.

 

 

Die Abfrage mit der AD-PowerShell könnte wie folgt lauten

 

Get-ADObject -LDAPFilter "(objectClass=attributeSchema)" -Searchbase "CN=Schema,CN=Configuration,DC=Root-Domäne" -Properties searchFlags | Where {$_.searchFlags -band 512} | Select Name,searchFlags | Sort Name | FT -Autosize -Wrap

 


Auch mit diesem AD-PowerShell Befehl lassen sich die gefilterten Attribute anzeigen:

 

Get-ADObject -LDAPFilter "(&(ObjectClass=attributeSchema)(searchFlags:1.2.840.113556.1.4.803:=512))"  -SearchBase “CN=Schema,CN=Configuration,DC=Root-Domäne” -SearchScope Subtree | Select Name | Sort Name | FT -Autosize -Wrap

 

 

Mit LDP lässt sich der gefilterte Attributsatz folgendermaßen anzeigen

Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN die Schemapartition und als Filter (searchFlags:1.2.840.113556.1.4.803:=512) angeben.


 


 

Weitere Informationen:
How to mark an attribute as confidential in Windows Server 2003 Service Pack 1
Anhang D: Schritte zum Hinzufügen eines Attributs zu einem Attributsatz mit RODC-Filter
Search-Flags Attribute

Sunday, March 07, 2010 11:32:34 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell | Erweiterte Abfragen | Replikation  | 
 Sunday, February 21, 2010
Bevor der erste Server, der mit einem neueren Serverbetriebssystem installiert ist als die bereits bestehenden Domänencontroller (DCs) einer Gesamtstruktur, als DC zur Gesamtstruktur hinzugefügt werden kann, muss vorher zwingend mit dem Active Directory Preparation Tool (ADPREP) das Active Directory-Schema aktualisiert werden. Erst nachdem ADPREP ausgeführt wurde, kann der neue Server als DC zur Gesamtstruktur hinzugefügt werden. Dabei muss ADPREP stets von der CD/DVD ausgeführt werden, mit dem der neue Server installiert wurde. Möchte man also einen Windows Server 2008 oder Windows Server 2008 R2 in eine Windows 2000 bzw. Windows Server 2003 Gesamtstruktur hinzufügen, so muss das ADPREP von der Windows Server 2008 bzw. Windows Server 2008 R2 DVD ausgeführt werden.

ADPREP muss aber nur dann ausgeführt werden, wenn der Server mit dem neueren Serverbetriebssystem zum DC gestuft werden soll! Wird der neue Server lediglich als Mitgliedsserver zur Domäne hinzugefügt, so muss das ADPREP nicht ausgeführt werden.

Soll der Server, der mit einem neuerem OS (Operating System = Betriebssystem) installiert ist als die existierenden DCs, zu einer bestehenden Domäne als zusätzlicher DC hinzugefügt werden, muss zuerst ADPREP /FORESTPREP auf dem Schemamaster und anschließend ADPREP /DOMAINPREP /GPPREP auf dem Infrastrukturmaster in der Domäne ausgeführt werden, zu der der neue Server als DC hinzugefügt werden soll.

Wird jedoch mit dem neuen Server eine neue Subdomäne in einer bestehenden Gesamtstruktur erstellt, muss lediglich das ADPREP /FORESTPREP ausgeführt werden. Das ADPREP /DOMAINPREP /GPPREP muss und kann in diesem Szenario nicht ausgeführt werden, da es keine zu aktualisierende Domäne gibt. Schließlich wird mit dem neuen DC erst eine (weitere) Subdomäne erstellt.

Weitere Details beschreibt der folgende Artikel:

Das Active Directory Preparation Tool - ADPREP

 


Fehler die beim Ausführen von ADPREP auftreten können


  • Wenn das Ausführen von ADPREP aus welchen Gründen auch immer fehl schlagen sollte, ist es empfehlenswert als erstes immer ins ADPREP-Protokoll zu schauen. Das ADPREP-Log wird im Verzeichnis %windir%\System32\Debug\Adprep\Logs erstellt und enthält einen detaillierten Bericht zur Domänen- und Gesamtstrukturvorbereitung.


  • Bevor der erste Server mit neuerem OS als die bereits existierenden DCs, als DC zur Gesamtstruktur hinzugefügt werden kann, muss zuerst das ADPREP /FORESTPREP in der Kommandozeile auf dem Schemamaster ausgeführt werden. Das Benutzerkonto mit dem dieser Befehl ausgeführt wird, muss Mitglied in den Gruppen Schema-Admins, Organisations-Admins und Domänen-Admins in der Domäne sein, in der sich der Schemamaster befindet.

    Wenn ADPREP /FORESTPREP auf dem Schemamaster mit den notwendigen Rechten ausgeführt wurde und es trotzdem zu einem Fehler führt, weil ADPREP keinen Kontakt zum Schemamaster herstellen konnte (in seltenen Fällen), sollte der Schemamaster zuerst auf einen anderen DC und erneut zurück verschoben werden. Anschließend ist der Befehl ADPREP /FORESTPREP nochmals auszuführen.


  • Befindet sich das Benutzerkonto beim ausführen von ADPREP hingegen nicht in den entsprechenden Gruppen, kommt es zu diesem Fehler:

    Adprep encountered a Win32 error.
    Error code: 0x5 Error message: Access is denied

    Das Benutzerkonto muss zum ausführen von ADPREP /FORESTPREP Mitglied in den folgenden Gruppen sein:

    - Schema-Admins
    - Organisations-Admins
    - Domänen-Admin in der Domäne, in der sich der Schemamaster befindet.

    Zum ausführen von ADPREP /DOMAINPREP /GPPREP muss das Benutzerkonto Mitglied in der Gruppe Domänen-Admins in der Domäne sein, in der dieser Befehl auf dem Infrastrukturmaster ausgeführt wird.


  • Kommt es beim ausführen von ADPREP /FORESTPREP zu diesem Fehler:

    Es war Adprep nicht möglich, das Schema zu erweitern.

    [Status/Folgen]

    Der Schemamaster schloss einen Replikationszyklus nach dem letzten Neu-Start nicht ab. Der Schemamaster muss mindestens einen Replikationszyklus, bevor das Schema erweitert werden kann, abschließen.

    [Benutzeraktion]

    Überprüfen Sie, dass der Schemamaster mit dem Netzwerk verbunden ist, und mit anderen Domäne-Controllern kommunizieren kann…

    liegt ein AD-Replikationsproblem vor. Es ist zwingend, dass zuerst das Replikationsproblem behoben wird, bevor das Ausführen von ADPREP erfolgreich durchgeführt werden kann. Einen ersten Ansatz zur Fehlersuche bei der AD-Replikation sollte neben dem Eventlog, auch das Schweizer Messer der AD-Replikation REPADMIN zum Vorschein bringen. Mit ausführen von Repadmin /Showreps bzw. Repadmin /Showrepl auf dem Schemamaster sieht man recht schnell, mit welchen DCs der Schemamaster nicht replizieren kann.

    Wenn die DCs identifiziert wurden mit denen der Schemamaster nicht replizieren kann, sollte man versuchen sich per UNC auf die DCs zu verbinden. Bekommt man auf dem Schemamaster mit \\DC-Computername und \\FQDNdesDCs keine Verbindung zu den betroffenen DCs hin, liegt entweder ein Netzwerkproblem, ein DNS Problem, ein gebrochener sicherer Kanal (secure channel) oder ein Zeitunterschied von mindestens fünf Minuten zwischen den DCs vor. Gerade das DNS ist für eine AD-Umgebung von großer Bedeutung! Ein Ping sowohl auf die IP-Adresse als auch auf den Computernamen sollte von und zu den betroffenen DCs erfolgreich sein. Funktioniert ein Ping auf die IP-Adresse nicht, liegt höchstwahrscheinlich ein Netzwerkproblem vor. Es sollte der Weg vom Schemamaster zum betroffenen DC untersucht werden.

    Funktioniert hingegen ein Ping auf den Computernamen oder FQDN des DCs nicht, liegt höchstwahrscheinlich ein DNS-Problem vor. In den TCP/IP-Einstellungen des DCs sollte ein zentraler DNS-Server als primärer DNS-Server eingetragen werden. Des Weiteren sollte in der Forward Lookup Zone überprüft werden, ob die SRV-Einträge existieren.

    Mit Repadmin /KCC <DC> sollte anschließend die eingehende Replikationstopologie auf den DCs neu berechnet werden.


  • Auch durch Schemakonflikte kann ADPREP Fehler verursachen. Wurden benutzerdefinierte Schemaänderungen vorgenommen oder Schemaänderungen durch Drittanbieterlösungen durchgeführt die mit einer Schemaaktualisierung durch ADPREP in Konflikt stehen, kann es ebenfalls zu Fehlern kommen. Die Fehler die angezeigt werden können darauf hindeuten, dass der Object Identifier (OID) nicht geändert wurde und somit keine neuen Klassen dem AD-Schema hinzugefügt werden können. Das Konfliktobjekt wird im ADPREP-Protokoll protokolliert. Wenn das Objekt das den Konflikt verursacht hat durch eine Drittanbieterlösung ins AD-Schema hinzugefügt wurde, sollte man sich für eine Lösung des Problems an den Hersteller wenden. Andernfalls sollte man sich an den (kostenpflichtigen) Microsoft Produkt Support Service (MS PSS) wenden.

    Ein weiterer Schemakonflikt könnte entstehen, wenn eine Verknüpfungskennung (Link Identifier) für ein Attribut durch eine Drittanbieterlösung bereits vergeben ist und ADPREP beim aktualisieren von bestehenden Attributen oder beim hinzufügen von neuen, dieselbe Verknüpfungskennung ebenfalls vergeben möchte. In diesem Fall sollte der MS PSS kontaktiert werden.


  • Wenn beim ausführen von ADPREP /FORESTPREP der Fehler Adprep konnte wegen eines Fehlers der Rückruffunktion nicht abgeschlossen werden erscheint, ist der Schuldige der Virenscanner. Der Echtzeitscanner (On-Access) agiert im Hintergrund als Systemdienst und scannt unsichtbar alle Dateien, Programme und den Arbeitsspeicher. Hat der Echtzeitscanner eine Datei oder ein Verzeichnis im Zugriff worauf ebenfalls beim ausführen von ADPREP /FORESTPREP der Zugriff auf dieselben Dateien oder Verzeichnisse benötigt wird, erscheint diese Fehlermeldung. Wenn dieser Fehler erscheint, muss der Virenscanner deaktiviert und anschließend erneut ADPREP /FORESTPREP ausgeführt werden. Danach kann der Virenscanner aktiviert werden.


  • Die Fehlermeldung Adprep konnte wegen eines Fehlers der Rückruffunktion nicht abgeschlossen werden kann auch erscheinen, wenn ADPREP /DOMAINPREP /GPPREP ausgeführt wurde. Dann muss der Virenscanner zuerst deaktiviert und anschließend ADPREP /DOMAINPREP /GPPREP erneut ausgeführt werden. Oder wenn im ADPREP-Protokoll der Fehler Error 0x80070020 (Error_sharing_Violation) protokolliert wird, liegt das ebenso am Virenscanner. Das Deaktivieren des Virenscanners sollte auch in diesem Fall zum Erfolg führen.

    Führt das deaktivieren des Virenscanners nicht zum Ziel, könnte es noch an den folgenden Ursachen liegen:

    1. Der Registry-Eintrag HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SYSVOL ist nicht vorhanden oder zeigt nicht auf das echte SYSVOL Verzeichnis %windir%\SYSVOL\sysvol. Wenn der Eintrag fehlt, muss ein REG_SZ Eintrag mit dem Pfad zum SYSVOL-Verzeichnis erstellt werden.

    2. Die Default Domain Policy (die GUID ist {31B2F340-016D-11D2-945F-00C04FB984F9} ) und Default Domain Controllers Policy (die GUID ist {6AC1786C-016F-11D2-945F-00C04fB984F9} ) fehlen im SYSVOL Verzeichnis.

    3. Im SYSVOL Verzeichnis fehlt das SCRIPTS Verzeichnis.

    4. Der NTFS-Bereitstellungspunkt und/oder die Bereitstellungspunkte zwischen %windir%\SYSVOL\sysvol\domain und %windir%\SYSVOL existieren nicht (mehr). Sollten die Bereitstellungspunkte fehlen, so können diese mit dem Tool LINKD erneut gesetzt werden.

    Die Befehle lauten:

    LINKD %windir%\SYSVOL\SYSVOL\<DNS-Domänenname> %windir%\sysvol\domain
    LINKD %windir%\SYSVOL\staging areas\<DNS-Domänenname> %windir%\SYSVOL\staging\domain
    LINKD %windir%\SYSVOL\sysvol\<FQDN>


  • Wenn ADPREP /FORESTPREP ausgeführt wurde, müssen die Änderungen zuerst auf den Infrastrukturmaster in der Domäne repliziert werden, in der der neue Server als zusätzlicher DC hinzugefügt werden soll. Erst dann kann mit Domänen-Admin Rechten der Befehl ADPREP /DOMAINPREP /GPPREP auf dem Infrastrukturmaster ausgeführt werden. Wurden die Änderungen noch nicht auf den Infrastrukturmaster repliziert oder wenn ADPREP /FORESTPREP nicht ausgeführt wurde, meldet das ADPREP /DOMAINPREP /GPPREP einen Fehler der darauf hinweist, dass die Gesamtstrukturweiten Informationen zuerst aktualisiert werden müssen.


  • Der Domänenfunktionsmodus muss sich im einheitlichen Modus (Windows 2000 pur, Windows Server 2003 oder Windows Server 2008) befinden. Ansonsten schlägt das Ausführen von ADPREP /DOMAINPREP /GPPREP fehl!

    Domänen- und Gesamtstrukturfunktionsmodus


  • Wenn ADPREP /RODCPREP mit Organisations- und Domänen-Admin Rechten auf einem Infrastrukturmaster ausgeführt wird, kann es zu folgendem Fehler kommen:

    Adprep konnte kein Replikat für Partition DC=ForestDnsZones,DC=Root-Domäne erreichen.
    ADPREP hat einen LDAP-Fehler festgestellt.
    Fehlercode: 0x0. Erweiterter Server-Fehlercode: 0x0, Server-Fehlermeldung:(null).

    und

    Adprep konnte kein Replikat für Partition DC=DomainDnsZones,DC=Domäne,DC=de erreichen.
    ADPREP hat einen LDAP-Fehler festgestellt.
    Fehlercode: 0x0. Erweiterter Server-Fehlercode: 0x0, Server-Fehlermeldung:(null).

    Dann muss der Infrastrukturmaster den entsprechenden DNS-Anwendungsverzeichnispartition idealerweise auf den aktuellen Infrastrukturmaster der Domäne verschoben werden. Wie das vonstattengeht, beschreibt der folgende Artikel:

    Die Infrastrukturmaster der Anwendungsverzeichnispartitionen

 

Weitere Informationen:
Die FSMO-Rollen verschieben

Sunday, February 21, 2010 2:21:44 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Installation | Migration | Schema  | 
 Sunday, February 07, 2010
Die Information wann ein AD-Objekt erstellt wurde, ist im einwertigen (single-valued) Attribut whenCreated gespeichert. Um also das Erstellungsdatum z.B. eines Domänen-Benutzers in Erfahrung zu bringen, muss eine Abfrage des Attributs whenCreated auf irgendeinem DC erfolgen, denn das Attribut whenCreated wird sowohl zwischen den Domänencontrollern (DCs), als auch in den globalen Katalog (GC) repliziert.

Um die Abfrage jedoch State of the Art durchzuführen, ist die Wahl des Werkzeugs die AD-PowerShell.

Andere Möglichkeiten um an diese Information zu kommen, werden im folgenden Artikel erläutert:

Erstellungsdatum eines Benutzerobjekts

 

 

Das Attribut whenCreated mit der AD-PowerShell abfragen


  • Wann ein bestimmter Benutzer erstellt wurde, erfährt man mit diesem Befehl:

    Get-ADUser -Filter {sAMAccountName -eq "Yusuf"} -Properties whenCreated | Select Name,whenCreated,distinguishedName | FT -Autosize -Wrap


    Oder mit diesem Befehl:

    $user = [ADSI]"LDAP://CN=<Benutzer>,OU=<OU>,DC=Domäne,DC=de"
    $user.Get("whencreated")


    Oder so:

    $User = Get-ADUser -Filter { sAMAccountName -eq "Yusuf" } -Properties whenCreated
    $User.whenCreated



  • Vor wie vielen Tagen ein bestimmter Benutzer erstellt wurde, erfährt man wie folgt:

    $Heute = Get-Date
    $Damals = Get-ADUser -Filter { Name -Like "Yusuf*" } -Properties whenCreated
    ($Heute - $Damals.whenCreated).Days



  • Alle Benutzer die in den letzten 90 Tagen erstellt wurden, lassen sich mit diesem AD-PowerShell Befehl anzeigen:

    Get-ADUser -Filter * -Properties whenCreated | where { $_.whenCreated -gt (Get-Date).AddDays(-90) } | FT Name,whenCreated,distinguishedName -Autosize -Wrap


    Eine andere Variante ist:

    $Date = (Get-Date) - (New-Timespan -Days 90)
    Get-ADUser -Filter { whencreated -gt $Date } -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap


    Oder diese Abfrage:

    $VorvielenTagen = (Get-Date).AddDays(-90)
    Get-ADUser -Filter { whenCreated -gt $VorvielenTagen } -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap


    Oder wie folgt:

    Get-ADUser -Filter * -Properties whenCreated | ? { ((Get-Date) - $_.whenCreated).Days -lt 90} | FT Name,whenCreated,Name,distinguishedName -Autosize -Wrap



  • Alle Benutzer die ab einem bestimmten Datum, in diesem Beispiel ab dem 01.01.2010 erstellt wurden, werden mit diesem AD-PowerShell Befehl angezeigt:

    $Date = New-Object DateTime(2010,01,01,0,0,0)
    Get-ADUser -Filter { whenCreated -gt $date } -Properties whenCreated | Select Name,whenCreated,distinguishedName | FT -Autosize -Wrap


    Oder mit diesem Befehl:

    $Date = New-Object System.Datetime -ArgumentList @(2010,01,01,0,0,0)
    Get-ADUser -Filter { whenCreated -gt $date } -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap


    Auch mit diesem Befehl werden alle Benutzer die ab dem 01.01.2010 erstellt wurden angezeigt:

    Get-ADUser -LDAPFilter "(&(objectCategory=person)(whenCreated>=20100101000000.0Z))" -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap



  • Alle Benutzer die bis vor 10 Tagen und früher erstellt wurden werden mit diesem Befehl angezeigt:

    $Date = Get-Date
    Get-ADUser -Filter * -Properties whenCreated | ? { ($date - $_.whenCreated).days -gt 10 } | FT Name,whenCreated,distinguishedName -Autosize -Wrap



  • Alle Benutzer die in einem bestimmten Zeitraum, hier zwischen dem 01.09.2009 und 30.09.2009 erstellt wurden, werden wie folgt angezeigt:

    $Anfang = Get-Date -Day 01 -Month 09 -Year 2009 -Hour 00
    $Ende = Get-Date -Day 30 -Month 09 -Year 2009 -Hour 23 -Minute 59
    Get-ADUser -Filter * -Properties whenCreated | ? { ($_.whenCreated -gt $Anfang) -and ($_.whenCreated -le $Ende) } | FT Name,whenCreated,distinguishedName -Autosize -Wrap



  • In den oben genannten AD-PowerShellbefehlen handelt es sich um Benutzerabfragen. Möchte man sich jedoch statt Benutzer --> Gruppen anzeigen lassen, so muss man lediglich in den Abfragen das Cmdlet Get-ADUser durch das Cmdlet Get-ADGroup ersetzen, mit dem man gezielt Gruppen abfragen kann.

    Demnach sieht die Abfrage nach einer bestimmten Gruppe so aus:

    Get-ADGroup -Filter {sAMAccountName -eq "ADConsultants"} -Properties whenCreated | Select Name,whenCreated,distinguishedName | FT -Autosize -Wrap


    Die Abfrage welche Gruppen in den letzten 90 Tagen erstellt wurden lautet so:

    Get-ADGroup -Filter * -Properties whenCreated | where { $_.whenCreated -gt (Get-Date).AddDays(-90) } | FT Name,whenCreated,distinguishedName -Autosize -Wrap


    Und welche Gruppen ab dem 01.01.2010 erstellt wurden, werden wie folgt angezeigt:

    $Date = New-Object DateTime(2010,01,01,0,0,0)
    Get-ADGroup -Filter { whenCreated -gt $date } -Properties whenCreated | Select Name,whenCreated,distinguishedName | FT -Autosize -Wrap



  • Sollen hingegen Computer abgefragt werden, so muss das Cmdlet Get-ADComputer angegeben werden, anstelle vom Cmdlet Get-ADUser.

    Alle Computerkonten die in den letzten 90 Tagen im AD erstellt wurden (wenn ein Client zur Domäne hinzugefügt wird), lassen sich mit diesem Befehl anzeigen:

    Get-ADComputer -Filter * -Properties whenCreated | ? { ((Get-Date) - $_.whenCreated).Days -lt 90} | FT Name,whenCreated,Name,distinguishedName -Autosize -Wrap

     

    Alle Computerkonten die ab dem 01.01.2010 im AD erstellt wurden abfragen:

    Get-ADComputer -LDAPFilter "(&(objectCategory=person)(whenCreated>=20100101000000.0Z))" -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap



    Alle Computerkonten die in einem bestimmten Zeitraum, hier zwischen dem 01.11.2009 und 30.11.2009 im AD erstellt wurden, werden wie folgt angezeigt:

    $Anfang = Get-Date -Day 01 -Month 11 -Year 2009 -Hour 00
    $Ende = Get-Date -Day 30 -Month 11 -Year 2009 -Hour 23 -Minute 59
    Get-ADComputer -Filter * -Properties whenCreated | ? { ($_.whenCreated -gt $Anfang) -and ($_.whenCreated -le $Ende) } | FT Name,whenCreated,distinguishedName -Autosize -Wrap



  • Oder wenn man Organisationseinheiten (OUs) anzeigen lassen möchte, muss man in den o.g. Befehlen Get-ADOrganizationalUnit angeben anstatt Get-ADUser.

    Alle OUs die ab dem 01.01.2010 erstellt wurden, werden folgendermaßen angezeigt:

    $Date = New-Object System.Datetime -ArgumentList @(2010,01,01,0,0,0)
    Get-ADOrganizationalUnit -Filter { whenCreated -gt $date } -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap



  • Sollen hingegen alle und nicht nur bestimmte AD-Objekte angezeigt werden, so muss in den o.g. Befehlen das Cmdlet Get-ADObject angeben werden.

    Alle AD-Objekte (Benutzer, Gruppen, Computer, OUs, Drucker etc.)  die seit dem 01.01.2010 erstellt wurden, werden folgendermaßen angezeigt:

    Get-ADObject -LDAPFilter "(&(objectClass=*)(whenCreated>=20100101000000.0Z))" -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap



  • Möchte man statt den neu erstellten Objekten die geänderten Objekte abfragen, so muss statt whenCreated, das Attribut whenChanged abgefragt werden. Dazu muss in den o.g. Befehlen nur das Attribut whenCreated, durch das ebenfalls einwertige Attribut whenChanged ersetzt werden. Auch whenChanged wird zum einen zwischen den DCs und zum anderen in den GC repliziert.

 

 

Weitere Informationen:
AD-PowerShell Befehle
Die Active Directory-Attribute hinter den Feldnamen
Gespeicherte Abfragen für dsa.msc
Alle Gruppenmitgliedschaften eines Benutzers exportieren
Den OS- und SP-Stand abfragen
Wie finde ich heraus wo sich ein Objekt befindet?
Die AD-Powershell im Windows Server 2008 R2

Sunday, February 07, 2010 2:06:18 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Powershell | Dokumentation | Erweiterte Abfragen  | 
 Sunday, January 24, 2010

Dem Administrator steht seit Windows Server 2003 die gespeicherte Abfrage im Snap-In Active Directory-Benutzer und -Computer (dsa.msc) zur Verfügung. Mit dieser Funktion hat man die Möglichkeit, Suchanfragen zu speichern. Die gespeicherten Abfragen stehen dann für erneute Suchanfragen zu einem späteren Zeitpunkt zur Verfügung. Komplexe Abfragen müssen somit nicht jedesmal neu erstellt werden und können bei gleichbleibenden Bedingungen jedesmal genutzt werden. Mit einer gespeicherten Abfrage können auch benutzerdefinierte Abfragen erstellt werden, die einen LDAP-Suchfilter enthalten.

Alle erstellten Abfragen werden im Ordner Gespeicherte Abfragen gespeichert. Dort können sie bearbeitet und gelöscht werden. Die gespeicherten Abfragen werden jedoch nur in der MMC gespeichert, in der sie durchgeführt wurden und dort auch nur unter dem angemeldeten Benutzer. Fügt man die dsa.msc in eine neue MMC (Start-Ausführen-MMC) hinzu, kann dieses Snap-In als MSC-Datei mit samt den gespeicherten Abfragen gespeichert und auf einer anderen Maschine verwendet bzw. den IT-Kollegen zur Verfügung gestellt werden.

Die gespeicherten Abfragen kann man aber auch als XML-Datei exportieren und auf einer anderen Maschine importieren. Mit einem Rechtsklick auf die gespeicherte Abfrage kann aus dem Kontextmenü die Abfrage mit der Option Abfragedefinition exportieren… als XML-Datei exportiert werden. Auf einer anderen Maschine lässt sich anschließend mit einem Rechtsklick auf den Ordner Gespeicherte Abfrage oder auf einem selbst erstellen Ordner die Option Abfragedefinition importieren… auswählen, um danach die XML-Datei zu importieren.  


In der folgenden ZIP-Datei sind 72 gespeicherte Abfragen, sortiert nach Benutzer-, Gruppen-, Computer-, Drucker und Exchange-Abfragen als XML-Datei gespeichert.


Gespeicherte-Abfragen.zip (55,66 KB)

 

Weitere Informationen:
Wie finde ich heraus wo sich ein Objekt befindet?
Die Active Directory-Attribute hinter den Feldnamen
Active Directory - Abfrage
AD-PowerShell Befehle

Sunday, January 24, 2010 5:12:46 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Dokumentation | Erweiterte Abfragen  | 
 Sunday, January 17, 2010

Den Security Descriptor (SD - die erweiterten Sicherheitseinstellungen) vom Container Deleted Objects, den es in der Domänen-, Konfigurations- sowie den beiden DNS-Anwendungsverzeichnispartitionen DomainDNSZones sowie ForestDNSZones gibt, kann man nicht so ohne weiteres abfragen bzw. auslesen.

Doch ab Windows Vista und Windows Server 2008 können mit LDP, das sich in den Remote Server Administration Tools (kurz RSAT) befindet, die Access Control Entries (ACEs) vom Deleted Objects Container angezeigt werden.

Nach dem man sich in LDP mit einem Domänencontroller verbunden und mit dem AD gebinded hat, trägt man unter Ansicht – Struktur entweder den Distinguished Name (DN) der Verzeichnispartition ein oder gibt direkt den LDAP-Pfad des Deleted Objects Container aus der gewünschten Verzeichnispartition an.

Anschließend ruft man mit einem Rechtsklick den Security Descriptor von Deleted Objects auf. Wie im Screenshot dargestellt muss man dazu auf Schwer – Sicherheitsbeschreibung klicken.


 

Im darauffolgenden Fenster muss bestätigt werden, dass man den SD von Deleted Objects aufrufen möchte.


 

Als Besitzer wird <null> angezeigt, was ein gewünschtes Verhalten ist. Denn bevor man sich die ACEs anzeigen lassen kann, muss man vorher die Besitzrechte von Deleted Objects übernehmen.


 

Gibt man im Feld „Besitzer“ z.B. nicht explizit den „Administrator“ (also den Domänen-Admin) an, wird als Besitzer die Gruppe „Domäne\Domänen-Admins“ für den Deleted Objects Container in der Domänenpartition eingetragen.


 


Nach der Besitzübernahme sieht man die eingetragenen ACEs. Es gibt lediglich zwei ACEs. Die Gruppe Builtin\Administratoren die das Leserecht besitzt und NT-AUTORITÄT\System, das den Vollzugriff besitzt.


 

 


Da in der Builtin\Administratoren Gruppe standardmäßig der Administrator und die beiden Gruppen „Domänen-Admins“ sowie „Organisations-Admins“ Mitglied sind, haben automatisch diese Konten das Leserecht auf den Container Deleted Objects. Selbstverständlich sollten nicht nur die bestehenden ACEs nicht verändert werden, sondern die gesamte Zugriffssteuerungsliste sollte nicht verändert und die Standardeinträge beibehalten werden.

 


Weitere Informationen:
Der Container Deleted Objects
Der Active Directory-Papierkorb im Windows Server 2008 R2

Sunday, January 17, 2010 6:46:07 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Dokumentation  | 
 Sunday, January 10, 2010

Neben dem CSVDE das seit Windows 2000 „on Bord“ existiert, kann mit der AD-PowerShell und einer Comma-Separated Value (CSV)-Datei ebenfalls ein Massenimport- sowie -export von Objekten durchgeführt werden. CSVDE steht bis einschließlich Windows Server 2003 nur auf einem Serverbetriebssystem zur Verfügung. Erst ab Windows Vista steht das CSVDE in den Remote Server Administration Tools (kurz RSAT) auf dem Client zur Verfügung. Doch auch unter Windows 2000 und Windows XP ist es möglich die Csvde.exe von einem Server aus dem Verzeichnis „%windir%\system32“ auf eine Admin-Workstation zu kopieren, um das Kommandozeilentool unter diesen beiden Clientversionen zu verwenden. Denn CSVDE steht weder im Adminpak, noch in den Windows Support Tools zur Verfügung.

Die AD-PowerShell steht ab Windows Server 2008 R2 sowie Windows 7 in den RSAT (Remote Server Administration Tools) zur Verfügung und kann ab Windows Server 2003 und Windows XP nachinstalliert werden.

Siehe:
Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0)


Mit der AD-PowerShell lässt sich ebenfalls eine CSV-Datei mit den Cmdlets Import-CSV sowie New-ADUser (für den Import von Benutzern) ins AD importieren und mit dem Cmdlet Export-CSV, Daten aus dem AD exportieren.

Der Vorteil eines Massenimports mit einer CSV-Datei ist, dass man sich die Datei mit den zu importierenden Objekten und Daten in Excel übersichtlich erstellen und als CSV-Datei speichern kann. Nach anschließender Überarbeitung der CSV-Datei kann dann der Import ins AD stattfinden. Auch der Export von vielen Objekten in eine CSV-Datei hat seine Vorteile. Die exportierte CSV-Datei lässt sich zur weiteren Bearbeitung in Excel importieren.

CSVDE und die AD-PowerShell können mit der Dateiendung CSV und TXT einen Im- sowie Export durchführen.


 

CSVDE zum Im- und Export verwenden

Mit CSVDE, das im Übrigen für Comma Separated Value Data Exchange steht, können Daten im kommaseparierten Format importiert sowie exportiert werden. CSVDE liest beim Import die Informationen aus einer Datendatei und erstellt anschließend AD-Objekte entsprechend den Anweisungen in der Datendatei. Es können jedoch keine bestehenden Objekte geändert werden. Nur das Hinzufügen von neuen Objekten ist möglich! Mit CSVDE können auch keine Benutzerkennwörter gesetzt werden.

Ist neben dem Im- oder Export das Ändern von bestehenden Objekten gewünscht, kann das neben der AD-PowerShell mit LDIFDE durchgeführt werden, das sich auch seit Windows 2000 standardmäßig auf einem Server befindet. LDIFDE kann zwar ebenfalls beim Import von neuen Benutzerobjekten keine Kennwörter setzen, doch dafür kann es Kennwörter von bestehenden Benutzerobjekten ändern, wenn vorher eine 128Bit SSL-Verbindung zum DC hergestellt wurde.

 

LDIFDE - LDAP Data Interchange Format Data Exchange


CSVDE kann beliebige Objekte, wie beispielsweise Organisationseinheiten (OU), Benutzer-, Gruppen- und Computerkonten ins AD importieren. Damit CSVDE seine Arbeit korrekt verrichtet, müssen alle notwendigen Parameter angegeben werden.

 

Die Parameter die für den Im- sowie Export gelten:

-c Dieser Parameter ersetzt bestimmte Daten der Datendatei. Hat man z.B. eine Datendatei zur Hand in der der Distinguished Name der Objekte angepasst werden muss, so hat man zwei Möglichkeiten: Entweder man nutzt im Editor (Notepad) die „Ersetzen…“ Funktion oder man verwendet diesen Parameter, ohne die Datei bearbeiten zu müssen. Die Eingabe würde so aussehen: „-c <DC=alte,DC=Domäne> <DC=neue,DC=Domäne>“.
-f Mit diesem Parameter wird die Datei für den Im- bzw. Export angegeben.
-j Wenn ein Im- oder Export aus welchen Gründen auch immer nicht funktioniert, sollte man diesen Parameter angeben, gefolgt von einem Pfad (z.B. „-j C:\“). Im Fehlerfall werden zwei Protokolldateien erstellt „csv.log“ und „csv.err“. Bei Erfolg wird lediglich die „csv.log“ erstellt.
-s Mit diesem Parameter kann man gezielt einen DC angeben, der für den Im- oder Export verwendet werden soll.
-v Bei der Angabe dieses Parameters wird der ausführliche Modus aktiviert. Es werden in der CMD mehr Informationen angezeigt.
-t Dieser Parameter gibt den LDAP-Port an. Standardmäßig wird der LDAP-Port 389 verwendet. Möchte man aber Daten z.B. von einem globalen Katalog exportieren, so muss der Port 3268 angegeben werden.
-u Umlaute in den zu exportierenden Daten werden mit diesem Parameter korrekt dargestellt. Dieser Parameter verwendet das Unicodeformat.
csvde -? In gewohnter Windows Manier zeigt dieser Befehl die Hilfe zu CSVDE an.

 

Die relevanten Parameter für einen Import sind:

-f Mit diesem Parameter wird die Datei für den Import angegeben.
-i
Dieser Parameter aktiviert den Importmodus. Standardmäßig wird CSVDE ohne Angabe dieses Parameters im Export-Modus ausgeführt.
-k Damit die Fehler „Beschränkungsverletzung“ und „Objekt ist bereits vorhanden“ beim Import ignoriert werden, gilt es diesen Parameter anzugeben.



Die relevanten Parameter für einen Export sind:

-d Dieser Parameter gibt den DN für den zu exportierenden LDAP-Pfad an.
-f Mit diesem Parameter wird die Datei für den Export angegeben.
-g Deaktiviert die seitenweise Suche.
-l Die zu exportierenden Attribute werden mit diesem Parameter angeben (durch Komma getrennt). Dieser Parameter sollte nicht zusammen mit dem Parameter -i verwendet werden, da beide Parameter für andere Szenarien gedacht sind.
-m Aktiviert die SAM-Logik beim Export. Mit diesem Parameter werden die Systemattribute wie z.B. ObjectGUID, objectSID und pwdLastSet nicht exportiert. Daher ist es sinnvoll stets diesen Parameter beim Export zu verwenden. Denn wenn die gleiche Datendatei zum Import verwendet werden soll, müssen ohnehin die Systemattribute aus der Datendatei entfernt werden, da ansonsten der Import fehlschlägt.
-n Exportiert keine Binärwerte.
-o Die Liste der Attribute (durch Komma getrennt), die beim Export ausgelassen werden sollen, werden mit diesem Parameter angegeben.
-p Den Suchbereich (Base/OneLevel/SubTree) gibt man mit diesem Parameter an.
-r Mit diesem Parameter gibt man den LDAP-Suchfilter an. Wird der Parameter nicht angegeben, nimmt CSVDE standardmäßig diesen Suchfilter "(objectClass=*)".




Einen Import mit CSVDE durchführen


Für den Import wird zuerst eine Dateidatei mit den zu importierenden Attributen sowie gewünschten Werten benötigt. Diese Datei lässt sich einfach und übersichtlich in Excel erstellen.

Für den erfolgreichen Import muss die Datendatei folgenden Bedingungen entsprechen:

  • In der ersten Zeile der Exceldatei müssen die zu importierenden AD-Attribute angegeben werden. Welche Attribute hinter den Feldnamen stecken, erfährt man in diesem Artikel:

    Die Active Directory-Attribute hinter den Feldnamen
  • Zwingende- und Mindestangaben für den Import von Benutzern und Gruppen sind: DN, objectClass und sAMAccountName. Für den Import von Organisationseinheiten (OUs) sind es die beiden Attribute DN und objectClass.
  • Die Reihenfolge in der die Attribute in der ersten Zeile angegeben werden, spielt keine Rolle.
  • Die Reihenfolge der Werte bzw. Feldinhalte ab der zweiten Zeile in der Datendatei, müssen allerdings mit der ersten übereinstimmen.
  • Sollen neben Benutzern auch Gruppen importiert werden, in denen die zu importierenden Benutzer Mitglied sein sollen, so müssen die Benutzereinträge vor den Gruppeneinträgen in der Datendatei enthalten sein. Oder wenn auch die OU importiert werden soll, in der die Benutzer und Gruppen erstellt werden sollen, so muss der Eintrag zum erstellen der OU ebenfalls vor den Benutzer- und Gruppenobjekten zuerst in der Datendatei enthalten sein. Beide Fälle sind in diesem Beispiel aufgeführt.
  • Wird ein Wert für ein angegebenes Attribut nicht eingetragen, muss es dennoch in der Datendatei durch ein Komma angegeben werden.
  • Systemattribute wie z.B. die ObjectSID oder ObjectGUID können nicht importiert werden. Wie es der Name „Systemattribute“ schon verrät, sind das Attribute die vom System vergeben werden.
  • Die Exceldatei könnte z.B. so aussehen:





  • Ist die Exceldatei fertiggestellt, muss diese als CSV-Datei abgespeichert werden. Dazu klickt man in Excel in der Menüleiste auf das Diskettensymbol oder verwendet das Tastaturkürzel „STRG + S“. Das Fenster „Speichern unter“ öffnet sich. Als Dateityp wählt man die Option „CSV (Trennzeichen-getrennt)(*.csv)“ aus und vergibt einen Dateinamen. Mit einem Klick auf Speichern folgt eine Warnung die darauf hinweist, dass der gewählte Dateityp keine Arbeitsmappen mit mehreren Blättern unterstützt und deshalb nur das aktuelle Blatt gespeichert wird. Mit einem Klick auf OK erscheint eine weitere Information die darauf hinweist, dass in der CSV-Datei Merkmale enthalten sein können, die mit „CSV (Trennzeichen-getrennt)“ nicht kompatibel sind. Mit einem Klick auf „Ja“ wird nun endlich die CSV-Datei gespeichert.
  • Nun muss die CSV-Datei mit dem „Editor“ (Notepad) noch bearbeitet werden. Mit einem Rechtsklick auf die CSV-Datei wählt man à Öffnen mit à Editor. Danach öffnet sich die CSV-Datei im Editor.





  • Als Trennzeichen verwendet Excel das Semikolon (;), das durch das Komma (,) ersetzt werden muss. Dies kann man am einfachsten, wenn man im Editor auf Bearbeiten – Ersetzen… klickt. Dort gibt man dann im Feld „Suchen nach“ das Semikolon an und im Feld „Ersetzen durch“ das Komma. Anschließend werden mit einem Klick auf „Alle ersetzen“ die Änderungen durchgeführt.
  • Werte die selbst ein Komma enthalten, müssen in Anführungszeichen (im Volksmund auch als „Gänsefüßchen“ bekannt) gesetzt werden. Das kann man ebenfalls durch die Ersetzen-Funktion im Editor durchführen. In diesem Beispiel müssen die Werte von DN, displayName und Member in Anführungszeichen gesetzt werden.





    Vorsicht: Importiert man so wie in diesem Beispiel auch eine Gruppe in der ebenfalls die zu importierenden Benutzer Mitglied sein sollen, müssen die DNs der Benutzer zwingend durch eine Semikolon getrennt werden. Des Weiteren darf das Anführungszeichen nur am Anfang und am Ende der Einträge stehen. Also: <DN Benutzer1>;<DN Benutzer2>;<DN Benutzer3>.
  • Die fertige Datendatei sieht dann wie folgt aus:





  • Die gelben Markierungen in dem Beispiel kennzeichnen die Werte die Kommas enthalten und somit in Anführungszeichen gesetzt werden müssen und die roten Markierungen kennzeichnen die nicht enthaltenen Werte, die trotzdem durch ein Komma gesetzt werden müssen.
  • Zur Vollständigkeit, hier der komplette Inhalt der Datendatei:

    DN,objectClass,givenname,sn,displayname,description,sAMAccountName,userPrincipalName,Member,groupType,userAccountControl
    "OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",organizationalUnit,,,,,,,,,
    "CN=Sabine Mueller,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Sabine,Mueller,"Mueller, Sabine",Festangestellte,sabine,sabine@ad2008r2.dikmenoglu.de,,,544
    "CN=Klara Tolle,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Klara,Tolle,"Tolle, Klara",,Klara,Klara@ad2008r2.dikmenoglu.de,,,544
    "CN=Simone Wagner,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Simone,Wagner,"Wagner, Simone",Aushilfe,Simone,Simone@ad2008r2.dikmenoglu.de,,,544
    "CN=Maria Schmitt,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Maria,Schmitt,"Schmitt, Maria",,Maria,Maria@ad2008r2.dikmenoglu.de,,,544
    "CN=Bettina Bauer,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Bettina,Bauer,"Bauer, Bettina",Befristet,Bettina,Bettina@ad2008r2.dikmenoglu.de,,,544
    "CN=Andrea Schmidt,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Andrea,Schmitt,"Schmitt, Andrea",,Andrea,Andrea@ad2008r2.dikmenoglu.de,,,544
    "CN=Sonja Neu,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Sonja,Neu,"Neu, Sonja",Praktikant,Sonja,Sonja@ad2008r2.dikmenoglu.de,,,544
    "CN=Silke Vogt,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Silke,Vogt,"Vogt, Silke",Festangestellte,Silke,Silke@ad2008r2.dikmenoglu.de,,,544
    "CN=AD-Consultants,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",group,,,,,AD-Consultants,,"CN=Sabine Mueller,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de;CN=Silke Vogt,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",-2147483644,
  • Die Datendatei kann dann mit diesem Befehl importiert werden:
    Csvde -i -f C:\Datendatei.txt

    Wenn beim Import ein Fehler auftritt, sollte man den Parameter -j verwenden damit die beiden Protokolldateien erstellt werden, um dann dem Fehler auf die Schliche zu kommen. Der Befehl würde dann so aussehen:
    Csvde -i –v -f C:\Datendatei.txt –j C:\

 

 

Mit dem Attribut userAccountControl den Kennwortstatus der zu importierenden Benutzer steuern

Gibt man beim Import von Benutzern das Attribut userAccountControl in der Datendatei nicht oder mit dem Wert 514 an, erhält man anschließend deaktivierte Benutzer im AD. Denn wie bereits anfangs in diesem Artikel erwähnt, kann CSVDE keine Kennwörter setzen, was zwingend notwendig ist um hinterher aktive Benutzer zu erhalten. Der Wert 512 im userAccountControl würde zwar aktive Benutzer erstellen, jedoch reicht dass alleine nicht aus, da auch hierbei kein Kennwort vergeben wird. Das Deaktivieren der Kennwortrichtlinie würde zwar den gewünschten Erfolg bringen, nämlich nach dem Import aktivierte Benutzer im AD zu erhalten, jedoch ist das in einer produktiven Umgebung keineswegs empfohlen! Das ist höchstens für eine Testumgebung zulässig!

Aber das Abschalten der Kennwortrichtlinie ist auch nicht notwendig. Bekanntlich besteht das userAccountControl aus einer Bitmaske, bestehend aus mehreren Flags. Kombiniert man zwei davon, erhält man nach dem Import aktivierte Benutzer ohne ein Kennwort vergeben zu haben!

Kombiniert man die beiden Flags:

NORMAL_ACCOUNT

512

PASSWD_NOTREQD

32

und trägt in der Datendatei als Wert für userAccountControl 544 ein (wie im o.g. Beispiel), erhält man aktive Benutzerkonten im AD!

Die Benutzer melden sich ohne ein Kennwort an und werden direkt aufgefordert ein neues Kennwort zu vergeben. Denn das userAccountControl mit dem Wert 544 in den Benutzerobjekten aktiviert die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“.


How to use the UserAccountControl flags to manipulate user account properties

 

 

Gruppen mit CSVDE importieren


Die Werte die in der Datendatei für einen Import von Gruppen zwingend angegeben werden müssen sind: DN,objectClass und sAMAccountName. Somit werden aber lediglich „globale Sicherheitsgruppen“ erstellt. Daher ist es ratsam noch das Attribut groupType anzugeben, um den „Gruppenbereich“ und „Gruppentyp“ zu bestimmen.

Der Import der Datendatei erfolgt mit diesem Befehl:
Csvde -i -f C:\Gruppen.txt


Beispiele einer Datendatei zum Import von Gruppen

# Eine domänenlokale Sicherheitsgruppe importieren:
DN,objectClass,sAMAccountName,groupType
"CN=DLSG,OU=<OU>,DC=Domäne,DC=de",group,DLSG,-2147483644


# Eine globale Sicherheitsgruppe importieren:
DN,objectClass,sAMAccountName
„CN=GG1,OU=<OU>,DC=Domäne,DC=de“,group,GG1

Oder:
DN,objectClass,sAMAccountName,groupType
„CN=GG1,OU=<OU>,DC=Domäne,DC=de“,group,GG1,-2147483646


# Eine universelle Sicherheitsgruppe importieren:
DN,objectClass,sAMAccountName,groupType
"CN=USG,OU=<OU>,DC= Domäne,DC=de ",group,USG,-2147483640


# Eine domänenlokale Verteilergruppe importieren:
DN,objectClass,sAMAccountName,groupType
"CN=DLVG,OU=<OU>,DC= Domäne,DC=de ",group,DLVG,4


# Eine globale Verteilergruppe importieren:
DN,objectClass,sAMAccountName,groupType
"CN=GVG,OU=<OU>,DC= Domäne,DC=de ",group,GVG,2


# Eine universelle Verteilergruppe importieren:
DN,objectClass,sAMAccountName,groupType
"CN=UVG,OU=<OU>,DC= Domäne,DC=de ",group,UVG,8

 

 

Einen Export mit CSVDE durchführen


CSVDE wird standardmäßig ohne die Angabe eines Parameters im Export-Modus ausgeführt. Die Kunst beim Export ist es, lediglich die Informationen zu exportieren die von Interesse sind. Daher ist das entscheidende beim Export der Filter, der mit dem Parameter
-r eingeleitet wird und die Attribute, die mit dem Parameter –l angegeben werden.

 

Beispiel Exportbefehle:

# Alle Benutzer mit den Attributen sAMAccountName und name exportieren:
Csvde -m -n -u -f C:\AlleBenutzer.txt -r "(&(objectclass=user)(objectcategory=person))" -l sAMAccountName,name


# Alle Benutzer aus einer OU mit den Attributen sAMAccountName und name exportieren:
Csvde -m -n -u -f C:\ExportBenutzer.txt -s DCON01 -d "OU=<OU>,DC=Domäne,DC=TLD" –p OneLevel –r "(&(objectClass=user)(objectcategory=person))" -l sAMAccountName,name


# Alle Kontakte mit den angegebenen Attributen exportieren:
Csvde -m -n -u -r "(objectClass=Contact)" -d "OU=<OU>,DC=Domäne,DC=de" -l displayname,telephoneNumber,othertelephone,mobile,homePhone,Pager,facsimileTelephoneNumber,ipPhone,otherHomePhone,otherPager,otherMobile,otherFacsimileTelephoneNumber,otherIpPhone -f C:\Kontakte.txt


# Mitglieder einer bestimmten Gruppe exportieren:
Csvde -m -n -u -f C:\Benutzer.txt -r "(&(objectcategory=user)(memberof=CN=<Gruppe>,OU=<OU>,DC=Domäne,DC=de))" -l samaccountname,name


# Alle Benutzer anzeigen, die NICHT Mitglied einer bestimmten Gruppe sind:
Csvde –m –n –u –f C:\Benutzer.txt -r „(&(objectCategory=person)(objectClass=user)(!memberof=CN=<Gruppe>,OU=<OU>,DC=Domäne,DC=de))“ –l name,sAMAccountName


# Alle Benutzer mit ihrem DN und dem LastLogon exportieren:
Csvde -m -n -u -f C:\Benutzer.txt -r "(&(objectClass=user)(objectCategory=person))" -l DN,LastLogon

Der Wert von LastLogon kann dann folgendermaßen in unsere Zeitangabe umgerechnet werden:

Einen Large Integer Wert umrechnen


# Alle Benutzer mit ihrem Anmeldenamen und dem eingetragenen Anmeldeskript exportieren:
Csvde -f C:\BenutzermitAnmeldeskript.txt -r "(&(objectClass=user)(scriptPath=*))" -l sAMAccountName,scriptPath


# Alle Benutzerobjekte exportieren, die NICHT deaktiviert sind (also aktive Benutzer):
Csvde -m -n -u -f C:\AktiveBenutzer.txt -r "(&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))" –l sAMAccountName,name


# Alle Benutzer exportieren und überprüfen, bei wem die Option „Zugriff gestatten“ im Reiter „Einwählen“ aktiviert ist. Steht als Wert TRUE, ist die Option aktiviert:
Csvde -f C:\Ras.txt -u -r "(&(objectClass=user)(objectCategory=person))" -l name,sAMAccountName,msNPAllowDialin


# Alle deaktivierten Computerkonten exportieren:
Csvde –f C:\DeaktiviertePCs.txt –r „(&(objectclass=computer)(userAccountControl:1.2.840.113556.1.4.803:=2))“ –l DN


# Alle Public Folder exportieren:
Csvde -m -n -u -f C:\PublicFolders.txt -r "(objectClass=publicFolder)" -l name


# Alle SMTP-Adressen exportieren:
Csvde -m -n -u -f C:\SMTPList.txt -d "DC=Domäne,DC=de" -L proxyaddresses –r "(proxyaddresses=*smtp:*@*)"



Weitere Filter können aus diesem Artikel entnommen werden:

Gespeicherte Abfragen


 


 

Eine Datendatei mit Excel, zum Import mit der AD-PowerShell erstellen


Auch mit der AD-PowerShell können beliebige Objekte, wie beispielsweise Organisationseinheiten (OU), Benutzer-, Gruppen- und Computerkonten ins AD importiert werden. Für den erfolgreichen Import mit der AD-PowerShell wird zum einen eine Datendatei mit den korrekten Angaben benötigt und zum zweiten, der AD-PowerShell Befehl mit dem der Import durchgeführt wird.

Für das Erstellen einer Datendatei um Benutzerobjekte in Verbindung mit der AD-PowerShell zu importieren, gilt es folgendes zu beachten:

  • In der ersten Zeile müssen die Felder stehen, für die man einen Wert eintragen möchte. Möchte man Benutzer importieren, ist es hilfreich sich in der AD-PowerShell mit dem Befehl Get-Help New-ADUser -detailed die Syntax des Cmdlets anzuschauen. Dort werden die genauen Feldbezeichnungen genannt, wie es die AD-PowerShell in der Datendatei gerne hätte. Die Angaben unterscheiden sich teilweise von den unter CSVDE, da die AD-PowerShell nicht den LDAP-Display-Name eines Attributs verwendet (anstatt „sn“ für Nachname möchte die AD-PowerShell die Angabe „surname“)





  • Zwingend notwendige und die Mindestangaben für den Import von Benutzerobjekten sind: Path, Name und sAMAccountName. Für Gruppenobjekte sind es die Werte: Path, GroupScope, Name und sAMAccountName.
  • Im Gegensatz zu CSVDE darf es nicht DN (für Distinguished Name) heißen, sondern muss Path lauten. Dabei darf auch nicht das eigentliche Objekt (sprich der RDN) mit angegeben werden. Des Weiteren ist auch die Angabe von objectClass (oder userAccountControl) nicht notwendig, da durch das Cmdlet New-ADUser die Information bereits mitgegeben wird.
  • In welcher Reihenfolge die Felder in der ersten Zeile angegeben werden, spielt keine Rolle. Die Reihenfolge der Werte bzw. Feldinhalte ab der zweiten Zeile müssen jedoch mit der ersten übereinstimmen.
  • Wird ein Wert für ein angegebenes Feld nicht eingetragen, muss es dennoch in der Datendatei durch ein Komma angegeben werden.
  • Systemattribute wie z.B. die ObjectSID oder ObjectGUID können nicht importiert werden. Wie es der Name „Systemattribute“ schon verrät, sind das Attribute die vom System vergeben werden.
  • Beispielsweise könnte die Excel-Datei wie folgt aussehen:





  • Ist die Exceldatei fertiggestellt, gilt es diese als CSV-Datei abzuspeichern. Dazu klickt man in Excel in der Menüleiste auf das Diskettensymbol oder verwendet das Tastaturkürzel „STRG + S“. Das Fenster „Speichern unter“ öffnet sich. Als Dateityp wählt man die Option „CSV (Trennzeichen-getrennt)(*.csv)“ aus und vergibt einen Dateinamen. Es folgt eine Warnung die darauf hinweist, dass der gewählte Dateityp keine Arbeitsmappen mit mehreren Blättern unterstützt und deshalb nur das aktuelle Blatt gespeichert wird. Mit einem Klick auf OK erscheint eine weitere Information die darauf hinweist, dass in der CSV-Datei Merkmale enthalten sein können, die mit „CSV (Trennzeichen-getrennt)“ nicht kompatibel sind. Mit einem Klick auf „Ja“ wird nun endlich die CSV-Datei gespeichert.
  • Nun muss die CSV-Datei mit dem „Editor“ (Notepad) noch bearbeitet werden. Mit einem Rechtsklick auf die CSV-Datei wählt man à Öffnen mit à Editor. Danach öffnet sich die CSV-Datei im Editor.





  • Excel verwendet nämlich als Trennzeichen das Semikolon (;), das durch das Komma (,) ersetzt werden muss. Dies kann man am einfachsten, wenn man im Editor auf Bearbeiten – Ersetzen… klickt. Dort gibt man dann im Feld „Suchen nach“ das Semikolon an und im Feld „Ersetzen durch“ das Komma. Anschließend werden mit einem Klick auf „Alle ersetzen“ die Änderungen durchgeführt.
  • Werte die selbst ein Komma enthalten, müssen in Anführungszeichen (im Volksmund auch als „Gänsefüßchen“ bekannt) gesetzt werden. Das kann man ebenfalls durch die Ersetzen-Funktion im Editor durchführen. In diesem Beispiel müssen die Werte von „Path“ sowie „Name“ in Anführungszeichen gesetzt werden.





  • Die fertige Datendatei sieht dann wie folgt aus:





  • Die gelben Markierungen in dem Beispiel kennzeichnen die Werte die Kommas enthalten und somit in Anführungszeichen gesetzt werden müssen und die roten Markierungen kennzeichnen die nicht enthaltenen Werte, die trotzdem durch ein Komma gesetzt werden müssen. In diesem Fall sind es die Felder „description“ und „HomePage“.
  • Zur Vollständigkeit, hier der komplette Inhalt der Datendatei:

    Path,name,givenname,surname,displayname,description,Office,emailaddress,HomePage,streetAddress,pobox,city,state,postalCode,country,userPrincipalName,sAMAccountName,profilePath,scriptPath,title,department,company
    "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Mueller, Sabine",Sabine,Mueller,Sabine Mueller,Festangestellte,Buero Mainz,s.mueller@dikmenoglu.de,http://blog.dikmenoglu.de,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,sab@ad2008r2.dikmenoglu.de,sab,\\Server\Profile\smueller,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH
    "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Tolle, Klara",Klara,Tolle,Klara Tolle,,Buero Frankfurt,k.tolle@dikmenoglu.de,,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,kla@ad2008r2.dikmenoglu.de,kla,\\Server\Profile\ktolle,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH
    "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Wagner, Simone",Simone,Wagner,Simone Wagner,Aushilfe,Buero Istanbul,s.wagner@dikmenoglu.de,http://blog.dikmenoglu.de,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,sim@ad2008r2.dikmenoglu.de,sim,\\Server\Profile\swagner,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH
    "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Schmitt, Maria",Maria,Schmitt,Maria Schmitt,,Buero Berlin,m.schmitt@dikmenoglu.de,,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,mar@ad2008r2.dikmenoglu.de,mar,\\Server\Profile\mschmitt,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH
    "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Bauer, Bettina",Bettina,Bauer,Bettina Bauer,Befristet,Buero Muenchen,b.bauer@dikmenoglu.de,http://blog.dikmenoglu.de,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,bet@ad2008r2.dikmenoglu.de,bet,\\Server\Profile\bbauer,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH
    "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Schmidt, Andrea",Andrea,Schmidt,Andrea Schmidt,,Buero Hamburg,a.schmidt@dikmenoglu.de,,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,and@ad2008r2.dikmenoglu.de,and,\\Server\Profile\aschmidt,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH
    "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Neu, Sonja",Sonja,Neu,Sonja Neu,Praktikantin,Buero Stuttgart,s.neu@dikmenoglu.de,http://blog.dikmenoglu.de,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,son@ad2008r2.dikmenoglu.de,son,\\Server\Profile\sneu,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH
    "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Vogt, Silke",Silke,Vogt,Silke Vogt,Festangestellte,Buero Dresden,s.vogt@dikmenoglu.de,http://blog.dikmenoglu.de,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,sil@ad2008r2.dikmenoglu.de,sil,\\Server\Profile\svogt,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH

 


 

Das Importieren der Datendatei mit der AD-PowerShell


Zum importieren von Benutzerobjekten mit der AD-PowerShell hat man folgende Möglichkeiten.

 

Variante 1

Der AD-PowerShell Befehl mit dem die Datendatei ins AD importiert wird sieht so aus:

Import-CSV C:\Massenimport.csv | New-ADUser -AccountPassword (ConvertTo-SecureString –AsPlainText “Pa$$w0rd!” -Force) -Enabled:$true -ChangePasswordAtLogon:$true

Wie unschwer aus dem Befehl zu erkennen ist, wird mit dem Cmdlet Import-CSV der Inhalt der Datendatei Massenimport.csv durch die Pipeline-Funktion (|) der AD-PowerShell, in das Cmdlet New-ADUser gepiped. Der Vorteil der AD-PowerShell gegenüber CSVDE ist, dass mit CSVDE keine Kennwörter gesetzt werden können, mit der AD-PowerShell aber sehr wohl! Mit diesem AD-PowerShell Befehl erhält jeder Benutzer das Startkennwort Pa$$w0rd!. Durch die Angabe von -Enabled:$true erhält man nach dem Import aktivierte Benutzer (wozu zwingend ein Kennwort vergeben werden muss). Die Angabe von -ChangePasswordAtLogon:$true aktiviert bei allen importierten Benutzern die Kontooption Benutzer muss Kennwort bei der nächsten Anmeldung ändern.

 

 

Variante 2

Eine andere Variante zum importieren von Benutzerobjekten mit dem gleichen Ergebnis, ist dieser Befehl:

Import-Csv C:\Massenimport.csv | Foreach { New-ADUser -Path $_.path -Name $_.name -givenname $_.givenname -surname $_.surname -displayname $_.displayname -office $_.office -emailaddress $_.emailaddress -HomePage $_.HomePage -streetaddress $_.streetaddress -pobox $_.pobox -city $_.city -state $_.state -postalCode $_.postalCode -userPrincipalName $_.userPrincipalName -sAMAccountName $_.sAMAccountName -profilePath $_.profilePath -scriptPath $_.scriptPath -title $_.title -department $_.department -company $_.company -PasswordNotRequired:$true -Enabled:$true }


Die Parameter wie z.B. „-Path $_.path“ entsprechen den Angaben aus der ersten Zeile der Datendatei. Dabei spielt die Reihenfolge bei der Angabe der Werte keine Rolle. Z.B. könnte die erste Zeile in der Datendatei so aussehen: sAMAccountName,Path,Name,… und der Befehl wie folgt:
Import-Csv C:\Massenimport.csv | Foreach { New-ADUser -Name $_.name –sAMAccountName $_.sAMAccountName -Path $_.path

Die Hauptsache ist, es werden alle Felder im Befehl angegeben, die auch in der Datendatei enthalten sind.

Auch mit diesem Befehl erhält man nach dem Import aktivierte Benutzerkonten im AD! Denn der Parameter -PasswordNotRequired:$true bewirkt nichts anderes, als das im Attribut userAccountControl im Benutzerobjekt als Wert 544 eingetragen wird. Das userAccountControl besteht nämlich aus einer Bitmaske, bestehend aus mehreren Flags.

Der Parameter -PasswordNotRequired mit dem Wert $true kombiniert diese beiden Flags:

NORMAL_ACCOUNT

512

PASSWD_NOTREQD

32

Doch der Eintrag -PasswordNotRequired:$true alleine reicht nicht aus, um aktivierte Benutzerkonten zu erhalten. Es muss zwingend noch der Parameter mit dem Wert -Enabled:$true eingegeben werden. Erst dadurch sind die Benutzerkonten aktiv.

Die Benutzer melden sich dann ohne ein Kennwort an und werden direkt aufgefordert ein neues Kennwort zu vergeben. Denn der Wert 544 im userAccountControl aktiviert bei jedem importierten Benutzerobjekt die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“.


How to use the UserAccountControl flags to manipulate user account properties

 

 

Variante 3

Eine weitere Möglichkeit und recht simpel noch dazu, stellt dieser Befehl zum importieren von Benutzerobjekten dar:

Import-Csv -Path C:\Massenimport.txt | New-ADUser -PasswordNotRequired:$true -Enabled:$true


Auch bei diesem Befehl erhält man anschließend aktive Benutzerkonten im AD. Die Benutzer melden sich dann ohne ein Kennwort an der Domäne an und werden direkt aufgefordert
ein neues Kennwort zu vergeben.


 

 


Gruppen mit der AD-PowerShell importieren


Die Werte die in der Datendatei für einen Import von Gruppen zwingend angegeben werden müssen sind: Path, GroupScope, Name und sAMAccountName. Somit werden lediglich Sicherheitsgruppen erstellt. Daher ist es ratsam noch GroupCategory anzugeben, um den „Gruppentyp“ zu bestimmen.

Der Import der Datendatei erfolgt mit diesem Befehl:
Import-CSV C:\Gruppen.csv | New-ADGroup


Beispiele einer Datendatei zum Import von Gruppen:

# Eine domänenlokale Sicherheitsgruppe importieren:
Path,GroupCategory,GroupScope,Name,sAMAccountName,description
"OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",security,domainlocal,DLSG1,DLSG1,Vertrieb

# Eine globale Sicherheitsgruppe importieren:
Path,GroupCategory,GroupScope,Name,sAMAccountName,description
"OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",security,global,GSG1,GSG1,Buchhaltung

# Eine universelle Sicherheitsgruppe importieren:
Path,GroupCategory,GroupScope,Name,sAMAccountName,description
"OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",security,universal,USG1,USG1,Einkauf


# Eine domänenlokale Verteilergruppe importieren:
Path,GroupCategory,GroupScope,Name,sAMAccountName,description
"OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",distribution,domainlocal,DLVG1,DLVG1,Key Account

# Eine globale Verteilergruppe importieren:
Path,GroupCategory,GroupScope,Name,sAMAccountName,description
"OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",distribution,global,GVG1,GVG1,Techniker

# Eine universelle Verteilergruppe importieren:
Path,GroupCategory,GroupScope,Name,sAMAccountName,description
"OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",distribution,universal,UVG1,UVG1,Support

 


 

Einen Export mit der AD-PowerShell durchführen


Wie mit jedem Werkzeug mit dem man einen Export durchführt, kommt es auch bei der AD-PowerShell auf die gewünschten Informationen und somit auf den Filter an. Wird ein „falscher“ Filter genutzt, bekommt man unter Umständen gar keine Informationen exportiert. Nutzt man hingegen einen „ungenauen“ Filter, erhält man diesmal ggf. zu viele Informationen die es dann mühselig zu durchforsten gilt. Die wichtigste Aufgabe beim Export ist es zu definieren, welche Informationen benötigt werden und dann den Filter (sofern möglich) zu bauen.

Die folgenden Beispiele zeigen jeweils eine LDAP-Abfrage, die dann durch die Pipeline-Funktion der AD-PowerShell an das Cmdlet Export-Csv übergeben und somit die Ausgabe exportiert wird.

 

Export Beispiele

# Alle Benutzer aus einer OU mit allen Eigenschaften exportieren:
Get-ADUser -Filter * -Searchbase "OU=<OU>,DC=Domäne,DC=de" -Properties * | Export-Csv C:\Export.txt -NoTypeInformation

Hinweis: Nutzt man das Cmdlet Get-ADUser um Benutzerinformationen zu exportieren, werden in jedem Fall diese Attribute ausgegeben: DistinguishedName, Enabled, givenName, Name, ObjectClass, ObjectGUID, SamAccountName, ObjectSID, Surname, userPrincipalName. Gibt man beim Parameter -Properties eigene Attribute an, werden diese zusätzlich zu den bereits genannten Attributen mit ausgegeben.


# Alle Benutzerkonten exportieren, die als Vorgesetzten „Yusuf“ eingetragen haben:
Get-ADUser -Filter { Manager -eq "Yusuf" } | Export-Csv C:\Export.txt -NoTypeInformation


# Alle Organisationseinheiten (OU) der Domäne exportieren:
Get-ADOrganizationalUnit -Filter {Name -Like „*“} | Export-Csv C:\OUs.txt -NoTypeInformation


# Alle Objekte einer OU exportieren:
Get-ADObject -Filter { Name -Like "*" } -Searchbase "OU=<OU>,DC=Domäne,DC=de” | Export-Csv -NoTypeInformation C:\AlleObjekte.txt


# Alle Attribute und Klassen eines Active Directory exportieren:
Get-ADObject -Filter { Name -Like “*” } -SearchBase “CN=Schema,CN=Configuration,DC=Domäne,DC=de” | Export-Csv -NoTypeInformation C:\Schema.txt


AD-PowerShell Befehle

 


 

Eine Datendatei in Excel importieren


In Excel lässt sich eine Datendatei wie folgt importieren:

  • Unter Excel 2007 wählt man in der Menüleiste zuerst „Daten“ und danach die Option „Aus Text“ aus.





  • Danach muss man die zu importierende Textdatei auswählen. Das kann eine CSV- oder TXT-Datei sein. Anschließend startet der Textkonvertierungs-Assistent.
  • Im Textkonvertierungs-Assistenten wählt man die Option Getrennt aus und klickt auf Weiter.





  • Im nächsten Schritt wählt man als Trennzeichen die Option Komma und als Texterkennungszeichen das Anführungszeichen aus (was standardmäßig eingestellt ist) aus.





  • Im darauffolgenden Schritt gilt es als Datenformat der Spalten die Option Standard zu wählen.





  • Zum Schluss bestätigt man, dass der Import im bestehenden Arbeitsblatt ab der ausgewählten Zelle durchgeführt werden soll.



 

 

Weitere Informationen:
How to use CSVDE.EXE to back up and restore connection agreements

Sunday, January 10, 2010 2:35:20 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell | Dokumentation | Erweiterte Abfragen  | 
 Sunday, December 20, 2009

Wenn ein Administrator ein Objekt im AD löscht, sollte er das bewusst tun und ein versehentliches löschen sollte nie vorkommen. Jedoch passieren die meisten Missgeschicke gerade im Alltag versehentlich, obwohl die Microsoft Werkzeuge (z.B. die MMCs Active Directory-Benutzer und -Computer sowie Active Directory-Standorte und -Dienste, dsrm, AD-PowerShell etc.) eine Sicherheitsabfrage stellen, ob man das Objekt auch wirklich löschen möchte. Handelt es sich bei dem zu löschenden Objekt um eine OU in dem weitere Objekte enthalten sind (Benutzer, Gruppen, OUs etc.), wird sogar noch eine weitere Sicherheitsabfrage gestellt.



Ein Objekt vor dem versehentlichen Löschen schützen

Damit ein Objekt nicht ausversehen gelöscht werden kann, sollte man ab Windows Server 2008 von der Option Objekt vor zufälligem Löschen schützen (auf Englisch: Protect object from accidental deletion) regen Gebrauch machen. Es ist empfehlenswert diesen Schutz mindestens auf OU-Ebene anzuwenden, sie vererbt sich aber nicht auf die untergeordneten Objekte wie z.B. auf untergeordnete OUs oder auf Benutzer-, Gruppen oder Computerobjekte die sich innerhalb der OU befinden. Einzelne Objekte wie Benutzerobjekte, Sicherheits- sowie Verteilergruppen- und Computerobjekte lassen sich ebenfalls vor dem versehentlichen Löschen schützen. Auch die Objekte in der MMC Active Directory-Standorte und -Dienste (AD-Standorte, Subnetze) lassen sich vor dem versehentlichen Löschen schützen.

Die Option Objekt vor zufälligem Löschen schützen lässt sich in den Eigenschaften eines Objekts im Reiter „Objekt“ aktivieren. Dieser Reiter kommt aber in der MMC „Active Directory-Benutzer und -Computer“ erst dann zum Vorschein, wenn unter „Ansicht“ die Option „Erweiterte Features“ aktiviert wurde.


 

Unter Windows 2000 und Windows Server 2003 existiert zwar die Möglichkeit zum aktivieren der Option „Objekt vor zufälligem Löschen schützen“ nicht, doch man kann natürlich auch unter Windows 2000 und Windows Server 2003 ein Objekt vor dem versehentlichen löschen schützen. Denn das aktivieren der Option „Objekt vor zufälligem Löschen schützen“ bewirkt nichts anderes, als das im Security-Descriptor des Objekts das "Verweigerungsrecht" zum "Löschen" für "Jeder" gesetzt wird. Genau das kann man auch unter Windows 2000 und Windows Server 2003 z.B. auf einer OU oder einem Benutzerobjekt konfigurieren.




Mit DSACLS, das sich unter Windows 2000 und Windows Server 2003 in den Windows Support Tools befindet und ab Windows Server 2008 „on Bord“ ist, lässt sich eine OU folgendermaßen vor dem versehentlichen Löschen schützen:

Dsacls „<DN der OU>“ /D Jeder:SDDT



In der Kommandozeile (CMD) lässt sich mit einer FOR-Schleife und den ds*-Tools die ab Windows Server 2003 "on Bord" sind, eine OU samt den untergeordneten OUs vor dem versehentlichen Löschen wie folgt schützen. Die Objekte wie z.B. Benutzer-, Gruppen- oder Computerobjekte die sich innerhalb dieser OUs befinden, werden dabei aber nicht vor dem versehentlichen Löschen geschützt:

FOR /F "tokens=*" %i in ('Dsquery OU "<DN der OU>" -Limit 0') do Dsacls %i /D "Jeder:SDDCDT"



Alle OUs innerhalb einer Domäne lassen sich in einer CMD mit dieser FOR-Schleife vor dem versehentlichen Löschen schützen:

FOR /F "tokens=*" %i in ('Dsquery OU -Limit 0') do Dsacls %i /D "Jeder:SDDCDT"



Über die AD-Powershell lässt sich diese Option auf einer OU wie folgt aktivieren:

Set-ADOrganizationalUnit „<DN der OU>“ –ProtectedFromAccidentalDeletion 1

bzw.

Set-ADOrganizationalUnit „<DN der OU>“ -ProtectedFromAccidentalDeletion $true



Auf allen bestehenden OUs lässt sich die Option wie folgt aktivieren:

Get-ADOrganizationalUnit -Filter * | Set-ADOrganizationalUnit –ProtectedFromAccidentalDeletion 1

 

Deaktivieren lässt sich die Option „Objekt vor zufälligem Löschen schützen“ in der AD-PowerShell wie folgt:

Set-ADOrganizationalUnit „<DN der OU>“ –ProtectedFromAccidentalDeletion 0

oder

Set-ADOrganizationalUnit „<DN der OU>“ -ProtectedFromAccidentalDeletion $false

 

Wird eine bestehende Domäne auf mindestens „Windows Server 2008“ aktualisiert, wird bei bestehenden Objekten diese Option nicht automatisch aktiviert. Auch nach dem installieren einer neuen Windows Server 2008 Domäne ist auf den bestehenden Objekten die Option „Objekt vor zufälligem Löschen schützen“ nicht aktiv. Der Schutz ist standardmäßig nur beim erstellen von neuen OUs ab Windows Server 2008 aktiviert, nicht jedoch beim erstellen von Benutzer-, Gruppen- oder Computerkonten bzw. AD-Standorten und Subnetzen.

Ist hingegen dieser Schutz auf einer OU aktiviert und man möchte diese OU verschieben, erhält man folgende Fehlermeldung. Denn zum Verschieben einer OU benötigt man das Löschrecht am Quell- und Schreibrecht am Zielort. Das Verschieben der OU ist erst dann möglich, wenn die Option deaktiviert wurde.



 


Das gilt natürlich auch beim löschen einer OU. Erst wenn die Option deaktiviert ist, kann die OU nach bestätigen der Sicherheitsabfrage gelöscht werden. Spätestens mit dieser Option gehört das versehentliche Löschen eines Objekts endlich der Vergangenheit an.


 

Wer hat den Benutzer gelöscht?

Wenn nun doch mal ausversehen z.B. das Benutzerobjekt des GFs gelöscht wurde, möchte man evtl. aufklären wer das Benutzerobjekt auf welchem DC gelöscht hat. Im Sicherheitsprotokoll des DCs auf dem das Objekt gelöscht wurde, wird unter Windows Server 2003 die EventID 630 und unter Windows Server 2008 sowie Windows Server 2008 R2 die EventID 4726 protokolliert. Denn standardmäßig wird unter Windows Server 2003 und Windows Server 2008 R2 beim Löschen eines Benutzerkontos ein Eventlogeintrag generiert, nicht jedoch unter Windows Server 2008.

Unter Windows Server 2008 muss zuerst die Unterkategorie Verzeichnisdienständerungen mit der Option Erfolgreich durch den folgenden Befehl aktiviert werden:

Auditpol /set /subcategory:Verzeichnisdienständerungen /success:enable

Erst danach wird das Löschen eines Objekts auch unter Windows Server 2008 protokolliert.

Active Directory Domain Services (AD DS) - Protokollierung


Achtung: Eine Protokollierung ist vom Betriebsrat bzw. Datenschutzbeauftragten zu genehmigen!


Die Information auf welchem DC das Objekt gelöscht wurde, wird aber nicht zwischen den DCs repliziert. Die Aufgabe besteht also darin, herauszufinden wann das Benutzerkonto auf welchem DC gelöscht wurde, um anschließend den Eventlogeintrag ausfindig zu machen. Sofern der Eventlogeintrag natürlich noch auf dem betroffenen DC existiert und nicht überschrieben wurde.

Auch das Löschen von Gruppen wird standardmäßig mit folgenden EventIDs protokolliert:

Unter Windows Server 2003

- Domänenlokale Sicherheitsgruppe = EventID 638
- Globale Sicherheitsgruppe = EventID 634
- Universelle Sicherheitsgruppe = EventID 662

- Domänenlokale Verteilergruppe = EventID 652
- Globale Verteilergruppe = EventID 657
- Universelle Verteilergruppe = EventID 667


Unter Windows Server 2008 und Windows Server 2008 R2

- Domänenlokale Sicherheitsgruppe = EventID 4734
- Globale Sicherheitsgruppe = EventID 4730
- Universelle Sicherheitsgruppe = EventID 4758


In kleineren AD-Umgebungen lassen sich die Eventlogs auf den DCs vielleicht noch schnell und vor allem manuell durchforsten, doch in großen bzw. weltweiten AD-Umgebungen ist das schier eine unmögliche Aufgabe. Zumindest nicht ohne Zusatzwerkzeuge wie z.B. SCOM, Log Parser oder EventComb.

Doch es gibt auch eine einfache Methode, um den Übeltäter ausfindig zu machen. Mit Hilfe von LDP und REPADMIN kann man in Erfahrung bringen, auf welchem DC das Objekt wann zu welcher Uhrzeit gelöscht wurde. Anschließend öffnet man das Sicherheitsprotokoll des betroffenen DCs und kann anschließend in der Beschreibung des Eventlogeintrags erkennen, wer das Objekt gelöscht hat. Es spielt auch keine Rolle ob unter Windows Server 2008 R2 der AD-Papierkorb aktiviert ist oder nicht.

Dazu sind die folgenden Schritte notwendig.


 

In LDP

Mit LDP gilt es zuerst herauszufinden, wie der Distinguished Name (DN) des gelöschten Objekts im Deleted Objects Container das sich in der Domänenpartition befindet lautet.

  • Im ersten Schritt verbindet man sich mit einem DC aus der Domäne, in der das Objekt gelöscht wurde. Unter Windows 2000 und Windows Server 2003 wählt man im Menü „Connection – Connect…“ und unter Windows Server 2008 sowie Windows Sever 2008 R2 „Remotedesktopverbindung – Verbinden…“ und gibt den DC an, mit dem man sich verbinden möchte.

  • Im zweiten Schritt binded man sich mit dem AD. Unter Windows 2000 und Windows Server 2003 wählt man dazu im Menü „Connection – Bind“ und unter Windows Server 2008 und Windows Server 2008 R2 „Remotedesktopverbindung – Gebunden…“.

  • Danach wählt man im Menü unter Windows 2000 und Windows Server 2003 „Options – Controls“ sowie unter Windows Server 2008 und Windows Server 2008 R2 „Optionen – Steuerelemente“. Im darauf erscheinenden Fenster „Controls“ bzw. „Steuerelemente” fügt man das LDAP-Control „Return deleted objects“ mit der OID (Object Identifier) 1.2.840.113556.1.4.417 hinzu.





  • Als nächstes ruft man unter Windows 2000 und Windows Server 2003 im Menü „Browse - Search“ sowie unter Windows Server 2008 und Windows Server 2008 R2 „Durchsuchen - Suchen“ das Suchfenster auf. Dort gibt man als Basis-DN den „Deleted Objects“ Container in der Domänenpartition an. Dieser lautet: CN=Deleted Objects,DC=<Domäne>,DC=<de>

    Im Feld Filter gibt man die Kriterien an, nach denen man die Suche im Container “Deleted Objects” durchführen möchte. Ist der Benutzeranmeldename (Prä-Windows 2000), also das Attribut sAMAccountName bekannt, trägt man in dem Feld sAMAccountName=<Benutzeranmeldename> ein. Es kann natürlich auch ein anderes Attribut angegeben werden, dass das gewünschte Benutzerobjekt identifiziert.

    Als Scope/Bereich wählt man OneLevel/Eine Ebene aus. Wählt man als Suchbereich Subtree/Unterstruktur aus, funktioniert das ebenfalls.

    Unter Windows Server 2008 und Windows Server 2008 R2 gibt man im Feld „Attribute“ die Attribute an, die in der rechten Hälfte von LDP, im Suchergebnis zusätzlich zum DN angezeigt werden sollen. Gibt man keine Attribute an, werden alle Attribute des gelöschten Objekts angezeigt.





  • Anschließend ruft man mit einem Klick auf Optionen die Suchoptionen auf und konfiguriert die Einstellungen wie folgt. Mit einem Klick auf OK übernimmt man die vorgenommenen Einstellungen.





  • Unter Windows 2000 und Windows Server 2003 muss man vorher auf Options klicken, um die gewünschten Attribute und die weiteren Einstellungen vornehmen zu können.





  • Führt man die Suche nun mit einem Klick auf Run/Ausführen aus, erscheint in der rechten Hälfte von LDP unter anderem der gesuchte DN des gelöschten Benutzerobjekts. Dieser sieht z.B. so aus:

    Dn: CN=Yusuf Dikmenoglu\0ADEL:3e9e243e-8ba9-473a-a1ee-f1b001337923,CN=Deleted Objects,DC=ad2008R2,DC=dikmenoglu,DC=de

 


In REPADMIN

Da nun bekannt ist wie der DN des gelöschten Benutzerobjekts lautet, gilt es auf einem DC in der Domäne in der das Benutzerobjekt gelöscht wurde, den folgenden REPADMIN-Befehl in der Kommandozeile auszuführen. Die Ausgabe von REPADMIN wird zur besseren Übersicht in eine Textdatei exportiert.

Repadmin /showobjmeta <DC> "CN=Yusuf Dikmenoglu\0ADEL:2ffa7423-7b00-4962-96f6-69d052e08c51,CN=Deleted Objects,DC=ad2008r2,DC=dikmenoglu,DC=de" > C:\Repadmin.txt

Entscheidend in der Ausgabe ist das Attribut isDeleted.


 

 

Daraus kann man erkennen, dass das Benutzerobjekt am 14.11.2009 um 23:05:08 Uhr auf dem DC R2DCON01 gelöscht wurde. Nun kann man hoffen, dass auf dem DC der erwähnte Zeitpunkt im Sicherheitsprotokoll noch nicht überschrieben wurde. Wenn der Eintrag noch existiert, findet man in der Beschreibung des Eventlogeintrags den Übeltäter.


 

Weitere Informationen:
Der Container Deleted Objects
Repadmin /showobjmeta

Sunday, December 20, 2009 3:48:50 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell | Dokumentation  | 
 Sunday, December 06, 2009

In einigen Attributen wie z.B. badPasswordTime, Last-Logon, Last-Logon-TimeStamp oder pwdLastSet wird ein Large Integer Wert (im Integer8 Format) gespeichert. Da man mit solch einem Wert herzlich wenig anfangen kann, muss dieser in unser Zeitformat umgerechnet werden. Das geht mit den Windows Support Tools oder mit Bordmitteln wie folgt.


 

LDP

In LDP das sich unter Windows 2000 und Windows Server 2003 in den Windows Support Tools befindet und ab Windows Server 2008 „on Bord“ ist, werden Large Integer Werte bereits in unserem Zeitformat angezeigt, ohne diese umrechnen zu müssen.



 


REPADMIN

Eine weitere Möglichkeit einen Large Integer Wert umzurechnen, ist das Schweizer Messer Werkzeug für die AD-Replikation REPADMIN. Unter Windows 2000 und Windows Server 2003 befindet sich REPADMIN in den Windows Support Tools und ist ab Windows Server 2008 bereits „on Bord“. Bei dem REPADMIN-Befehl müssen jedoch die letzten sieben Zeichen des Integer Wert entfernt werden. Der Befehl lautet wie folgt: REPADMIN /SHOWTIME 12903275725


 

 

 

NLTEST

Auch mit NLTEST, das sich unter Windows 2000 und Windows Server 2003 in den Windows Support Tools befindet und ab Windows Server 2008 „on Bord“ ist, lässt sich ein Large Integer Wert umrechnen. Doch dazu muss zuerst der Large Integer Wert im Taschenrechner von Windows („Start-Programme-Zubehör-Rechner“ oder „Start-Ausführen-CALC“) in einen Hexadezimal Wert umgerechnet werden. Um das zu tun, wechselt man die Ansicht des Taschenrechners unter dem Menüpunkt „Ansicht“ von „Standard“ auf „Wissenschaftlich“. Anschließend fügt man per Copy&Paste den Integer Wert hinzu. Man muss nur darauf achten, dass der Wert als „Dezimal“ (Dez) hinzugefügt wird.



 

Anschließend wandelt man den eingetragenen Wert mit einem Klick auf Hex in einen Hexadezimal Wert um.


 

 

Nun gibt man in einer Kommandozeile den Befehl NLTEST /TIME:<HEX> ein. Bei dem Hexadezimal Wert gilt es zu beachten, mit einem Leerzeichen dazwischen, die rechten acht Zeichen voranzustellen. Der Befehl sieht dann so aus: NLTEST /TIME:EC821F4A 1CA6A9B


 

 

W32tm

In der Kommandozeile (CMD) lässt sich ein Large Integer Wert, ab Windows Server 2003, mit dem Befehl w32tm /ntte <Wert> in ein lesbares Format umrechnen.

 

 

Der Attribut-Editor

Ab Windows Server 2008 und Windows Vista (mit installiertem RSAT) werden die Large Integer Werte im Attribut-Editor, der in den Eigenschaften eines Benutzerobjekts in der MMC Active Directory-Benutzer und -Computer oder in ADSIEdit zu finden ist, in der Übersicht bereits in unserem Zeitformat angezeigt. Der Reiter „Attribut-Editor“ erscheint aber erst dann, wenn unter „Ansicht“ die „erweiterten Features“ aktiviert wurden.



Sunday, December 06, 2009 7:17:15 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Dokumentation  | 
 Sunday, November 29, 2009

Möchte man Rechte an ein Sicherheitsprinzipal wie z.B. an einen Benutzer oder besser an eine Gruppe im Active Directory (AD) delegieren, kann man das über den Objektdelegierungsassistenten, die Discretionary Access Control List (kurz DACL) oder mit dem Kommandozeilentool DSACLS durchführen.

Objektdelegierungen einrichten


Führt man die Delegierung über die grafische Oberfläche (GUI) mit dem Delegierungsassistenten oder über die DACL durch, ist es durchaus möglich, dass das gewünschte Attribut auf das man die entsprechenden Rechte erteilen möchte in der GUI nicht angezeigt wird. Denn standardmäßig wird nicht jedes Attribut in der GUI angezeigt, um die Liste der angezeigten Attribute übersichtlich zu halten.

Das ist aber auch nicht weiter tragisch, da es ohnehin empfohlen ist die Delegierung mit DSACLS durchzuführen. Denn somit hat man es zum einen mit der Dokumentation einfacher und zum anderen, lassen sich die erteilten Rechte im AD schnell wieder entfernen. Im Gegensatz zur GUI existieren in der Kommandozeile keine Beschränkungen und in Verbindung mit einem Skript, können Delegierungen einfach durchgeführt werden. Bei der Delegierung mit dem Kommandozeilentool muss man natürlich das Attribut kennen, auf das man Rechte erteilen möchte.

Siehe auch:

Die Active Directory-Attribute hinter den Feldnamen


Wer die Delegierung doch lieber über die GUI durchführen möchte, der kann die gefilterten Attribute die standardmäßig nicht angezeigt werden zum Vorschein bringen. Dazu muss die Datei „dssec.dat“ die sich seit Windows 2000 im Verzeichnis „%systemroot%\System32\“ befindet bearbeitet werden.

Möchte man z.B. die Attribute physicalDeliveryOfficeName (das Feld “Büro” in den Eigenschaften eines Benutzerobjekts) oder sn (Nachname eines Benutzers) zum Vorschein bringen, muss in der Datei „dssec.dat“ im Abschnitt [User] hinter den jeweiligen Attributen die Zahl 7 auf 0, 1 oder 2 geändert werden.

Die Zahlen bedeuten:

7 = Das Attribut wird in der GUI nicht angezeigt.
0 = Es werden die Eigenschaften „lesen“ und „schreiben“ für das Attribut angezeigt.
1 = Es wird nur die Schreib-Eigenschaft eines Attributs angezeigt.
2 = Es wird nur die Lese-Eigenschaft eines Attributs angezeigt.


Wurde die Datei dssec.dat bearbeitet, muss anschließend die MMC Active Directory-Benutzer und -Computer neu gestartet werden, damit das gewünschte Attribut angezeigt wird.


Eine andere Variante ist, dass man bei der Objektdelegierung über die GUI beim erstellen eines benutzerdefinierten Tasks nicht beim "Zuweisen der Verwaltung von" die Option "Benutzer"-Objekte auswählt, sondern die Objektklasse "InetOrgPerson"-Objekte. Danach hat man auch Zugriff und die standardmäßig nicht eingeblendeten Attribute und kann diese an die entsprechende Gruppe delegieren.



Mit DSACLS könnte man das Schreibrecht auf das Attribut physicalDeliveryOfficeName (Feldname: Büro) einer Gruppe wie folgt erteilen:

DSACLS "<DN der OU>" /G "<Gruppe>:WP;physicalDeliveryOfficeName;user" /I:S


Das Schreibrecht auf die Nachnamen aller Benutzer die sich in einer OU befinden, lässt sich einer Gruppe folgendermaßen delegieren:

DSACLS "<DN der OU>" /G "<Gruppe>:WP;sn;user" /I:S

 


Weitere Informationen:
Der Objektdelegierungsassistent
Das aktivieren/deaktivieren eines Benutzerkontos delegieren
Delegierte AD-Berechtigungen anzeigen und entfernen
How to modify the filtered properties of an object

Sunday, November 29, 2009 8:54:59 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Objektverwaltung  | 
 Sunday, November 22, 2009

Mit dem Kommandozeilentool Whoami das sich unter Windows 2000 im Ressource Kit befindet und ab Windows Server 2003 on Bord ist, lässt sich der komplette Inhalt des Access-Tokens des aktuell angemeldeten Benutzers anzeigen und exportieren. Im Accesss-Token ist die SID des Benutzers, die SIDs der SID-History (ab Windows Server 2003) und die SID's aller Gruppen in denen der angemeldete Benutzer innerhalb der Domäne direkt oder verschachtelt Mitglied ist enthalten. Whoami zeigt auch direkte oder verschachtelte domänenübergreifende universelle Gruppenmitgliedschaften an.


Führt man in einer CMD den Befehl Whoami /all > C:\Temp\Whoami.txt aus, wird solch eine Datei im angegebenen Pfad erstellt:


 

Die Hilfe zu Whoami lässt sich in gewohnter Windows-Manier mit Whoami /? anzeigen.

 


In welcher Situation ist es sinnvoll Whoami auszuführen?

Wenn ein Benutzer zu einer Gruppe hinzugefügt und dieser Gruppe die entsprechenden Rechte auf eine Ressource (Dateien, Drucker etc.) erteilt wurde, der Benutzer aber immer noch keinen Zugriff auf die Ressource hat, sollten zwei Punkte sichergestellt werden:

  • Hat sich der Benutzer nach dem hinzufügen zur Gruppen erneut an seinem Client angemeldet? Denn Gruppenmitgliedschaften werden nicht während einer Benutzersitzung ausgewertet, sondern nur bei der Anmeldung.
  • Hat sich der Benutzer bereits neu angemeldet, kann mit Whoami /all das Access-Token ausgewertet werden. Damit kann man überprüfen, ob sich der Benutzer auch tatsächlich in der entsprechenden Gruppe befindet.


 

Die Gruppenmitgliedschaften eines Benutzers mit der AD-PowerShell exportieren

Das Pendant zu Whoami stellt mit „Windows Server 2008 R2“ und Windows 7 die „Active Directory-PowerShell“ dar. Wird auf einem „Windows Server 2008 R2“ DC oder auf einem Windows 7 Client mit installiertem RSAT (Remote Server Administration Tools) das Cmdlet Get-ADAccountAuthorizationGroup ausgeführt, werden ebenfalls die direkten und verschachtelten Gruppenmitgliedschaften des angegebenen Benutzerkontos angezeigt. Domänenübergreifende „domänenlokale“ Gruppenmitgliedschaften werden nicht angezeigt, aber domänenübergreifende „universelle“ Gruppenmitgliedschaften schon. Domänenübergreifende globale Gruppen sind aus technischen Gründen ohnehin nicht möglich, da eine globale Gruppe nur Mitglieder aus der eigenen Domäne enthalten kann.

Ein DC kann „domänenlokale“, „globale“ und „universelle“ Gruppenmitgliedschaften eines Benutzers, nur innerhalb seiner Domäne ermitteln. Domänenlokale- und globale Gruppen werden zwar (neben den universellen Gruppen) auch in den globalen Katalog (GC) repliziert, allerdings nicht die Mitglieder dieser Gruppen! Deshalb findet auch bei Gruppenveränderungen in domänenlokalen und globalen Gruppen keine GC-Replikation statt. Da aber ein Benutzer Mitglied einer universellen Gruppe in unterschiedlichen Domänen sein kann, ist für die Abfrage von domänenübergreifenden universellen Gruppenmitgliedschaften ein GC notwendig. Denn nur der GC kennt die domänenübergreifenden universellen Gruppenmitgliedschaften eines Benutzers, da das member Attribut von universellen Gruppen auf den GC repliziert wird. Wenn sich ein Benutzer in einer Gesamtstruktur mit mehreren Domänen an einer Domäne anmeldet, muss der DC einen GC kontaktieren um die universellen Gruppenmitgliedschaften abzurufen, in denen der Benutzer evtl. in anderen Domänen Mitglied ist. Oder es ist ab Windows Server 2003 das „zwischenspeichern der universellen Gruppenmitgliedschaften“ auf einem AD-Standort aktiviert.

In einer Multidomänen-Gesamtstruktur ist es zwingend erforderlich, dass zum Zeitpunkt der Abfrage mit dem Cmdlet Get-ADAccountAuthorizationGroup ein GC erreichbar ist. Denn schließlich wird für die Auswertung der domänenübergreifenden universellen Gruppenmitgliedschaften ein GC benötigt. Wenn zum Zeitpunkt der Abfrage kein GC erreicht werden kann schlägt die Abfrage fehl. Allerdings schlägt die Abfrage nur dann fehl, wenn es sich um eine Multidomänen-Gesamtstruktur handelt!

Die Option „Das zwischenspeichern von universellen Gruppenmitgliedschaften“ bringt nicht den gewünschten Erfolg. Die Abfrage mit dem Cmdlet in einer Gesamtstruktur mit mehreren Domänen schlägt auch in diesem Fall fehl.

Ein GC oder das zwischenspeichern von universellen Gruppenmitgliedschaften ist für die Benutzeranmeldung nur in einer Gesamtstruktur mit mehreren Domänen notwendig. Handelt es sich um eine Einzeldomänen-Gesamtstruktur (Single-Domänen Forest), wird weder ein GC, noch das zwischenspeichern von universellen Gruppenmitgliedschaften benötigt. Es existieren ohnehin keine domänenübergreifenden Gruppenmitgliedschaften, wozu ein GC oder das zwischenspeichern von universellen Gruppenmitgliedschaften notwendig wäre.

In einer Einzeldomänen-Gesamtstruktur benötigt das Cmdlet deshalb auch keinen GC. Schließlich kennt in einer Einzeldomänen-Gesamtstruktur der DC alle Gruppenmitgliedschaften eines Benutzers. Auch der Benutzer kann sich in einer Einzeldomänen-Gesamtstruktur ohne einen GC erfolgreich an der Domäne anmelden.


In einer Windows Server 2003 oder Windows Server 2008 Umgebung lässt sich die AD-PowerShell ebenfalls z.B. von einem Windows 7 Client nutzen. Dazu muss jedoch das „AD MGS“ auf mindestens einem DC installiert werden:

Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008


Das Cmdlet Get-ADAccountAuthorizationGroup liest das Attribut tokenGroups des angegebenen Sicherheitsprinzipals aus. Dabei kann ein Benutzer oder Computer angegeben werden, aber keine Gruppe! Es werden zum einen alle direkten und verschachtelten Sicherheits-Gruppenmitgliedschaften (domänenlokale, globale und universelle Gruppen) innerhalb der Domäne und zum anderen die direkten und verschachtelten domänenübergreifenden universellen Gruppenmitgliedschaften eines Benutzers angezeigt. Es werden jedoch keine Verteilergruppen angezeigt!

Das mehrwertige Attribut tokenGroups ist zwar im Schema definiert, es enthält jedoch selbst keinen Wert. Die Attributwerte werden erst im Moment der Abfrage errechnet. Diese Art von Attribut bezeichnet man als Constructed Attribute oder auch Computed Attribute. Da das Attribut tokenGroups "constructed" ist, kann es nicht repliziert werden. Sein Wert wird auch nicht in den GC übertragen.

Siehe auch:
Die konstruierten Attribute abfragen



Die Gruppenmitgliedschaften eines Benutzers werden wie folgt in eine CSV-Datei exportiert:

Get-ADAccountAuthorizationGroup Yusuf | Export-CSV C:\Yusuf.csv -NoTypeInformation


Soll die Ausgabe bis auf wenige Attribute gekürzt werden, lautet der Befehl wie folgt:
Get-ADAccountAuthorizationGroup Yusuf | Select distinguishedName,sAMAccountName,GroupCategory,GroupScope,objectClass | Export-CSV C:\Yusuf.csv -NoTypeInformation

 


Die Ausgabe sieht wie folgt aus:


 

Die Hilfe zu dem Cmdlet lässt sich mit diesem Befehl anzeigen:
Get-Help Get-ADAccountAuthorizationGroup -Full

 


Die Gruppenmitgliedschaften eines Benutzers mit den ds*-Tools exportieren

Mit den beiden Kommandozeilentools dsquery und dsget die sich seit Windows Server 2003 "on Bord" befinden, lassen sich ebenfalls die Gruppenmitgliedschaften eines Benutzers exportieren.
Möchte man die direkten Gruppenmitgliedschaften eines Benutzers exportieren, so kann dazu der folgende Befehl verwendet werden:

dsquery user -samid <Benutzername> | dsget user -memberof > C:\Temp\Gruppenmitgliedschaften.txt

oder:

dsget user "DN des Benutzerobjekts" -memberof > C:\Temp\Gruppenmitgliedschaften.txt


Sollen hingegen auch die verschachtelten Gruppenmitgliedschaften angezeigt werden, dann gilt es diesen Befehl auszuführen:

dsget user "DN des Benutzerobjekts" -memberof -expand > C:\Temp\Gruppenmitgliedschaften.txt

bzw.

dsquery user -samid <Benutzername> | dsget user -memberof -expand > C:\Temp\Gruppenmitgliedschaften.txt

 

Hinweis: Unter Windows Server 2008 R2 und Windows 7 liefert dsget nicht die korrekten Daten.
Das lässt sich jedoch durch einen Hotfix beheben:

The "dsget user -memberof -expand" command returns incorrect results in Windows Server 2008 R2 and in Windows 7




Die Gruppenmitgliedschaften eines Benutzers mit "Net User" exportieren

Auch mit dem Kommandozeilentool NET kann man die Gruppenmitgliedschaften eines Benutzer wie folgt exportieren:

Net User <sAMAccountName> /Domain > C:\Temp\Gruppenmitgliedschaften.txt

 

 

Weitere Informationen:
Delegierte Berechtigungen im AD verstehen
Active Directory – Abfrage
AD-PowerShell Befehle
Token-Groups Attribute (Windows)
How to enumerate a user's security group membership using Visual Basic or Visual Basic Script

Sunday, November 22, 2009 9:49:32 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell | Dokumentation | Erweiterte Abfragen  | 
 Sunday, November 08, 2009

Im Active Directory-Schema sind verschiedene Arten von Attribute definiert. Die meisten davon sind in der Active Directory-Datenbank (NTDS.dit) gespeichert und können einen festen Wert enthalten.

 

Aber längst nicht alle Attribute für ein Objekt sind in der AD-Datenbank gespeichert. Diese Art von Attribut bezeichnet man als Constructed Attribute, auch bekannt als Computed Attribute.

 

Die Merkmale eines solchen Attributs sind:

  • Constructed Attribute, zu Deutsch „konstruierte Attribute“ sind zwar im Schema definiert, sie enthalten jedoch selbst keinen Wert. Die Attributwerte werden erst von einem Domänencontroller im Moment der LDAP-Anfrage gebildet.

  • Da diese Attribute "constructed" sind, können sie auch nicht repliziert werden. Die Werte können auch nicht in den globalen Katalog (GC) übertragen werden.

  • Wird eine Abfrage nach solch einem Attribut durchgeführt, bildet jeder DC eigenständig den Wert.

  • Ein Wert eines konstruierten Attributs kann nicht vergeben bzw. geschrieben werden. Diese Art von Attribut wird lediglich für eine gezielte Abfrage vom DC zusammengesetzt.

  • Konstruierte Attribute können in der Regel nicht für Abfragen verwendet werden (die Ausnahme stellt das Attribut aNR oder memberOf dar).

  • In einigen Fällen muss bei der Abfrage im Parameter -Scope die Option BASE angegeben werden, wie z.B. für das Attribut tokenGroups. Mit dieser Option wird auf ein einziges Objekt zugegriffen.

  • Eine Abfrage nach allen Objekten in einem Container, die ein konstruiertes Attribut der Objekte die sich in dem Container befinden anzeigt, bringt kein Ergebnis.

 

 

Ein konstruiertes Attribut wird durch das dritte Bit im System-Flags Attribut definiert. Verbindet man sich in LDP z.B. mit dem konstruierten Attribut CN=Token-Groups,CN=Schema,CN=Configuration,DC=Root-Domäne lässt sich das System-Flag folgendermaßen kontrollieren:

 

 

 

 

 

 

 

Die konstruierten Attribute einer Gesamtstruktur anzeigen

 

In der AD-Powershell

 

Get-ADObject -LDAPFilter “(&(objectClass=attributeSchema)(systemflags:1.2.840.113556.1.4.803:=4))” -Searchbase “CN=Schema,CN=Configuration,DC=Root-Domäne” | Select Name

 

 

Oder:

 

Get-ADObject -LDAPFilter "(objectClass=attributeSchema)" -Searchbase "CN=Schema,CN=Configuration,DC=Root-Domäne" -Properties Systemflags | Where {$_.Systemflags -band 4} | Select Name

 

 

 

 

Mit LDP

  •  Nach dem Starten von LDP gilt es zuerst eine Verbindung zu einem DC herzustellen.

  • Im zweiten Schritt muss man sich mit dem AD binden.

  • Anschließend gibt man im Suchfenster (unter Browse/Durchsuchen-Search/Suchen) als Basis-DN CN=Schema,CN=Configuration,DC=Root-Domäne ein und verwendet als Filter (&(objectcategory=attributeSchema)(systemFlags:1.2.840.113556.1.4.803:=4)).

  • Als Scope/Bereich gilt es One Level/Eine Ebene zu wählen.

  • Im Feld Attribute können dann die gewünschten Attribute angegeben werden.


 


 

 

In der Kommandozeile mit Dsquery, ab Windows Server 2003

 

dsquery * “CN=Schema,CN=Configuration,DC=Root-Domäne” -Scope Onelevel -attr Name -Filter "(&(objectcategory=attributeSchema)(systemFlags:1.2.840.113556.1.4.803:=4))"

 

 


 

 

Weitere Informationen:
AD-PowerShell Befehle

Microsoft Windows 2000 Scripting Guide - Operational Attributes

How to query Active Directory by using a bitwise filter

System-Flags Attribute

 

Sunday, November 08, 2009 5:14:39 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Powershell | Erweiterte Abfragen | Schema  | 
 Sunday, October 25, 2009

Der RID-Master ist neben der Rolle des PDC-Emulators und Infrastrukturmasters die Rolle, die in jeder Domäne einer Gesamtstruktur existiert. Diese Betriebsmasterrolle weist einen eindeutigen Pool von 500 „relative identifier“ (RIDs) an jeden Domänencontroller innerhalb einer Domäne, für das Erstellen von Objekten zu. Der RID-Master kann keine RIDs domänenübergreifend verteilen. Wozu auch? Denn jede Domäne hat schließlich seinen eigenen RID-Master.

Jeder Domänencontroller (DC) verwendet RIDs um Sicherheitsprinzipale wie z.B. Benutzer-, Gruppen- oder Computerkonten (also SIDs) etc. zu erstellen. Ein „security identifier“ (kurz SID) setzt sich aus der Domänen-SID, diese SID ist für alle Objekte innerhalb einer Domäne identisch und einer eindeutigen „relativen ID“ (kurz RID) zusammen.


 

SIDs müssen in der Domäne (und in der Gesamtstruktur) eindeutig sein, um die Zugriffe auf die Netzwerkressourcen (Dateien, Drucker etc.) klar zu definieren. Da Sicherheitsprinzipale von jedem DC erstellt werden können, stellt der RID-Master sicher, dass ein RID nicht von zwei DCs gleichzeitig ausgestellt werden kann, in dem jeder DC einen eindeutigen RID-Pool erhält.


 

Wann fordert ein DC einen neuen RID-Pool an?

Hat ein DC bis einschließlich „Windows 2000 SP3“ 80% (also 400 RIDs) seines RID-Pools aufgebraucht, fordert der DC vom RID-Master aus seiner Domäne einen neuen Block von 500 RIDs an. Das bedeutet, dass jeder DC stets einen RID-Pool zwischen 100 und 600 RIDs zur Verfügung hat.

Ab „Windows 2000 SP4“ fordern die DCs bereits bei 50% (250 RIDs) verbrauchten RIDs einen neuen RID-Pool an. Das bietet eine bessere Flexibilität, wenn der RID-Master für eine gewisse Zeit offline sein sollte. Daher stehen einem DC ab „Windows 2000 SP4“ stets zwischen 250 und 750 RIDs zur Verfügung.

Ein DC fordert einen neuen RID-Pool an wenn:

  • der Schwellenwert von 80% bzw. 50% erreicht wurde.
  • der Vorgang des Zuweisen eines neuen RID-Pools manuell durchgeführt wird.

    Allocate-Rids Extended Right (Windows)
  • der DC von einer Sicherung wiederhergestellt wurde.

 

Wenn ein DC seinen RID-Pool aufgebraucht hat und bzgl. eines etwaigen Problems vom RID-Master keinen neuen RID-Pool erhalten konnte, kann der DC keine Objekte im AD mehr erstellen. Im Verzeichnisdienstprotokoll des DCs werden die EventIDs 16645 sowie 16651 protokolliert die darauf hinweisen, dass der RID-Pool des DCs aufgebraucht ist und kein neuer RID-Pool angefordert werden konnte (z.B. weil der RID-Master offline ist oder Netzwerkprobleme bestehen).

RID Pool Request


 

Wo wird der RID-Master definiert?

Der RID-Master wird im Attribut fSMORoleOwner festgelegt, dass sich in den Eigenschaften des folgenden Objekts befindet:
CN=RID Manager$,CN=System,DC=Domäne,DC=de

Im Attribut fSMORoleOwner wird als Wert der LDAP-Pfad zum „NTDS Settings“ Objekt des RID-Masters gespeichert:
CN=NTDS Settings,CN=MZDCON01,CN=Servers,CN=Mainz,CN=Sites,CN=Configuration,DC=ad2008R2,DC=Dikmenoglu,DC=de


Verbindet man sich nun in LDP, das sich bis einschließlich „Windows Server 2003“ in den Windows Support Tools befindet und ab „Windows Server 2008“ bereits „on Bord“ ist, mit dem Objekt „
CN=RID Manager$,CN=System,DC=Domäne,DC=de“ werden einem diese Informationen angezeigt:


 

Das Interessante an diesem Screenshot ist das Attribut rIDAvailablePool. In diesem Attribut ist ein Large Integer Wert mit einem „hohen“ und „niedrigen“ Wert gespeichert. Nur wie lässt sich der Wert 4611686014132422208 umrechnen und somit die beiden Bereiche zum Vorschein bringen? LDP schafft Abhilfe. In LDP hat Redmond ein Tool eingebaut, das einem das Umrechnen abnimmt. Unter Windows 2000 und Windows Server 2003 findet man das Umrechnungstool in LDP unter Utilities – Large Integer Converter. Ab Windows Server 2008 heißt es in LDP Dienstprogramme - Konvertierung großer Ganzzahlen. Wenn man dort den Wert aus dem Attribut rIDAvailablePool eingibt und umrechnen lässt, erhält man solch eine ähnliche Ausgabe:


 

Der „hohe Bereich“ gibt die maximale Anzahl der RIDs und somit der Sicherheitsprinzipale innerhalb einer Domäne an, die erstellt werden können. Es können in einer Domäne also 1 Milliarde Sicherheitsprinzipale erstellt werden. Dieser Wert lässt sich nicht ändern und ist auch einer der maximalen Limits des Active Directory!

Siehe auch:
Die Grenzen des Active Directory


Der niedrige Bereich gibt den Anfang des nächsten RID-Pools an. Der nächste DC der vom RID-Master einen neuen RID-Pool anfordert, erhält einen RID-Pool von 1600 bis 2099. Der erste RID-Pool einer Domäne ist von 1100 bis 1599 (+/- zwei-drei RIDs, abhängig von der Serverversion).

Die noch zur Verfügung stehenden RIDs innerhalb einer Domäne, lassen sich auch in der Kommandozeile mit DCDIAG anzeigen. Der Befehl mit dem man den hohen und niedrigen Bereich anzeigen kann, lautet: DCDIAG /Test:RIDManager /v | Find /i „Available RID“


 

Ein weiterer Befehl mit dem man den bereits umgerechneten Wert aus dem Attribut rIDAvailablePool in der Kommandozeile sich anzeigen lassen kann, ist: DCDIAG /Test:RIDManager /v


 

 

 

Was passiert mit den ungenutzten RIDs?

Das Limit von einer Milliarde Sicherheitsprinzipalen werden die meisten Unternehmen nicht erreichen. Doch man sollte sich folgendem bewusst sein:

  • RIDs werden niemals an den RID-Master zurückgegeben. Wird ein Benutzer gelöscht, wird somit auch der SID gelöscht. Wenn z.B. der Benutzer „Yusuf“ gelöscht und ein neuer Benutzer mit dem gleichen Namen erstellt wird, so ist es nicht der identische Benutzer denn das neue Benutzerkonto erhält eine neue SID (und somit auch eine neue RID). Der gelöschte RID wandert nicht in den RID-Pool zurück.
  • Wenn ein DC heruntergestuft wird, ist sein RID-Pool egal wie viele RIDs verbraucht wurden, ebenfalls verloren.
  • Crasht ein DC, ist der RID-Pool auf dem DC auch dahin.


Neigt sich innerhalb einer Domäne die maximale Anzahl an RIDs dem Ende zu, muss entweder eine zusätzliche Domäne erstellt oder migriert werden!

 


Die RID-Attribute

In den Eigenschaften aller DC-Objekte befindet sich das Attribut rIDSetReferences. Darin ist als Wert der Distinguished Name des Objekts RID Set gespeichert. Jeder DC speichert seine RID-Pool Informationen in diesem Objekt:
CN=RID Set,CN=<DC>,OU=Domain Controllers,DC=Domäne,DC=de


Diese kann man sich mit Bordmitteln in LDP oder ADSIEdit ansehen. Ab Windows Server 2008 kann man auch zuerst in der MMC Active Directory-Benutzer und Computer unter Ansicht die Optionen „Benutzer, Kontakte, Gruppen und Computer als Container“ und die „erweiterten Features“ aktivieren. Anschließend erscheint nach Auswahl des DC-Objekts das Objekt
RID Set. Mit einem Doppelklick auf das Objekt kann man sich die RID-Pool Informationen im Reiter Attribut-Editor anzeigen lassen.

In den Eigenschaften des Objekts RID Set findet man die Attribute rIDAllocationPool, rIDNextRID, rIDPreviousAllocationPool und rIDUsedPool.


 


Jeder DC verfügt über zwei RID-Pools. Der RID-Pool den die DCs aktuell zum erstellen von Sicherheitsprinzipalen nutzen ist im Attribut
rIDPreviousAllocationPool gespeichert. Im Attribut rIDAllocationPool wird ein neuer RID-Pool gespeichert den ein DC anfordert, wenn der aktuelle Pool den o.g. Schwellenwert erreicht hat. Ist in beiden Attributen der gleiche Wert gespeichert, hat der DC im Attribut rIDPreviousAllocationPool noch nicht den Schwellenwert erreicht. Rechnet man den Integer Wert im Attribut rIDPreviousAllocationPool mit dem Umrechnungstool in LDP um, erhält man den aktuellen RID-Pool der zurzeit genutzt wird:




Im Attribut
rIDNextRID wird nicht wie es der Name erwarten lässt, der „nächste“ RID der beim erstellen des nächsten Sicherheitsprinzipals dem neuen Objekt zugewiesen wird gespeichert. Stattdessen ist im Attribut der letzte RID der dem „zuletzt“ erstellten Objekt vergeben wurde gespeichert.


 

Da die RID-Pool Informationen DC-spezifisch sind, werden die Attribute rIDAllocationPool, rIDNextRID und rIDPreviousAllocationPool logischerweise nicht repliziert. Jeder DC hat seine eigenen Werte in den Attributen gespeichert.

Das Attribut rIDUsedPool hingegen wird nicht verwendet.

 

 

Den RID-Pool erhöhen

Der RID-Pool von 500 RIDs, der vom RID-Master an die DCs und an sich selbst verteilt wird kann erhöht werden. Dazu gilt es auf dem RID-Master im folgenden Registry-Schlüssel, der seit Windows 2000 existiert, den entsprechenden Wert einzutragen:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\RID Values\RID Block Size

Wurde ein gewünschter Wert (in Dezimal, z.B. 10000) konfiguriert, muss zwingend der RID-Master neu gestartet werden ehe der neue Wert aktiv wird. Das verteilen eines größeren RID-Pools durch den RID-Master ist nur durch diese Registry-Änderung möglich. Trägt man dort einen kleineren Wert als 500 ein, wird der Wert ignoriert und stattdessen der Standardwert von 500 weiter verwendet.

Doch das vergrößern des RID-Pools ist in der Praxis in den allermeisten Fällen nicht notwendig! Wenn der RID-Pool auf einem DC den o.g. Schwellenwert erreicht, wird automatisch vom RID-Master ein neuer Pool angefordert. Ist dies nicht möglich, besteht ein Problem mit dem RID-Master oder es besteht ein Netzwerk bzw. Konnektivitätsproblem. Dies können DNS-, AD-Replikations- oder Netzwerkprobleme sein.


 

Die doppelte Vergabe einer SID

Es gibt Situationen in denen es zur doppelten Vergabe einer SID kommen kann. In Situationen wo der RID-Master „mit Gewalt“ von einem anderen DC übernommen wurde, ein DC von einem Image rückgesichert wurde oder zwei RID-Master in der Domäne existieren, kann es beim erstellen eines Sicherheitsprinzipals zur erneuten Vergabe einer bereits vergebenen RID kommen.

Um die Möglichkeit das zwei RID-Master in der Domäne existieren können zu minimieren, werden folgende Überprüfungen durchgeführt:

  • Es findet eine Replikation statt bevor der RID-Master „mit Gewalt“ von einem anderen DC übernommen wird.
  • Das Attribut rIDAvailablePool wird über die „dringende Replikation“ (urgent replication) repliziert, um den zukünftigen RID-Master möglichst auf dem aktuellsten Stand zu bringen.
  • Wenn der RID-Master einen RID-Pool einem DC zuweist und dieser sich mit einem anderen Pool auf einem anderen DC überschneidet, verwirft der DC den neuen RID-Pool den er erhalten hat und fordert einen neuen Pool an. Das macht der DC erst dann, wenn er die Information der Überschneidung über die AD-Replikation erfahren hat. Diese Vorgehensweise hindert die DCs eine bereits vergebene SID erneut zu vergeben und sorgt dafür, dass die DCs die einen RID-Pool haben der sich mit einem anderen Pool überschneidet, vom RID-Master einen neuen RID-Pool anfordern.



Wenn der Fall doch einmal eintreffen sollte und doppelte SIDs (aus welchen Gründen auch immer) vergeben wurden, kann man diese mit NTDSUTIL aufspüren und entfernen. Die Vorgehensweise ist wie folgt:

  • Zuerst gilt es unter Start – Ausführen das NTDSUTIL zu starten.
  • Danach muss man sich mit einem DC verbinden. Dazu gibt man den folgenden Befehl ein: connect to server <Computername>
  • Mit dem Befehl check duplicate sid wird nach doppelten SIDs in der Domäne gesucht. Ist die Suche beendet, wird die Log-Datei dupsid.log auf der Ebene erstellt, in der auch das NTDSUTIL aufgerufen wurde. In der Log-Datei sind die doppelten SIDs (falls vorhanden) protokolliert.
  • Wurden doppelte SIDs gefunden, kann man auf der gleichen NTDSUTIL-Ebene mit dem Befehl cleanup duplicate sid die duplizierten SIDs entfernen.
  • Anschließend kann man mit „q“ oder „quit“ (zwei mal) das NTDSUTIL verlassen.


Das erstellen der Log-Datei kann auch mit einem Einzeiler in der CMD erstellt werden.
Der Befehl dazu lautet:
C:\Users\Administrator> NTDSUTIL "sec acc man" "co to se DCNAME" "check dup sid" q q


Doppelte SIDs können mit diesem Einzeiler entfernt werden:
C:\Users\Administrator> NTDSUTIL "sec acc man" "co to se DCNAME" "clean dup sid" q q



 

Weitere Informationen:
Die FSMO-Rollen verschieben
Event ID 16650: The account-identifier allocator failed to initialize in Windows 2000 and in Windows Server 2003
Description of RID Attributes in Active Directory
"Domain controller has failed to obtain a new identifier pool" error event in Windows 2000 Server SP3 and earlier
Active Directory attributes that refer to a prefix may not be stored in the local copy of Active Directory on a computer that is running Microsoft Windows Server 2003
FSMOs
HOW TO: Find and Clean Up Duplicate Security Identifiers with Ntdsutil in Windows Server 2003
How To Find and Clean Up Duplicate Security Identifiers with Ntdsutil in Windows 2000

Sunday, October 25, 2009 11:25:48 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Sunday, October 18, 2009

Bisher konnte der Domänen- sowie Gesamtstrukturfunktionsmodus über die grafische Oberfläche, zum einen über die MMC Active Directory-Benutzer und -Computer und zum anderen über die MMC Active Directory-Domänen und -Vertrauensstellung hochgestuft werden. Der Domänenfunktionsmodus lässt sich entweder in der MMC Active Directory-Benutzer und -Computer oder Active Directory-Domänen und -Vertrauensstellung hochstufen. Der Gesamtstrukturfunktionsmodus hingegen lässt sich ausschließlich in der MMC Active Directory-Domänen und -Vertrauensstellung hochstufen.

Beide Funktionsebenen lassen sich (neben LDIFDE und VBSkript) auch mit LDP und ADSIEdit heraufstufen. Dazu muss für den Domänenfunktionsmodus im Attribut msDS-Behavior-Version, das sich in der Domänenpartition in den Eigenschaften des Containers <DC=Domäne,DC=TLD> befindet, der entsprechende Wert eingetragen werden.

Für den Gesamtstrukturfunktionsmodus ist ebenfalls im Attribut msDS-Behavior-Version, das sich in der Konfigurationspartition in den Eigenschaften des Containers <CN=Partitions,CN=Configuration,DC=Root-Domäne,DC=TLD> befindet, der entsprechende Wert einzutragen.

Die MMCs oder die AD-PowerShell machen auch nichts anderes, als den Wert im Attribut msDS-Behavior-Version an entsprechender Stelle zu ändern.


Der Wert im Attribut msDS-Behavior-Version das sich in den Eigenschaften der Domänenpartition befindet, entspricht dem folgenden Domänenfunktionsmodus:

0 = Domänenfunktionsmodus: Windows 2000 gemischt und Windows 2000 pur
1 = Domänenfunktionsmodus: Windows Server 2003 Interim
2 = Domänenfunktionsmodus: Windows Server 2003
3 = Domänenfunktionsmodus: Windows Server 2008
4 = Domänenfunktionsmodus: Windows Server 2008 R2



Der Wert im Attribut msDS-Behavior-Version das sich in der Konfigurationspartition in den Eigenschaften des Objekts CN=Partitions befindet, entspricht dem folgenden Gesamtstrukturfunktionsmodus:

0 = Gesamtstrukturfunktionsmodus: Windows 2000
1 = Gesamtstrukturfunktionsmodus: Windows Server 2003 Interim
2 = Gesamtstrukturfunktionsmodus: Windows Server 2003
3 = Gesamtstrukturfunktionsmodus: Windows Server 2008
4 = Gesamtstrukturfunktionsmodus: Windows Server 2008 R2

 

Weitere Details werden im folgenden Artikel erläutert:

Domänen- und Gesamtstrukturfunktionsmodus

 

Mit der Einführung des Windows Server 2008 R2 und der AD-PowerShell lässt sich der Domänen- und Gesamtstrukturfunktionsmodus nun auch über die AD-PowerShell hochstufen.


 

Den Domänenfunktionsmodus mit der AD-PowerShell heraufstufen


Der Domänenfunktionsmodus lässt sich mit Domänen-Admin Rechten mit diesem Befehl heraufstufen:

Set-ADDomainMode -Identity <Domäne> -DomainMode <Modus>


Der Identity-Parameter gibt die AD-Domäne an, die in den höheren Modus gestuft werden soll. Die Domäne kann dabei durch den:

  • definierten Namen (Distinguished Name, kurz DN)
  • die objectGUID
  • die ObjectSID
  • DNS-Domänennamen
  • NETBIOS-Domänennamen angegeben werden.



Mit der Angabe des definierten Namen der Domäne sieht der Befehl so aus:
Set-ADDomainMode -Identity „DC=blog,DC=dikmenoglu,DC=de“ -DomainMode <Modus>


Durch die Angabe der ObjectGUID der Domäne sieht der Befehl wie folgt aus:
Set-ADDomainMode -Identity e7057501-108f-4320-9f55-d40a400acbe7 -DomainMode <Modus>


Der Befehl zum Heraufstufen in einen höheren Domänenfunktionsmodus mit der Angabe der Object-SID ist folgender:
Set-ADDomainMode -Identity S-1-5-21-4256209546-3580370902-1950063504 -DomainMode <Modus>


Mit der Angabe des DNS-Domänennamen lautet der Befehl so:
Set-ADDomainMode -Identity „blog.dikmenoglu.de“ -DomainMode <Modus>


Zum Heraufstufen des Domänenfunktionsmodus mit der Angabe des NetBIOS-Domänennamen gilt es diesen Befehl anzugeben:
Set-ADDomainMode -Identity „blog-dikmenoglu“ -DomainMode <Modus>



Da die AD-PowerShell Pipeline-fähig ist, kann ein Domänenobjekt über die Pipeline an den Identity-Parameter übergeben werden. Z. B. kann mit dem Cmdlet Get-ADDomain ein Domänenobjekt abgerufen und dieses anschließend über die Pipeline an das Cmdlet Set-ADDomainMode übergeben werden. Der Befehl würde so aussehen:

Get-ADDomain | Set-ADDomainMode -Identity <Domäne> -DomainMode <Modus>

 

Der Parameter -DomainMode gibt den Domänenfunktionsmodus an, auf den die angegebene Domäne hochgestuft werden soll. Bei der Angabe von <Modus> können folgende Werte angegeben werden:

- Windows2000Domain oder 0
-
Windows2003InterimDomain oder 1
-
Windows2003Domain oder 2
-
Windows2008Domain oder 3
-
Windows2008R2Domain oder 4


Die Domäne “blog.dikmenoglu.de” lässt sich wie folgt auf den Domänenfunktionsmodus “Windows Server 2008 R2” heraufstufen:
Set-ADDomainMode -Identity blog.dikmenoglu.de -DomainMode 4


Das Heraufstufen einer Domäne kann auch z.B. von einem Windows 7 Client worauf die RSAT installiert sind erfolgen, das Mitglied einer anderen Domäne ist. Natürlich funktioniert das nur, wenn das Benutzerkonto mit dem das Heraufstufen durchgeführt wird, Domänen-Admin Rechte in der Zieldomäne hat oder dem Benutzer die entsprechenden Rechte delegiert wurden.



 

Den Gesamtstrukturfunktionsmodus mit der AD-PowerShell heraufstufen


Der Gesamtstrukturfunktionsmodus lässt sich mit Organisations-Admin Rechten mit diesem Befehl heraufstufen:

Set-ADForestMode -Identity <Wert> -ForestMode <Modus>


Der -identity Parameter gibt die Root-Domäne der Gesamtstruktur an. Als Wert kann der:

  • vollqualifizierte Domänenname
  • ObjectGUID
  • NetBIOS-Name
  • DNS-Hostname (FQDN) angegeben werden.



Verwendet man den vollqualifizierten Domänennamen, sieht der Befehl so aus:
Set-ADForestMode -Identity „Root-Domäne.de“ -ForestMode <Modus>


Die Gesamtstruktur kann durch die Angabe der ObjectGUID der Root-Domäne wie folgt heraufgestuft werden:
Set-ADForestMode -Identity e7057501-108f-4320-9f55-d40a400acbe7 -ForestMode <Modus>


Mit der Angabe des NetBIOS-Namen der Root-Domäne wird die Gesamtstruktur folgendermaßen heraufgestuft:
Set-ADForestMode -Identity „Root-Domäne“ -ForestMode <Modus>


Mit Angabe des DNS-Hostnamen (FQDN) wird die Gesamtstruktur so heraufgestuft:
Set-ADForestMode –Identity “DCON01.Root-Domäne.de” -ForestMode <Modus>



Eine weitere Möglichkeit die Gesamtstruktur in den höheren Modus zu stufen, ist durch die Pipeline-Fähigkeit der AD-PowerShell möglich. Mit dem Cmdlet Get-ADForest können zuerst die Gesamtstrukturinformationen abgerufen und anschließend über die Pipeline an das Cmdlet Set-ADForestMode übergeben werden:

Get-ADForest | Set-ADForestMode -Identity <Wert> -ForestMode <Modus>



Der Parameter -ForestMode gibt den Gesamtstrukturfunktionsmodus an, auf den die angegebene Gesamtstruktur hochgestuft werden soll. Bei der Angabe von <Modus> können folgende Werte angegeben werden:

- Windows2000Forest oder 0
- Windows2003InterimForest oder 1
- Windows2003Forest oder 2
- Windows2008Forest oder 3
- Windows2008R2Forest oder 4


Der Gesamtstrukturfunktionsmodus lässt sich wie folgt auf „Windows Server 2008 R2“ heraufstufen:
Set-ADForestMode -Identity „root.dikmenoglu.de“ -ForestMode Windows2008R2Forest

 

Erstmals kann der Domänen- sowie Gesamtstrukturfunktionsmodus unter gewissen Umständen sogar zurückgestuft werden. Was das genau auf sich hat, wird in diesem Artikel beschrieben:

Den Domänen- und Gesamtstrukturfunktionsmodus zurückstufen

 


Den Domänen- und Gesamtstrukturfunktionsmodus anzeigen

Neben den MMCs Active Directory-Benutzer und -Computer sowie Active Directory-Domänen und -Vertrauensstellung lässt sich der Domänen- und Gesamtstrukturfunktionsmodus unter anderem mit der AD-PowerShell, LDP und Dsquery wie folgt anzeigen.



Die Funktionsebenen in der AD-PowerShell anzeigen

  • Den Domänenfunktionsmodus kann man sich mit diesem Befehl anzeigen lassen:
    Get-ADDomain | Select DomainMode | FL
  • Der Gesamtstrukturfunktionsmodus lässt sich mit diesem Befehl anzeigen:
    Get-ADForest | Select ForestMode | FL
  • Man kann sich aber auch mit dem RootDSE-Objekt verbinden und die Informationen aus den beiden Attributen ForestFunctionality und DomainFunctionality entnehmen. Der Befehl lautet so (alles in einer Zeile):
    [ADSI]"LDAP://RootDSE" | Select ForestFunctionality,DomainFunctionality

 

 

LDP

Startet man das LDP und verbindet sich mit einem DC, werden die Attribute vom RootDSE-Objekt angezeigt. Dort kann man ebenfalls den Domänen- sowie Gesamtstrukturfunktionsmodus entnehmen.


 

 

Dsquery

  • Das Attribut msDS-Behavior-Version lässt sich für den Domänenfunktionsmodus wie folgt abfragen:
    dsquery * “DC=Domäne,DC=de” -Scope Base -attr msDS-Behavior-Version

  • Die Abfrage für den Gesamtstrukturfunktionsmodus lautet folgendermaßen:
    dsquery * “CN=Partitions,CN=Configuration,DC=Root-Domäne” -Scope Base -attr msDS-Behavior-Version

 

 

Weitere Informationen:
How to raise domain and forest functional levels in Windows Server 2003
3.1.1.3.2 rootDSE Attributes

Sunday, October 18, 2009 6:30:42 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell  | 
 Friday, October 16, 2009
Was bis Windows Server 2003 möglich ist, funktioniert ab Windows Server 2008 nicht mehr. Bis Windows Server 2003 ist es möglich einen zusätzlichen Server in einer Subdomäne zum Domänencontroller (DC) zu stufen, ohne das eine Verbindung zwischen der Sub- und Root-Domäne besteht.

Ab Windows Server 2008 ist das nicht mehr möglich. Existiert zum Zeitpunkt des Heraufstufens zwischen der Sub- und Root-Domäne keine (VPN-) Verbindung, kann ein Server nicht als zusätzlicher DC in einer Subdomäne heraufgestuft werden. Dabei spielt es keine Rolle, ob es sich um einen Standalone- oder Mitgliedsserver handelt!

Das Heraufstufen eines zusätzlichen DCs schlägt über die grafische Oberfläche mit dem DCPROMO-Assistenten und in der Kommandozeile (CMD) mit der Unattendedvariante (unbeaufsichtigte DC-Installation) fehl. Es schlägt auch dann fehl, wenn lediglich die DNS- und LDAP-Kommunikation zwischen der Sub- und Root-Domäne gestört ist.

Die irreführende Fehlermeldung über den DCPROMO-Assistenten lautet wie folgt:


 


Auch die Fehlermeldung mit der Unattendedvariante in der Kommandozeile ist nicht Aufschlussreich:


 

Die Ursache für dieses Fehlverhalten ab Windows Server 2008 liegt darin begründet, dass das DCPROMO versucht einen DC aus der Root-Domäne zu erreichen, um Gesamtstrukturinformationen abzurufen. Leider weisen die Fehlermeldungen keineswegs darauf hin. Die Gesamtstrukturinformationen können aber von jedem DC egal aus welcher Domäne geliefert werden.

 

Nun hat Microsoft reagiert und einen Hotfix veröffentlicht. Der Hotfix kann von diesem KB-Artikel aus angefordert werden:

You cannot install Active Directory Domain Services on a member server that is running Windows Server 2008 in a branch office if the DNS and LDAP communication between the branch office and the forest root domain is blocked


Nach der Installation des Hotfixes ist kein Neustart notwendig.
Anschließend ist das Heraufstufen über die grafische Oberfläche und in der CMD möglich, ohne das eine Verbindung zwischen der Sub- und Root-Domäne existiert.

Das Problem besteht leider auch unter Windows Server 2008 R2!
Auch für die „2008 R2“ Version wird Microsoft einen Hotfix veröffentlichen. Sobald dieser verfügbar ist, wird ein entsprechender Hinweis an dieser Stelle erfolgen.


16.10.2009: Leider gibt es zur Zeit mit der x32Bit Version des Hotfixes ein Problem. Microsoft ist bereits informiert und wird es schnellstmöglich beheben. Die x64 Version funktioniert ohne Probleme.

Friday, October 16, 2009 5:28:33 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Installation  | 
 Saturday, October 10, 2009

Seit Windows Server 2008 gibt es ein neues Feature, das bei der Domänenanmeldung den Zeitpunkt der letzten interaktiven Anmeldung anzeigt.

Bisher hat man seit der Einführung des Active Directory mit Windows 2000 die Möglichkeit den Zeitpunkt der letzten Domänenanmeldung eines Benutzers, durch das Attribut Last-Logon herauszufinden. Der Nachteil an diesem Attribut ist, dass es nicht zwischen den Domänencontrollern (DCs) repliziert wird. Somit muss man jeden DC in der Domäne einzeln abfragen um das aktuellste Datum zu erhalten. Mit Windows Server 2003 hat Microsoft dann das Attribut Last-Logon-Timestamp eingeführt, das sogar zwischen den DCs repliziert wird. Weitere Einzelheiten werden im folgenden Artikel erläutert:

Die letzte Benutzeranmeldung herausfinden



Für das Anzeigen der „letzten interaktiven Domänenanmeldung“ wurden dem AD-Schema ab Windows Server 2008 vier Attribute hinzugefügt, als die wären:

  1. msDS-FailedInteractiveLogonCount: In diesem Attribut wird die Anzahl der fehlgeschlagenen Anmeldeversuche seit der Aktivierung dieser Funktion gespeichert.

  2. msDS-FailedInteractiveLogonCountAtLastSuccessfulLogon: Die Anzahl der fehlgeschlagenen interaktiven Anmeldeversuche bis zur letzten erfolgreichen Anmeldung werden in diesem Attribut gespeichert.

  3. msDS-LastFailedInteractiveLogonTime: Der Zeitpunkt des letzten fehlgeschlagenen Anmeldeversuchs wird in diesem Attribut gespeichert.

  4. msDS-LastSuccessfulInteractiveLogonTime: Wann die letzte erfolgreiche Anmeldung und somit die korrekte Kombination aus Benutzername und Kennwort eingegeben wurde, wird in diesem Attribut gespeichert.

 

Mit dieser neuen Funktion kann der Mitarbeiter einfach erkennen, ob evtl. sein Benutzerkonto kompromittiert wurde oder dieser ein Opfer einer Brute-Force Attacke ist.


Ist diese Funktion aktiviert, kann man die letzte erfolgreiche Benutzeranmeldung neben dem Attribut
Last-Logon und Last-Logon-TimeStamp, auch durch das Attribut msDS-LastSuccessfulInteractiveLogonTime herausfinden.


Die letzte erfolgreiche Anmeldung aller Benutzer einer bestimmten OU kann man z.B. mit diesem Befehl abfragen:

dsquery * "OU=<OU>,DC=Domäne,DC=de" -attr name msDS-LastSuccessfulInteractiveLogonTime


Als Ergebnis wird ein 8 Byte bzw. 64 Bit Integer8 Wert geliefert. Diesen kann man dann in der Kommandozeile mit dem folgenden Befehl in ein leserliches Datumsformat konvertieren:
w32tm /ntte <Wert>.


Falls die Daten einer bestimmten OU z.B. in Excel weiterverarbeitet werden sollen, könnte mit CSVDE ein Export der Werte mit diesem Befehl durchgeführt werden:

CSVDE -f Benutzer.csv -r "(&(objectClass=user)(objectCategory=person))" –d "OU=<OU>,DC=Domäne,DC=de" –p onelevel -l "name,sAMAccountName,msDS-LastSuccessfulInteractiveLogonTime"





Wo wird dieses Feature aktiviert?

Diese neue Funktion steht in Form einer neuen GPO zur Verfügung:

Computerkonfiguration\Richtlinien\Administrative Vorlagen\Windows-Komponenten\Windows-Anmeldeoptionen\Informationen zu vorherigen Anmeldungen bei der Benutzeranmeldung anzeigen


Sollen die Informationen nur beim anmelden an DCs angezeigt werden, gilt es diese Richtlinie nur auf die DCs zu verlinken (genauer: Auf die OU „Domain Controllers“). Dazu kann man entweder die Default Domain Controllers Richtlinie oder eine neu erstellte GPO verwenden. Ist es hingegen gewünscht die Infos auch auf den Clients z.B. der Finanzbuchabteilung anzuzeigen, gilt es zusätzlich die GPO auf die Clients der Finanzbuchabteilung (auf einer eigenen OU) zu verlinken.

Wie es unschwer zu erkennen ist, handelt es sich dabei um eine Computerrichtlinie die auf Clients, Mitgliedsserver und DCs verlinkt werden muss und nicht auf OUs, in denen sich ausschließlich Benutzer oder Gruppen befinden!





Die Voraussetzungen

  1. Der Domänenfunktionsmodus muss sich auf Windows Server 2008 oder höher befinden.

  2. Auf der Client Seite wird diese Funktion erst ab Windows Vista unterstützt. Ältere Betriebssysteme ignorieren diese Funktion.

  3. Möchte man die Infos auf den Clients einer bestimmten OU angezeigt bekommen (z.B. auf den Clients der Finanzbuchabteilung), muss die GPO zwingend auch auf die DCs angewendet werden. Somit bekommt man dann die Infos auch bei der Anmeldung an den DCs angezeigt. Das die Infos nur auf den Clients und nicht noch zusätzlich auf den DCs angezeigt werden, ist leider nicht möglich.

 

 

Die Funktionsweise der „letzten interaktiven Anmeldung“

Ist das Anzeigen der letzten interaktiven Domänenanmeldung aktiviert, erhält der Domänenbenutzer bei seiner ersten Domänenanmeldung nach Aktivierung dieser Funktion zuerst folgende Information angezeigt, ehe er den Desktop zu Gesicht bekommt:





Ab der zweiten Anmeldung werden dem Benutzer dann die folgenden Informationen angezeigt:

  1. Den Zeitpunkt der letzten erfolgreichen interaktiven Anmeldung.
  2. Den Zeitpunkt des letzten fehlgeschlagenen interaktiven Anmeldeversuchs.
  3. Die Anzahl der fehlgeschlagenen Anmeldeversuche seit der letzten erfolgreichen interaktiven Anmeldung.


 

Die o.g. vier Attribute werden zwischen den DCs innerhalb einer Domäne repliziert. Sie werden jedoch nicht in den globalen Katalog repliziert und werden auch nicht indiziert (was sich beides in den jeweiligen Attributen ändern lässt).

Hat sich der Benutzer „einmal“ an einem Computer angemeldet auf dem die GPO angewendet wird, werden die Werte in den o.g. Attributen auch dann aktualisiert, wenn sich der Benutzer an Computern anmeldet auf denen die GPO nicht wirkt. Aber die Informationen über die letzte interaktive Anmeldung und über die letzten Anmeldeversuche werden logischerweise dann nicht angezeigt.

Bei der letzten interaktiven Anmeldung wird auch kein Hinweis angezeigt, von welchem Computer aus der Anmeldeversuch durchgeführt wurde. Schließlich sind die Informationen in den Eigenschaften des Benutzer- und nicht Computerobjekts hinterlegt. Um festzustellen von welchem Computer der Anmeldeversuch durchgeführt wurde, müssen dazu die Sicherheitsprotokolle aller DCs innerhalb der Domäne überprüft werden.

 


 

Die Besonderheiten bei diesem Feature

Wenn die Voraussetzungen für dieses Feature nicht erfüllt sind, erhält man bei der Anmeldung folgende Meldung:

Aufgrund der Sicherheitsrichtlinien auf diesem Computer werden Informationen über die letzte interaktive Anmeldung angezeigt. Die Informationen konnten nicht ermittelt werden. Wenden Sie sich an den Netzwerkadministrator, um weitere Unterstützung zu erhalten.


Anschließend gelangt man erneut zum Anmeldebildschirm. Eine interaktive Anmeldung (STRG+ALT+ENTF) lokal an dem Computer ist nicht möglich!


Das nicht Erfüllen der Voraussetzungen sind:

  1. Ist der Domänenfunktionsmodus nicht auf mindestens „Windows Server 2008“ und die GPO wird aktiviert und auf eine OU verlinkt, können sich die Benutzer an den Computern die sich in dieser OU befinden nicht anmelden. Das bedeutet, wenn die GPO z.B. auf die OU „Domain Controllers“ verlinkt wird, kann man sich anschließend nicht mehr interaktiv (STRG+ALT+ENTF) an den DCs anmelden!

  2. Wird die GPO nur auf eine OU verlinkt in der sich Windows Server 2008 Mitgliedsserver, Windows Vista oder Windows 7 Clients befinden und nicht noch zusätzlich auf die OU „Domain Controllers“, so bleibt den Benutzern ebenfalls die Anmeldung an den betroffenen Computern verwehrt.

 


Es sollte unbedingt vor dem Einsatz dieser Funktion ein ausgiebiger Test in einer Testumgebung durchgeführt werden!

Saturday, October 10, 2009 5:46:57 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Dokumentation  | 
 Friday, October 02, 2009

Es gibt verschiedene Möglichkeiten nach Computern die ein bestimmtes Betriebssystem sowie Service Pack installiert haben zu suchen. Die Attribute in denen diese Informationen enthalten sind wären: OperatingSystem, OperatingSystemVersion und OperatingSystemServicePack.

Es ist empfehlenswert das Attribut OperatingSystem bei der Abfrage zu verwenden und nicht nur(!) das Attribut OperatingSystemVersion. Denn die Versionsnummer lautet je nach Betriebssystem sowie Service Pack zwischen Servern und Clients gleich.

Z.B. lautet die Versionsnummer zwischen „Windows Vista SP1“ und „Windows Server 2008 SP1“ bei beiden Betriebssystemen „6.0 (6001)“. Auf einem „Windows Vista SP2“ und einem „Windows Server 2008 SP2“ lautet die Versionsnummer bei beiden Betriebssystemen „6.0 (6002)“. Oder zwischen einem „Windows Server 2008 R2“ und „Windows 7“ jeweils ohne Service Pack, lautet die Versionsnummer bei beiden Betriebssystemen gleich „6.1 (7600)“.

 

Hinweis: Die genaue Schreibweise welches Betriebssystem sowie Service Pack installiert ist, erfährt man neben der Versionsnummer in der MMC Active Directory-Benutzer und -Computer (dsa.msc). Dort werden die Informationen in den Eigenschaften eines Computerkontos im Reiter „Betriebssystem“ angezeigt.

 



In der AD-PowerShell unter Windows Server 2008 R2 und Windows 7

 

# Alle Computerobjekte zusätzlich mit den Werten Betriebssystem, Version und Service Pack anzeigen:
Get-ADComputer –Filter {Name –Like „*“} –Properties OperatingSystem, OperatingSystemVersion, OperatingSystemServicePack


# Es ist auch möglich die Ausgabe in eine CSV-Datei zu exportieren, um diese z.B. in Excel weiterzuverarbeiten. Exportieren lässt sich das Ergebnis dank der Pipeline-Fähigkeit der AD-PowerShell und dem Cmdlet
Export-CSV wie folgt:
Get-ADComputer –Filter {Name –Like „*“} –Properties OperatingSystem, OperatingSystemVersion, OperatingSystemServicePack | Export-CSV Computer.csv




Nach Windows Server 2008 R2 suchen

# Alle Computerobjekte in der Domäne mit dem Betriebssystem „Windows Server 2008 R2“ (alle Versionen) anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Server 2008 R2*“}



# Alle Computerobjekte in der Domäne nur mit dem Betriebssystem „Windows Server 2008 R2 Standard“ anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows Server 2008 R2 Standard“}


# Alle Computerobjekte mit dem Betriebssystem „Windows Server 2008 R2“ (alle Versionen) aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Server 2008 R2*“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel


# Alle „Windows Server 2008 R2“ (alle Versionen) Computerobjekte mit einem bestimmten Service Pack aus einer OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Server 2008 R2*“ –and OperatingSystemServicePack –eq „Service Pack x“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel

 


Nach Windows Server 2008 suchen

# Um lediglich „Windows Server® 2008 Standard“ Computerobjekte mit Service Pack 1 einer Domäne anzuzeigen, kann dieser Befehl verwendet werden:
Get-ADComputer –Filter {OperatingSystem –eq „Windows Server® 2008 Standard“ –and OperatingSystemServicePack –eq „Service Pack 1“}


Hinweis: Das ® Symbol kann per Copy&Paste in die AD-PowerShell kopiert werden.


# Alle “Windows Server 2008” (alle Versionen) Computerobjekte, egal welches Service Pack installiert ist einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Server*“ –and OperatingSystemVersion –Like „6.0*“}

# Alle “Windows Server 2008” (alle Versionen) Computerobjekte mit Service Pack 1 einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Server*“ –and OperatingSystemVersion –eq „6.0 (6001)“}


# Alle „Windows Server 2008“ (alle Versionen) Computerobjekte mit „Service Pack 2“ einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows Server*“ –and OperatingSystemVersion –eq „6.0 (6002)“}


# Alle Computerobjekte mit dem Betriebssystem „Windows Server 2008“ (alle Versionen),
egal welches Service Pack installiert ist aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Server*“ –and OperatingSystemVersion –Like „6.0*“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel


# Alle „Windows Server® 2008 Standard“ Computerobjekte mit „Service Pack 2“ aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows Server® 2008 Standard“ –and OperatingSystemServicePack –eq „Service Pack 2“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel


# Alle „Windows Server 2008“ (alle Versionen) Computerobjekte mit „Service Pack 1“ aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Server*“ –and OperatingSystemVersion –eq „6.0 (6001)“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel

# Alle „Windows Server 2008“ (alle Versionen) Computerobjekte mit „Service Pack 2“ aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Server*“ –and OperatingSystemVersion –eq „6.0 (6002)“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel




Nach Windows Server 2003 suchen

# Um lediglich „Windows Server 2003“ Computerobjekte einer Domäne anzuzeigen, kann dieser Befehl verwendet werden:
Get-ADComputer –Filter {OperatingSystem –eq „Windows Server 2003“}



Hinweis: Unter „Windows Server 2003“ unterscheidet Microsoft im Attribut
OperatingSystem nicht zwischen „Standard“ oder „Enterprise“.


#
Alle Computerobjekte mit „Windows Server 2003“ und dem „Service Pack 2“ einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows Server 2003“ –and OperatingSystemServicePack –eq „Service Pack 2“}

 

# Alle Computerobjekte mit dem Betriebssystem „Windows Server 2003“ aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Server 2003“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel


# Alle Computerobjekte mit „Windows Server 2003“ und dem „Service Pack 2“ aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows Server 2003“ –and OperatingSystemServicePack –eq „Service Pack 2“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel




Nach Windows 2000 Server oder Clients suchen

# Alle „Windows 2000“ Computerobjekte (Clients und Server) einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows 2000*“}

 

# Alle „Windows 2000 Server“ einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Server“}



#
Alle „Windows 2000 Server“ mit „Service Pack 4“ einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Server“ –and OperatingSystemServicePack –eq „Service Pack 4“}


# Alle „Windows 2000 Server“ aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Server“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel

# Alle “Windows 2000 Server“ mit „Service Pack 4“ aus einer OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Server“ –and OperatingSystemServicePack –eq „Service Pack 4“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel


# Alle „Windows 2000 Professional“ Clients einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Professional“}


# Alle „Windows 2000 Professional“ mit „Service Pack 4“ einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Professional“ –and OperatingSystemServicePack –eq „Service Pack 4“}


# Alle „Windows 2000 Professional“ aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Professional“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel

# Alle „Windows 2000 Professional“ mit „Service Pack 4“ aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Professional“ –and OperatingSystemServicePack –eq „Service Pack 4“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel

 


Nach Windows XP suchen

# Alle Windows XP Clients einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows XP*“}


# Alle Windows XP Clients mit „Service Pack 2“ einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows XP*“ –and OperatingSystemServicePack –eq „Service Pack 2“}

# Alle Windows XP Clients aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows XP*“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel


# Alle Windows XP Clients mit “Service Pack 3” aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows XP*“ –and OperatingSystemServicePack –eq „Service Pack 3“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel




Nach Windows Vista suchen

# Alle Windows Vista Clients einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Vista*“}


# Alle Windows Vista Clients mit „Service Pack 1“ einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Vista*“ –and OperatingSystemServicePack –eq „Service Pack 1“}


# Alle Windows Vista Ultimate Clients mit „Service Pack 1“ einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Vista* Ultimate“ –and OperatingSystemServicePack –eq „Service Pack 1“}


# Alle Windows Vista Clients aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Vista*“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel

# Alle Windows Vista Clients mit “Service Pack 2” aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows Vista*“ –and OperatingSystemServicePack –eq „Service Pack 2“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel




Nach Windows 7 suchen

# Alle Windows 7 Clients einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows 7*“}


# Alle Windows 7 Ultimate Clients einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –eq „Windows 7 Ultimate“}


# Alle Windows 7 Clients mit einem bestimmten Service Pack einer Domäne anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows 7*“ –and OperatingSystemServicePack –eq „Service Pack x“}

# Alle Windows 7 Clients aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows 7*“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel


# Alle Windows 7 Clients mit “Service Pack 2” aus einer bestimmten OU anzeigen:
Get-ADComputer –Filter {OperatingSystem –Like „Windows 7*“ –and OperatingSystemServicePack –eq „Service Pack x“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel

 


 

 

CSVDE

In der Kommandozeile lassen sich die gewünschten Informationen mit CSVDE exportieren. Der Vorteil des Exports mit CSVDE ist, das man die exportierte CSV-Datei mit Excel öffnen und weiterverarbeiten kann.


 

Windows Server 2008 R2 exportieren

# Alle Windows Server 2008 R2 aus der Domäne exportieren:
Csvde –f Win2008R2.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows Server 2008 R2 mit einem bestimmten Service Pack aus der Domäne exportieren:
Csvde –f Win2008R2.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" -l name,dNSHostName


# Alle Windows Server 2008 R2 aus einer OU exportieren:
Csvde -f Win2008R2.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows Server 2008 R2 mit einem bestimmten Service Pack aus einer OU exportieren:
Csvde –f Win2008R2.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" -l name,dNSHostName




Windows Server 2008 exportieren

# Alle Windows Server 2008 (und nicht “Windows Server 2008 R2”) aus der Domäne exportieren:
Csvde –f Win2008.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(!OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows Server 2008 mit Service Pack 1 aus der Domäne exportieren:
Csvde –f Win2008.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(OperatingSystemServicePack=Service Pack 1)(!OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName


# Alle Windows Server 2008 aus einer OU exportieren:
Csvde -f Win2008.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(!OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows Server 2008 mit Service Pack 1 aus einer OU exportieren:
Csvde –f Win2008.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(OperatingSystemServicePack=Service Pack 1)(!OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName




Windows Server 2003 exportieren

# Alle Windows Server 2003 aus der Domäne exportieren:
Csvde –f Win2003.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows Server 2003 mit Service Pack 1 aus der Domäne exportieren:
Csvde –f Win2003.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1))" -l name,dNSHostName


# Alle Windows Server 2003 aus einer OU exportieren:
Csvde -f Win2003.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows Server 2003 mit Service Pack 1 aus einer OU exportieren:
Csvde –f Win2003.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1))" -l name,dNSHostName





Windows 2000 Clients und Server exportieren


# Alle Windows 2000 Clients und Server aus der Domäne exportieren:
Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000*))" -l name,dNSHostName,OperatingSystemServicePack


# Nur Windows 2000 Clients und Server mit Service Pack 3 aus der Domäne exportieren:
Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000*)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName


# Alle Windows 2000 Clients und Server aus einer OU exportieren:

Csvde –f Win2000.csv –s <DC> –d "OU=<OU>,DC=Domäne,DC=TLD" –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000*))" -l name,dNSHostName,OperatingSystemServicePack


# Nur Windows 2000 Clients und Server mit Service Pack 3 aus einer OU exportieren:
Csvde –f Win2000.csv –s <DC> –d "OU=<OU>,DC=Domäne,DC=TLD" –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000*)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName


# Nur Windows 2000 Server aus der Domäne exportieren:
Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server))" -l name,dNSHostName,OperatingSystemServicePack



# Alle Windows 2000 Server mit Service Pack 3 aus der Domäne exportieren:
Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName


# Alle Windows 2000 Server aus einer OU exportieren:
Csvde -f Win2000.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows 2000 Server mit Service Pack 3 aus einer OU exportieren:
Csvde –f Win2000.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName


# Nur Windows 2000 Clients aus der Domäne exportieren:
Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional))" -l name,dNSHostName,OperatingSystemServicePack


# Nur Windows 2000 Clients mit Service Pack 3 aus der Domäne exportieren:
Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName


# Alle Windows 2000 Clients aus einer OU exportieren:
Csvde -f Win2000.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows 2000 Clients mit Service Pack 3 aus einer OU exportieren:
Csvde –f Win2000.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName




Windows XP Clients exportieren

# Alle Windows XP Clients aus der Domäne exportieren:
Csvde –f WinXP.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows XP*))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows XP Clients mit einem bestimmten Service Pack aus der Domäne exportieren:
Csvde -f WinXP.csv -s <DC> -r "(&(objectcategory=computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" -l name,dNSHostName


# Alle Windows XP Clients aus einer OU exportieren:
Csvde -f WinXP.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows XP*))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows XP Clients mit Service Pack 2 aus einer OU exportieren:
Csvde –f WinXP.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" -l name,dNSHostName




Windows Vista Clients exportieren

# Alle Windows Vista Clients aus der Domäne exportieren:
Csvde –f Vista.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Vista*))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows Vista Ultimate Clients aus der Domäne exportieren:
Csvde –f Vista.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Vista* Ultimate))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows Vista Clients mit Service Pack 1 aus der Domäne exportieren:
Csvde –f Vista.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" -l name,dNSHostName


# Alle Windows Vista Clients aus einer OU exportieren:
Csvde -f Vista.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows Vista*))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows Vista Clients mit Service Pack 1 aus einer OU exportieren:
Csvde –f Vista.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" -l name,dNSHostName




Windows 7 Clients exportieren

# Alle Windows 7 Clients aus der Domäne exportieren:
Csvde –f Win7.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 7*))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows 7 Ultimate Clients aus der Domäne exportieren:
Csvde –f Win7.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 7 Ultimate))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows 7 Clients mit einem bestimmten Service Pack aus der Domäne exportieren:
Csvde –f Win7.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" -l name,dNSHostName


# Alle Windows 7 Clients aus einer OU exportieren:
Csvde -f Win7.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows 7*))" -l name,dNSHostName,OperatingSystemServicePack


# Alle Windows 7 Clients mit einem bestimmten Service Pack aus einer OU exportieren:
Csvde -f Win7.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" -l name,dNSHostName





 

REPADMIN

Die Suche nach Computerobjekten lässt sich auch mit REPADMIN durchführen. Unter Windows 2000 und Windows Server 2003 müssen vorher die Windows Support Tools installiert werden. Ab Windows Server 2008 ist das REPADMIN bereits „on Bord“.



# Das Betriebsystem sowie das Service Pack aller DCs einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(primaryGroupID=516))" /subtree /atts:name,OperatingSystem,OperatingSystemVersion,OperatingSystemServicePack


# Das Betriebssystem sowie das Service Pack aller Clients und Mitgliedsserver einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(primaryGroupID=515))" /subtree /atts:name,OperatingSystem,OperatingSystemVersion,OperatingSystemServicePack

 


Windows Server 2008 R2


# Alle Windows Server 2008 R2 mit ihren installierten SPs einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows Server 2008 R2 mit einem bestimmten SP einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" /subtree /atts:name



# Sollen die Computerobjekte aus einer bestimmten OU angezeigt werden, so muss anstelle von „ncobj:domain:“ der Distinguished Name der entsprechenden OU angegeben werden. Mit dem folgenden Befehl werden alle Windows Server 2008 R2 mit ihren installierten SPs aus einer OU angezeigt:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack



# Alle Windows Server 2008 R2 mit einem bestimmten SP aus einer OU anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" /subtree /atts:name




Windows Server 2008


# Alle Windows Server 2008 mit ihren installierten SPs einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(!OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


Oder:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0*))" /subtree /atts:name,OperatingSystemServicePack

 

# Alle Windows Server 2008 mit Service Pack 1 einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(OperatingSystemServicePack=Service Pack 1)(!OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name


# Alle Windows Server 2008 mit ihren installierten SPs aus einer OU anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(!OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows Server 2008 mit Service Pack 1 aus einer OU anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(OperatingSystemServicePack=Service Pack 1)(!OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name




Windows Server 2003


# Alle Windows Server 2003 mit ihren installierten SPs einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2003))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows Server 2003 mit Service Pack 1 einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1))" /subtree /atts:name


# Mit dem folgenden Befehl werden alle Windows Server 2003 mit ihren installierten SPs aus einer OU angezeigt:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2003))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows Server 2003 mit Service Pack 1 aus einer OU anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:&(objectcategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1))" /subtree /atts:name


 

Windows 2000 Server


# Alle Windows 2000 Server mit ihren installierten SPs einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows 2000 Server mit Service Pack 3 einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 3))" /subtree /atts:name


# Mit dem folgenden Befehl werden alle Windows 2000 Server mit ihren installierten SPs aus einer OU angezeigt:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows 2000 Server mit Service Pack 4 aus einer OU anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 4))" /subtree /atts:name


 

Windows 7


# Alle Windows 7 Clients mit ihren installierten SPs einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 7*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows 7 Enterprise Clients mit ihren installierten SPs einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 7 Enterprise))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows 7 Clients mit einem bestimmten Service Pack einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" /subtree /atts:name


# Mit dem folgenden Befehl werden alle Windows 7 Clients mit ihren installierten SPs aus einer OU angezeigt:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows 7*))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows 7 Clients mit einem bestimmten Service Pack aus einer OU anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" /subtree /atts:name


 

Windows Vista


# Alle Windows Vista Clients mit ihren installierten SPs einer Domäne anzeigen
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Vista*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows Vista Clients mit Service Pack 1 einer Domäne anzeigen
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" /subtree /atts:name

 

# Mit dem folgenden Befehl werden alle Vista Clients aus einer OU angezeigt:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows Vista*))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack



# Alle Windows Vista Clients mit Service Pack 1 aus einer OU anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" /subtree /atts:name




Windows XP


# Alle Windows XP Clients mit ihren installierten SPs einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows XP*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows XP Clients mit Service Pack 2 einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" /subtree /atts:name


# Mit dem folgenden Befehl werden alle Windows XP Clients mit ihren installierten SPs aus einer OU angezeigt:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows XP*))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows XP Clients mit Service Pack 2 aus einer OU anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" /subtree /atts:name


 

Windows 2000 Professional

# Alle Windows 2000 Clients mit ihren installierten SPs einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows 2000 Clients mit Service Pack 4 einer Domäne anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 4))" /subtree /atts:name


# Mit dem folgenden Befehl werden alle Windows 2000 Clients mit ihren installierten SPs aus einer OU angezeigt:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack


# Alle Windows 2000 Clients mit Service Pack 4 aus einer OU anzeigen:
Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 4))" /subtree /atts:name

 

 

 

DSQUERY

Mit dsquery das erst ab Windows Server 2003 “on Bord” ist, lassen sich ebenfalls die gesuchten Computerobjekte ausfindig machen und zeitgleich auch exportieren.


 

Windows Server 2008 R2

# Alle Windows Server 2008 R2 einer Domäne exportieren:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0 > C:\dsquery.txt


# Alle Windows Server 2008 R2 mit einem bestimmten Service Pack einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" -attr name distinguishedname –Limit 0


#
Alle Windows Server 2008 R2 aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server 2008 R2*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0

# Alle Windows Server 2008 R2 mit einem bestimmten Serice Pack aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" -attr name distinguishedName -Limit 0


 

Windows Server 2008

# Alle Windows Server 2008 einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0


# Alle Windows Server 2008 mit Service Pack 1 einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0 (6001)))" -attr name distinguishedname –Limit 0


#
Alle Windows Server 2008 aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0

# Alle Windows Server 2008 mit Serice Pack 1 aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0 (6001)))" -attr name distinguishedName -Limit 0


 

Windows Server 2003

# Alle Windows Server 2003 einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003))" -attr name OperatingSystemServicePack distinguishedname –Limit 0


# Alle Windows Server 2003 mit Service Pack 1 einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1))" -attr name distinguishedname –Limit 0


#
Alle Windows Server 2003 aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server 2003))" -attr name OperatingSystemServicePack distinguishedName -Limit 0

# Alle Windows Server 2003 mit Serice Pack 1 aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server 2003) (OperatingSystemServicePack=Service Pack 1))" -attr name distinguishedName -Limit 0


 

Windows 2000

# Alle Windows 2000 Server und Clients einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 2000*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0


# Alle Windows 2000 Server und Clients mit dem Service Pack 3 einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 2000*)(OperatingSystemServicePack=Service Pack 3))" -attr name distinguishedname –Limit 0


#
Alle Windows 2000 Server und Clients aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows 2000*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0

# Nur Windows 2000 Server mit dem Service Pack 3 einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 3))" -attr name distinguishedname –Limit 0


# Nur Windows 2000 Clients mit dem Service Pack 3 einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 3))" -attr name distinguishedname –Limit 0


 

Windows XP

# Alle Windows XP Clients einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows XP*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0


# Alle Windows XP Clients mit Service Pack 2 einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" -attr name distinguishedname –Limit 0


#
Alle Windows XP Clients aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows XP*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0

# Alle Windows XP Clients mit Serice Pack 2 aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" -attr name distinguishedName -Limit 0




Windows Vista

# Alle Windows Vista Clients einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Vista*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0


# Alle Windows Vista Clients mit Service Pack 1 einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" -attr name distinguishedname –Limit 0


#
Alle Windows Vista Clients aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Vista*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0

# Alle Windows Vista Clients mit Serice Pack 1 aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" -attr name distinguishedName -Limit 0

 


Windows 7

# Alle Windows 7 Clients einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 7*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0


# Alle Windows 7 Clients mit einem bestimmten Service Pack einer Domäne anzeigen:
dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" -attr name distinguishedname –Limit 0


#
Alle Windows 7 Clients aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows 7*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0

# Alle Windows 7 Clients mit einem bestimmten Serice Pack aus einer OU anzeigen:
dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" -attr name distinguishedName -Limit 0

 

 


Die Active Directory-Suche

Auch in der grafischen Oberfläche kann man nach den gewünschten Computerobjekten suchen. In der MMC Active Directory-Benutzer und -Computer klickt man mit rechts entweder auf den Domänennamen um über alle Container hinweg zu suchen oder auf eine OU, um lediglich in dieser OU zu suchen. Danach ruft man mit einem Klick auf Suchen… das Suchfenster auf.

Im Übrigen ist es auch möglich die AD-Suche direkt aufzurufen, ohne die MMC Active Directory-Benutzer und -Computer zu öffnen. Dazu gilt es mit einem Rechtsklick auf einer freien Fläche auf dem Desktop die Option Neu und anschließend Verknüpfung auszuwählen. Als "Speicherort des Elements" gilt es diesen Eintrag hinzuzufügen: %windir%\System32\rundll32.exe dsquery.dll,OpenQueryWindow (<-- ACHTUNG: Die Schreibweise von "OpenQueryWindow" ist - warum auch immer - "case sensitive"). Im nächsten Schritt gilt es lediglich noch einen Namen für die Verknüpfung zu vergeben und fertig ist die direkte Verknüpfung zur AD-Suche.

Im Suchfenster wählt man als erstes im Feld „Suchen:“ den Eintrag Computer aus. Danach wählt man im Reiter Erweitert mit einem Klick auf Feld z.B. die Option Betriebssystem aus. Anschließend behält man im Feld Bedingung: die Option „Beginnt mit“ bei und gibt im Feld Wert: das gesuchte Betriebssystem ein.

Als Werte könnte man z.B. folgendes eintragen:

- Windows Server 2008 R2*
- Windows Server* 2008*
- Windows Server 2003
- Windows 2000 Server

- Windows 7*
- Windows Vista*
- Windows XP*
- Windows 2000 Professional


Ist die AD-Suche abgeschlossen, sollte man unter Ansicht – Spalten auswählen… die Spalte „Veröffentlicht auf“ hinzufügen. Denn dadurch lässt sich der Container in dem sich das jeweilige Computerobjekt befindet ableiten.

Der Nachteil bei der AD-Suche ist, dass die Ergebnisse nicht exportiert werden können. Wer darauf Wert legt, sollte seine Suche über die „gespeicherte Abfrage“ durchführen.

 

 

Die gespeicherte Abfrage

Ab Windows Server 2003 besteht die Möglichkeit die Suche nach bestimmten Computerobjekten, in der MMC Active Directory-Benutzer und -Computer durch eine „gespeichert Abfrage“ durchzuführen.

Weitere Details über die gespeicherten Abfragen erhält man im folgenden Artikel:

Gespeicherte Abfragen

 

Neben der gleichen Suchmöglichkeit wie bei der AD-Suche, kann man hier eine  benutzerdefinierte Suche in der Domäne durchführen. Bei der benutzerdefinierten Suche könnte man z.B. solche LDAP-Filter verwenden:

- (objectCategory=computer)(OperatingSystem=Windows Server 2008 R2*)
- (objectCategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x)
- (objectCategory=computer)(OperatingSystem=Windows Server* 2008*)(OperatingSystemServicePack=Service Pack 1)

- (objectCategory=computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0*)
- (objectCategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1)
- (objectCategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 3)

- (objectCategory=computer)(OperatingSystem=Windows 7*)
- (objectCategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1)
- (objectCategory=computer)(OperatingSystem=Windows XP*)
- (objectCategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 3)

 

Ist die Suche abgeschlossen, lässt sich das Ergebnis im Menü über Aktion -> Liste exportieren in eine TXT- oder CSV-Datei speichern.

 

 

Weitere Informationen:
AD-PowerShell Befehle
Wie finde ich heraus wo sich ein Objekt befindet?

Friday, October 02, 2009 11:57:55 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Powershell | Dokumentation | Erweiterte Abfragen  | 
 Wednesday, September 09, 2009

In kleineren AD-Umgebungen wie sie in „kleineren und mittleren Unternehmen (kurz KMU)“ existieren, weiß der Administrator in welchen Containern im AD sich die entsprechenden AD-Objekte befinden. Doch in größeren und verteilten AD-Umgebungen mit mehreren AD-Administratoren lässt sich das nicht jederzeit sagen.
 

Um ein AD-Objekt ausfindig zu machen gibt es je nach Betriebssystem verschiedene Möglichkeiten den Distinguished Name (DN) und somit den LDAP-Pfad des gesuchten Objekts mit Bordmitteln anzuzeigen. Der DN gibt dabei den Speicherort des Objekts im AD an.

 

 

 

Die Active Directory Suche in der MMC Active Directory-Benutzer und -Computer (dsa.msc)

 

Bei der AD-Suche hat man zwei Möglichkeiten den Speicherort des Objekts herauszufinden.

 

 

Erste Möglichkeit

 

In der MMC dsa.msc ruft man mit einem Rechtsklick auf den Domänennamen das Suchfenster auf und gibt z.B. den Common Name (CN) oder sAMAccountName (falls bekannt) des Objekts ein. Es reichen bereits die Anfangsbuchstaben aus wie z.B. „Yus“, um Objekte aufzufinden die mit "Yus" anfangen, da bei der Suche die Ambiguous Name Resolution (ANR) angewendet wird. Die ANR durchforstet bei der Suche unter anderem die folgenden Felder: Vorname, Nachname, Anzeigename sowie den Benutzeranmeldename (Prä-Windows 2000). 

Ist die Suche beendet, gilt es im Suchfenster unter
Ansicht - Spalten auswählen… eine weitere Spalte hinzuzufügen. Der Name dieser Spalte unterscheidet sich jedoch zwischen den Betriebssystemen.

 

Unter Windows 2000 und Windows Server 2003 heißt die Spalte X500-definierter Name, unter Windows Server 2008 Definierter Name und unter Windows Server 2008 R2 Distinguished Name. Nach dem hinzufügen der Spalte erscheint im Suchergebnis der DN des Objekts.

 


 

Es ist auch möglich die AD-Suche direkt aufzurufen, ohne die MMC Active Directory-Benutzer und -Computer zu öffnen. Dazu gilt es mit einem Rechtsklick auf einer freien Fläche auf dem Desktop die Option Neu und anschließend Verknüpfung auszuwählen. Als "Speicherort des Elements" gilt es diesen Eintrag hinzuzufügen: %windir%\System32\rundll32.exe dsquery.dll,OpenQueryWindow (<-- ACHTUNG: Die Schreibweise von "OpenQueryWindow" ist "case sensitive"). Im nächsten Schritt gilt es lediglich noch einen Namen für die Verknüpfung zu vergeben und fertig ist die direkte Verknüpfung zur AD-Suche.


 

 

Zweite Möglichkeit

 

Im ersten Schritt ist in der MMC dsa.msc unter Ansicht die Option Erweiterte Funktionen zu aktivieren. Danach gilt es wie in der ersten Möglichkeit im Suchfenster nach dem gewünschten Objekt zu suchen. Ist die Suche beendet, ruft man im zweiten Schritt mit einem Doppelklick auf das Objekt die Eigenschaften auf und wechselt zum Reiter Objekt. Dort wird der kanonische Name des Objekts angezeigt. Liest man diesen in umgekehrter Reihenfolge (von rechts nach links), so lässt sich der DN des Objekts ableiten.

 

 

 


 


Das Kommandozeilentool: DSQUERY

 

Mit dsquery das erst ab Windows Server 2003 „on Bord“ zur Verfügung steht, lässt sich der DN eines Objekts wie folgt anzeigen:

 

dsquery computer -name <CN des Computers>

dsquery user -name <CN des Benutzers>
dsquery group -name <CN der Gruppe>

dsquery contact -name <CN des Kontaktobjekts>

 


Auch bei dsquery können Wildcards verwendet werden.

Lautet der Common Name (CN) eines Benutzerobjekts “Yusuf Dikmenoglu”, so kann der Befehl folgendermaßen aussehen:

 

dsquery user -name *us*f*

 


Standardmäßig durchsucht das dsquery die Domäne in der man den Befehl ausführt. Gibt man den folgenden Befehl an, so durchsucht das dsquery mit Hilfe eines globalen Katalogs (GC) nach dem gewünschten Objekt innerhalb der Gesamtstruktur, also über alle Domänen hinweg:

 

dsquery user Forestroot -name Yusuf*

 


Wenn der
sAMAccountName des gesuchten Benutzerobjekts bekannt ist (Benutzeranmeldename Prä-Windows 2000), lautet die Abfrage wie folgt:

dsquery user -samid Yusuf

 


Ist der userPrincipalName (UPN) eines Benutzerkontos bekannt, so gilt es diese Abfrage durchzuführen um den DN anzuzeigen:


dsquery user -upn Yusuf@blog.dikmenoglu.de

 

 

 

 

Die AD-PowerShell unter Windows Server 2008 R2

 

In der AD-PowerShell die ab Windows Server 2008 R2 on Bord ist, lässt sich der DN des gesuchten Objekts mit diesem Befehl anzeigen:

 

Get-ADComputer <Computername>
Get-ADUser <sAMAccountName>
Get-ADGroup <Gruppe>

 

 

Die AD-PowerShell steht auch auf einem Windows 7 zur Verfügung, aber erst nach der Installation der Remote Server Administration Tools (RSAT).

 

 


Das Active Directory-Verwaltungscenter unter Windows Server 2008 R2

Führt man im AD-Verwaltungscenter (ADAC) eine globale Suche nach einem Objekt durch, wird im Suchergebnis ebenfalls direkt der DN mit angezeigt. Auch im ADAC kann man eine Suche mit Hilfe eines GC durchführen und so nach einem Objekt innerhalb der Gesamtstruktur suchen.



 

 

 

 

Weitere Informationen:
Gespeicherte Abfragen
Active Directory - Abfrage
AD-PowerShell Befehle
Das Active Directory-Verwaltungscenter
Die Active Directory-Attribute hinter den Feldnamen
Ambiguous Name Resolution for LDAP in Windows 2000
Remoteserver-Verwaltungstools für Windows 7

Wednesday, September 09, 2009 5:16:47 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Erweiterte Abfragen  | 
 Saturday, August 22, 2009

Die FSMO-Rollen lassen sich ab Windows Server 2008 R2 neben der grafischen Oberfläche (GUI) und neben der Kommandozeile (CMD) mit NTDSUTIL, auch über die AD-Powershell auf einen anderen DC verschieben.

Das Verschieben der FSMO-Rollen mit der AD-Powershell hat folgende Vorteile:

  • Es muss nicht wie in der GUI oder in der Kommandozeile mit NTDSUTIL zuerst eine Verbindung zum zukünftigen Rolleninhaber hergestellt werden.

  • Mit dem gleichen AD-Powershell Befehl, lediglich beim „seizen“ (Rolleninhaber ist offline) der FSMO-Rollen wird ein zusätzlicher Parameter benötigt, können die FSMO-Rollen „online“ sowie „offline“ an einen anderen DC übergeben werden.

  • Das verschieben der FSMO-Rollen muss nicht zwingend vom Rolleninhaber oder dem zukünftigen Rolleninhaber durchgeführt werden. Stattdessen kann das Verschieben der Rollen von einem Windows 7 Client oder Windows Server 2008 R2 Mitgliedsserver durchgeführt werden, worauf das RSAT installiert ist.



Die FSMO-Rollen werden mit dem Cmdlet Move-ADDirectoryServerOperationMasterRole auf einen anderen DC verschoben.

Wenn der Rolleninhaber funktionstüchtig und online ist, können die FSMO-Rollen mit dem folgenden AD-Powershell Befehl an den angegebenen DC übertragen werden. Übertragen bedeutet in diesem Zusammenhang, dass der ursprüngliche Rolleninhaber funktionsfähig und online ist.

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole SchemaMaster,RIDMaster,InfrastructureMaster,DomainNamingMaster,PDCEmulator

Bei der Angabe des Ziel-DCs muss ausschließlich der Computername angegeben werden.
Anstatt die Namen der Betriebsmasterrollen einzugeben, können auch Zahlen angegeben werden. Also entweder:

PDCEmulator oder 0
RIDMaster
oder 1
InfrastructureMaster
oder 2
SchemaMaster
oder 3
DomainNamingMaster
oder 4


Demnach kann man auch mit diesem Befehl alle FSMO-Rollen auf einen anderen DC übertragen:

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 0,1,2,3,4


Falls jedoch der aktuelle Rolleninhaber ausfällt und das Übertragen der FSMO-Rollen „online“ nicht mehr durchgeführt werden kann, können mit der AD-Powershell die ausgefallenen Betriebsmasterrollen ebenfalls mit dem gleichen Powershell-Befehl, nur zusätzlich mit dem Parameter /Force (sprich „mit Gewalt“) von einem anderen DC übernommen werden. Mit einem der folgenden Befehle werden alle FSMO-Rollen von dem angegebenen DC übernommen:

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole SchemaMaster,RIDMaster,InfrastructureMaster,DomainNamingMaster,PDCEmulator -Force

Bzw.:

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 0,1,2,3,4 -Force


Die beiden Gesamtstrukturmasterrollen „Schemamaster“ sowie „Domänennamenmaster“ können auch auf einen DC einer Subdomäne übertragen oder von einem DC einer Subdomäne übernommen werden. Zum verschieben der FSMO-Rollen muss das Benutzerkonto Mitglied in den folgenden Gruppen sein:

- Schemamasterrolle: Mitglied in der Gruppe „Schema-Admins“
- Domänennamenmaster: Mitglied in der Gruppe „Organisations-Admins“.
- RID-Master: Mitglied in der Gruppe „Domänen-Admins“.
- PDC-Emulator: Mitglied in der Gruppe „Domänen-Admins“.
- Infrastrukturmaster: Mitglied in der Gruppe „Domänen-Admins“.




Den PDC-Emulator über die AD-Powershell verschieben

- Ist der Rolleninhaber online, so kann die Rolle des PDC-Emulators wie folgt verschoben werden:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole PDCEmulator

Oder mit:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 0



- Wenn jedoch der Rolleninhaber nicht mehr zur Verfügung steht (z.B. bei einem DC-Crash), so kann die PDC-Emulatorrolle folgendermaßen von dem angegebenen DC übernommen werden:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole PDCEmulator -Force

Bzw. mit:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 0 -Force




Den RID-Master über die AD-Powershell verschieben

- Die Betriebsmasterrolle „RID-Master“ wird mit einem der folgenden Befehle auf einen anderen DC übertragen, sofern der aktuelle Rolleninhaber online ist:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole RIDMaster

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 1


- Ist dagegen der aktuelle Rolleninhaber offline, so wird die Rolle des RID-Masters mit einem dieser Befehle von einem anderen DC übernommen:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole RIDMaster -Force

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 1 –Force



 

Den Infrastrukturmaster über die AD-Powershell verschieben

- Die Infrastrukturmasterrolle  kann mit einem der folgenden Befehle online auf einen anderen DC übertragen werden:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole InfrastructureMaster

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 2


- Offline kann der Infrastrukturmaster wie folgt von einem anderen DC mit einem dieser Befehle übernommen werden:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole InfrastructureMaster -Force

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 2 -Force


Der Infrastrukturmaster der Anwendungsverzeichnispartitionen muss zusätzlich noch auf einen anderen DC verschoben oder von einem anderen DC übernommen werden.

Die Infrastrukturmaster der Anwendungsverzeichnispartitionen




Den Schemamaster über die AD-Powershell verschieben

- Der Schemamaster wird mit einem dieser Befehle auf einen anderen DC übertragen:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole SchemaMaster

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 3


- Steht der Rolleninhaber nicht mehr zur Verfügung, übernimmt ein anderer DC die Schemamasterrolle mit einem dieser Befehle:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole SchemaMaster -Force

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 3 -Force

 


Den Domänennamenmaster über die AD-Powershell verschieben

Die Rolle „Domänennamenmaster“ wird online mit einem dieser Befehle auf einen anderen DC übertragen:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole DomainNamingMaster

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 4


- Der Domänennamenmaster wird mit einem dieser Befehle von einem anderen DC übernommen, wenn der aktuelle Rollenträger ausgefallen ist:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole DomainNamingMaster -Force

Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 4 -Force

 

Ist auf einem Windows Server 2003 DC oder Windows Server 2008 DC das AD MGS installiert, können die FSMO-Rollen auch auf diese DCs übertragen bzw. von diesen übernommen werden.

Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008

 

Die FSMO-Rollenträger in der AD-Powershell lassen sich mit diesen Befehlen anzeigen:

Get-ADForest | select SchemaMaster,DomainNamingMaster

Get-ADDomain | select PDCEmulator,RIDMaster,Infrastructuremaster


 

Weitere Informationen:
Die FSMO-Rollen verschieben
Die FSMO-Rollen mit DCPROMO verschieben
Die Metadaten des Active Directory unter Windows Server 2008 bereinigen
Active Directory Administration with Windows PowerShell

Saturday, August 22, 2009 10:44:12 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Powershell  | 
 Sunday, August 09, 2009

Neben den grafischen Werkzeugen wie z.B. Active Directory-Benutzer und -Computer (dsa.msc), Active Directory-Standorte und -Dienste (dssite.msc) etc. oder den ds*-Kommandozeilentools (dsadd, dsget, dsquery…) steht im Windows Server 2008 R2 erstmals die AD-PowerShell zur Verfügung. In der AD-PowerShell werden dem Administrator 76 AD-Cmdlets mit geliefert.

Die AD-PowerShell ist nicht von der RPC- oder LDAP-Schnittstelle abhängig, sondern von dem Dienst Active Directory-Webdienste (ADWS) (wie auch das AD-Verwaltungscenter), das erst ab Windows Server 2008 R2 zur Verfügung steht.

Mit der AD-PowerShell lässt sich eine Active Directory-Umgebung unter Windows Server 2003, Windows Server 2008 und Windows Server 2008 R2 administrieren. Des Weiteren kann man AD LDS-Instanzen oder „configuration sets“ und AD-Snapshots mit der AD-PowerShell verwalten.

Doch bevor eine Windows Server 2003 oder Windows Server 2008 Domäne mit der AD-PowerShell von einem Windows 7 Client oder Windows Server 2008 R2 worauf jeweils das RSAT installiert ist, administriert werden kann, muss vorher das Active Directory Management Gateway Service (AD MGS) auf einem Windows Server 2003 DC oder Windows Server 2008 DC installiert werden. Das AD MGS ist das ADWS für Windows Server 2003 und Windows Server 2008.

Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008


Zu finden ist die AD-PowerShell unter Start – Verwaltung – Active Directory Module for Windows PowerShell.
Für die Freunde der grafischen Oberfläche hat Redmond ebenfalls vorgesorgt. Im Server Manager existiert das Feature Windows PowerShell Integrated Scripting Environment (ISE), mit dem dem Administrator eine PowerShell-Entwicklungsumgebung zur Verfügung steht. Nach der Installation steht die Powershell-Entwicklungsumgebung unter Start - Alle Programme - Zubehör - Windows Powershell zur Verfügung. Doch bevor mit dem ISE auf das AD zugegriffen werden kann, müssen vorher mit dem Befehl import-module activedirectory die AD-Cmdlets geladen werden. Anschließend kann der Administrator im ISE seine AD-PowerShell-Skripte erstellen, die mit der Endung „.ps1“ zu speichern sind.

Dadurch das die AD-PowerShell pipeline-fähig ist und sich so verschiedene Cmdlets miteinander verbinden lassen, stellt die AD-PowerShell ein mächtiges Werkzeug dar. Sei es zur täglichen Administration oder bei immer wiederkehrenden Automatisierungsaufgaben, die AD-PowerShell eignet sich in jedem Fall. Mit der AD-PowerShell können in einer einzigen Konsole viele Aufgaben durchgeführt werden, wozu in früheren Betriebssystemversionen mehrere Werkzeuge bzw. MMCs notwendig waren.

Mit der AD-PowerShell ist es auch möglich, wie in einer Kommandozeile (CMD) in der man durch die Verzeichnisse navigiert, durch das AD zu navigieren. In der AD-PowerShell wechselt man mit cd AD: in die AD-Ebene. Dort kann man dann mit dem Befehl cd „DC=blog,DC=dikmenoglu,DC=de“ auf die Domänenpartitionsebene wechseln und mit dir sich die Container die sich darunter befinden anzeigen lassen. Natürlich kann man auch auf jede andere Verzeichnispartition wie z.B. die Konfigurations- oder Schemapartition durch die Angabe des Distinguished Names (DN) der entsprechenden Verzeichnispartition wechseln.




Auch kann man auf diesem Weg z.B. eine neue OU erstellen. Mit dem Befehl md „OU=Neue OU“ kann man auf der Ebene auf der man sich befindet eine neue OU erstellen.





Wenn man in der AD-PowerShell Skripte einsetzen möchte, wird das unter Umständen fehlschlagen. Denn das Ausführen von Skripten wird von der Ausführungsrichtlinie, der sogenannten Execution Policy bestimmt. Damit Skripte ausgeführt werden dürfen, muss mit dem PowerShell-Befehl
Set-ExecutionPolicy Remotesigned die Ausführungsrichtlinie angepasst werden. Mit dem Parameter Remotesigned wird definiert, dass Skripte die aus dem Internet oder von anderen öffentlichen Orten stammen, signiert sein müssen. Jedoch dürfen lokal gespeicherte Skripte ohne Signatur ausgeführt werden.

Weitere Informationen zum digitalen signieren von Skripten werden im folgenden Artikel beschrieben:

http://technet.microsoft.com/en-us/magazine/2008.04.powershell.aspx?pr=blog


Weitere Informationen zur AD-PowerShell:

Die AD-Powershell im Windows Server 2008 R2




Die AD-Commandlets (kurz Cmdlets) die zur Verfügung stehen

Die Cmdlets sind durch ihre Namen weitestgehend selbsterklärend. Die unten aufgeführten Cmdlets kann man sich mit dem Befehl get-command anzeigen lassen, wie z.B. get-command get-ad*, get-command new-ad* oder get-command remove-ad* usw. Alle AD-Cmdlets werden mit diesem Befehl angezeigt: Get-Command *-ad*

Eine ausführliche und detaillierte Hilfe zu den folgenden Cmdlets lässt sich wie folgt anzeigen:

- Get-Help <Cmdlet Name> -Detailed (z.B. Get-Help Search-ADAccount -Detailed)
-
Get-Help <Cmdlet Name> -Examples
-
Get-Help <Cmdlet Name> -Full


Die Hilfe zu den Filtermöglichkeiten lässt sich mit diesem Befehl aufrufen:
get-help about_ActiveDirectory_Filter



AD-Objekte abrufen (22 Cmdlets)

- Get-ADAccountAuthorizationGroup
- Get-ADAccountResultantPasswordReplicationPolicy
- Get-ADComputer
- Get-ADComputerServiceAccount
- Get-ADDefaultDomainPasswordPolicy
- Get-ADDomain
- Get-ADDomainController
- Get-ADDomainControllerPasswordReplicationPolicy
- Get-ADDomainControllerPasswordReplicationPolicyUsage
- Get-ADFineGrainedPasswordPolicy
- Get-ADFineGrainedPasswordPolicySubject
- Get-ADForest
- Get-ADGroup
- Get-ADGroupMember
- Get-ADObject
- Get-ADOptionalFeature
- Get-ADOrganizationalUnit
- Get-ADPrincipalGroupMembership
- Get-ADRootDSE
- Get-ADServiceAccount
- Get-ADUser
- Get-ADUserResultantPasswordPolicy

 

AD-Objekte erstellen (7 Cmdlets)

- New-ADComputer
- New-ADFineGrainedPasswordPolicy
- New-ADGroup
- New-ADObject
- New-ADOrganizationalUnit
- New-ADServiceAccount
- New-ADUser

 

AD-Objekte entfernen (12 Cmdlets)

- Remove-ADComputer
- Remove-ADComputerServiceAccount
- Remove-ADDomainControllerPasswordReplicationPolicy
- Remove-ADFineGrainedPasswordPolicy
- Remove-ADFineGrainedPasswordPolicySubject
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADObject
- Remove-ADOrganizationalUnit
- Remove-ADPrincipalGroupMembership
- Remove-ADServiceAccount
- Remove-ADUser

 

AD-Schreibvorgänge durchführen (15 Cmdlets)

- Set-ADAccountControl
- Set-ADAccountExpiration
- Set-ADAccountPassword
- Set-ADComputer
- Set-ADDefaultDomainPasswordPolicy
- Set-ADDomain
- Set-ADDomainMode
- Set-ADFineGrainedPasswordPolicy
- Set-ADForest
- Set-ADForestMode
- Set-ADGroup
- Set-ADObject
- Set-ADOrganizationalUnit
- Set-ADServiceAccount
- Set-ADUser

 

AD-Objekte hinzufügen (5 Cmdlets)

- Add-ADComputerServiceAccount
- Add-ADDomainControllerPasswordReplicationPolicy
- Add-ADFineGrainedPasswordPolicySubject
- Add-ADGroupMember
- Add-ADPrincipalGroupMembership


AD-Objekte und optionale AD-Funktionen deaktivieren (2 Cmdlets)

- Disable-ADAccount
- Disable-ADOptionalFeature

 

AD-Objekte und optionale AD-Funktionen aktivieren (2 Cmdlets)

- Enable-ADAccount
- Enable-ADOptionalFeature



AD-Objekte verschieben (3 Cmdlets)

- Move-ADDirectoryServer
- Move-ADDirectoryServerOperationMasterRole
- Move-ADObject

 

AD-Objekte umbenennen (1 Cmdlet)

- Rename-ADObject

 

AD-Dienstkontenkennwörter zurücksetzen (1 Cmdlet)

- Reset-ADServiceAccountPassword


 

AD-Objekte wiederherstellen (1 Cmdlet)

- Restore-ADObject

 

AD-Objekte suchen (1 Cmdlet)

- Search-ADAccount

 

AD-Dienstkonto deinstallieren (1 Cmdlet)

- Uninstall-ADServiceAccount

 

AD-Objekt entsperren (1 Cmdlet)

- Unlock-ADAccount

 

AD-Kontoablaufdatum zurücksetzen (1 Cmdlet)

- Clear-ADAccountExpiration

 

AD-Dienstkonto installieren (1 Cmdlet)

- Install-ADServiceAccount

 

 

AD-PowerShell „Benutzerobjekt“ Befehle

Mit dem Cmdlet Get-ADUser lassen sich Benutzerinformationen abfragen. Je nach Angabe der Suchkriterien werden bei der Abfrage ein oder mehrere Benutzerobjekte mit den gewünschten Attributen angezeigt. Mit dem Befehl Get-ADUser Yusuf werden standardmäßig die folgenden Werte angezeigt: DistinguishedName, Enabled, givenName, Name, ObjectClass, ObjectGUID, SamAccountName, ObjectSID, Surname, userPrincipalName

Bei allen PowerShell-Befehlen kann bei der Angabe von <Benutzer> zwischen den folgenden Angaben gewählt werden:

- sAMAccountName
- Distinguished Name (DN)
- ObjectSID
- ObjectGUID

Die Abfrage
Get-ADUser „CN=Yusuf,OU=IT,DC=blog,DC=dikmenoglu,DC=de“, Get-ADUser S-1-5-21-2225156702-1871195563-4034089934-1101 oder Get-ADUser 6e90b6c6-0fc6-4aab-af7f-73b74f937980 liefern alle das gleiche Ergebnis.


Hinweis: Um die Funktion der Befehle sicherzustellen, ist es empfehlenswert die Befehle händisch einzutippen anstatt sie zu kopieren!


# Soll sich die Abfrage auf eine bestimmte OU (samt Unter-OUs) beschränken, so kann das mit dem Parameter
–Searchbase und der Angabe des DN der OU durchgeführt werden.
Get-ADUser –LDAPFilter „(givenName=Yusuf)“ –SearchBase „OU=IT,DC=Domäne,DC=de“


# Zum Erhöhen der Suchleistung sollte man den Suchbereich auf ein einziges Objekt oder auf eine Objektteilmenge beschränken. Für diese Aufgabe stellt die DirectorySearcher-Klasse die SearchScope-Eigenschaft bereit. Der Suchbereich lässt sich auf eine der folgenden drei Einstellungen festlegen:

- Base: Hier wird das Objekt durchsucht, mit dem man verbunden ist. Wenn man sich z.B. mit einer OU verbunden hat, wird nur diese eine OU durchsucht und nicht noch zusätzlich die evtl. bestehenden Unter-OUs.

- OneLevel: Mit dieser Option werden alle Objekte die sich direkt, also eine Ebene tiefer, unter der Suchbasis befinden durchsucht.

- Subtree: Durchsucht alle Objekte, die in der Teilstruktur des verbundenen Objekts enthalten sind. Dabei werden alle Container im aktuellen Pfad und unterhalb der Suchbasis durchsucht.


Mit der Angabe des Parameters –SearchScope, lässt sich die Abfrage im vorherigen Beispiel ausschließlich auf die angegebene OU beschränken:
Get-ADUser –LDAPFilter „(givenName=Yusuf)“ –SearchBase „OU=IT,DC=Domäne,DC=de“ –SearchScope OneLevel

# Welche Benutzerkontoeigenschaften angezeigt werden, lässt sich mit dem Parameter –Properties beeinflussen. Wird beim Parameter –Properties als Wert ein Wildcard „*“ verwendet, so lassen sich alle Benutzerkontoeigenschaften anzeigen die im Benutzerobjekt enthalten sind:
Get-ADuser <Benutzer> -Properties *


# Möchte man sich bei einem bestimmten Benutzer neben den standardmäßig angezeigten Werten lediglich als weitere Benutzereigenschaft die Personalnummer, die Attribute
employeeID und employeeNumber anzeigen lassen, so lautet der Befehl
Get-ADUser <Benutzer> –Properties employeeID,employeeNumber


# Alle Benutzerkonten in der Domäne anzeigen
Get-ADUser –Filter *


# Alle AD-Objekte anzeigen
Get-ADObject –Filter { ObjectClass –Like „*“ }


# Alle Benutzerkonten einer bestimmten OU im Spaltenformat anzeigen
Get-ADUser –Filter * -Searchbase „OU=<OU>,DC=Domäne,DC=de“ | FT


# Alle Benutzer in der Domäne mit dem Vornamen „Yusuf“ anzeigen
Get-ADUser –LDAPFilter „(givenName=Yusuf)“


# Alle Benutzerkonten in der Domäne mit der Personalnummer im Spaltenformat anzeigen
Get-ADUser -Filter * -Properties employeeID,employeeNumber | FT


# Mit einer Ambiguous Name Resolution (kurz ANR) die Benutzer anzeigen, die im Vornamen, Nachnamen oder sAMAccountName den Eintrag „Yus“ enthalten
Get-ADUser –Filter { ANR –eq „Yus“ }


# Alle Benutzerkonten aus „Mainz“ anzeigen
Get-ADUser –Filter {City –Like „Mainz“}


# Alle Benutzerkonten mit dem Vornamen „Yusuf“ anzeigen
Get-ADUser –Filter {givenName –Like „Yusuf“} | FT


# Alle Benutzerkonten mit dem Nachnamen „Dikmenoglu“ anzeigen
Get-ADUser –Filter {Surname –Like „Dikmenoglu“}


# Alle Benutzerkonten aus der Abteilung „EDV“ anzeigen
Get-ADUser –Filter {Department –Like „EDV“}


# Alle Benutzerkonten anzeigen die in ihrem „Common Name“ irgendwo den Eintrag „Yus“ haben
Get-ADUser –Filter { CN –Like „*Yus*“ }


# Alle Benutzer die einen Wert im Attribut
mail eingetragen haben anzeigen
Get-ADUser –Filter { mail –Like „*“ }

oder

Get-ADObject –Filter { mail –Like „*“ –and ObjectClass –eq “user” }


# Alle Benutzer die einen Wert im Attribut
mail eingetragen haben und mit Nachname „Dikmenoglu“ lauten anzeigen
Get-ADUser –Filter { mail –Like „*“ –and Surname –eq „dikmenoglu“ }

oder

Get-ADUser –Filter { mail –Like „*“ –and sn –eq „dikmenoglu“ }


# Alle Benutzerkonten die keinen Wert im Attribut
mail eingetragen haben anzeigen
Get-ADUser –Filter { mail –notlike „*“ }

Oder
Get-ADUser –LDAPFilter „(!(email=*))“


# Alle Benutzerkonten die im Common Name mit „Yusuf“ oder „Kaan“ beginnen anzeigen
Get-ADUser -Filter { CN -like "Yusuf*" -or CN -eq "Kaan"

oder

Get-ADObject -Filter { objectClass -eq "user" -and (CN -like "Yusuf*" -or CN -eq "Kaan") }


# Die Gruppenmitgliedschaften eines Benutzers anzeigen
Get-ADPrincipalGroupMembership Yusuf


# Alle Benutzerkonten anzeigen, die als Vorgesetzten „Yusuf“ eingetragen haben
Get-ADUser -Filter { Manager -eq "Yusuf" }


# Die direkten Gruppenmitgliedschaften samt der „primären Gruppe“ eines Benutzers anzeigen
Get-ADUser Yusuf –Properties primarygroupID,memberof


# Den Benutzer aus einer Gruppe entfernen
Remove-ADPrincipalGroupMembership Yusuf –MemberOf „Gruppe“


# Den Benutzer bis auf die primäre Gruppe, aus allen Gruppen entfernen
Get-ADPrincipalGroupMembership Yusuf | % {Remove-ADPrincipalGroupMembership Yusuf -MemberOf $_}


# Den Benutzer Kaan zu den gleichen Gruppen hinzufügen, in denen Yusuf Mitglied ist
Get-ADPrincipalGroupMembership Yusuf | % {Add-ADPrincipalGroupMembership Kaan -MemberOf $_}


# Alle Benutzerkonten anzeigen, die sich in den letzten 10 Tagen angemeldet haben
$date = (get-date) – (new-timespan –days 10)
Get-ADUser –Filter { lastlogon –gt $date }

Ein anderer Befehl mit dem die Benutzer angezeigt werden, die sich in den letzten 5 Tagen an der Domäne angemeldet haben ist dieser:
Get-ADUser –LDAPFilter „(&(LastLogon>=128812906535515110)(objectCategory=user))“


# Alle Benutzer anzeigen die sich in den letzten 50 Tagen nicht angemeldet haben
$Vorvielentagen = (Get-Date).AddDays(-50)
Get-ADUser -Filter { lastLogonTimeStamp -notlike "*" -or  lastLogonTimeStamp -le $Vorvielentagen }


# Alle Benutzerkonten die mehr als vier Mal ihr Kennwort falsch eingegeben haben anzeigen
Get-ADUser –LDAPFilter „(badPwdCount>=4)“

Oder
Get-ADUser –Filter {badPwdCount –ge 4}


# Einen Benutzer deaktivieren
Disable-ADAccount Yusuf


# Einen Benutzer aktivieren
Enable-ADAccount Yusuf


# Einen deaktivierten Benutzer im Container USERS erstellen

New-ADUser Yusuf


# Einen aktivierten Benutzer in der angegebenen OU mit mehreren Werten erstellen
New-ADUser –sAMAccountName „Yusuf“ –UserPrincipalName Yusuf@ad.dikmenoglu.de –givenname “Yusuf” –Surname “Dikmenoglu” –displayName “Yusuf Dikmenoglu” –Name “Yusuf Dikmenoglu” –scriptpath “login.bat” –Enabled $true –Path “OU=<OU>,DC=Domäne,DC=DE” –AccountPassword (ConvertTo-Securestring “Pa$$w0rd!” –asplaintext –Force)


# Ein Benutzerkonto mit allen Eigenschaften kopieren und im Container USERS erstellen
PS C:\> $Groups = Get-ADPrincipalGroupMembership "Yusuf"
PS C:\>
Get-ADUser "Yusuf" -Properties * | New-ADUser -Name "Benutzer2" -Displayname "Benutzer2" -samaccountname "Benutzer2" -accountpassword (ConvertTo-SecureString "Pa$$w0rd!" -AsPlainText –Force)
PS C:\>Add-ADPrincipalGroupMembership "Benutzer2" -memberOf $Groups


# Ein Benutzerkonto nur mit bestimmten Attributen kopieren und im Container USERS erstellen
PS C:\> $Groups = Get-ADPrincipalGroupMembership "Yusuf"
PS C:\>
Get-ADUser "Yusuf" -Properties profilPath, scriptPath, accountExpires | New-ADUser -Name "Benutzer2" -Displayname "Benutzer2" -samaccountname "Benutzer2" -accountpassword (ConvertTo-SecureString "Pa$$w0rd!" -AsPlainText –Force)
PS C:\>Add-ADPrincipalGroupMembership "Benutzer2" -memberOf $Groups


# 50 aktivierte Benutzerkonten in einer bestimmten OU erstellen
(1..50) | Foreach-Object {New-ADUser –sAMAccountname "Benutzer$_" -Name "Benutzer$_" -AccountPassword (ConvertTo-SecureString -AsPlainText "Pa$$w0rd!" -Force) –Enabled $true –Path „OU=<OU>,DC=Domäne,DC=de“}


# Allen Benutzern einer bestimmten OU einen Wert im Feld „Beschreibung“ setzen
Get-ADUser –Filter * -Searchbase „OU=<OU>,DC=Domäne,DC=DE“ | Set-ADUser –description „Wert“



# Die Option „Konto läuft ab am:“ auf den 31. Oktober 2009 setzen
Set-ADUser Yusuf –AccountExpirationDate 01/11/2009

 

 

#  Die Option „Konto läuft ab“ auf „Nie“ setzen
Clear-ADAccountExpiration Yusuf

 


# Den Profilpfad, das Anmeldeskript und ein Homelaufwerk für einen bestimmten Benutzer eintragen
Set-ADUser „Yusuf“ –ProfilePath \\Server01\Profiles\%username% -Scriptpath „Login.bat“ –Homedrive „X“ –HomeDirectory „\\Server01\home\Yusuf“



# Einen Benutzer in eine andere OU verschieben
Get-ADUser Yusuf | Move-ADObject –TargetPath „OU=NeueOU,DC=Domäne,DC=de“

 


# Den relative distinguished name (RDN) eines Benutzers ändern
Rename-ADObject „CN=Yusuf Dikmenoglu,OU=IT,DC=Domäne,DC=de“ –NewName „Yusuf Cool“



# Einen Benutzer löschen
Remove-ADUser Yusuf


# Einen Benutzer ohne Sicherheitsabfrage löschen
Remove-ADUser Yusuf -Confirm:$False



# Mehrere Benutzer anhand eines gemeinsamen Kriteriums löschen
Get-ADUser –Filter {Name –Like „*Dikmenoglu*“} | Remove-ADUser


# Mit dem folgenden Befehl wird die Voreinstellung für neue Benutzer auf einem deutschen DC (auf einem englischen System lautet der LDAP-Pfad ...,CN=409,...) auf „Nachname, Vorname“ geändert (die Ansicht im Attribut
name). Bestehende Objekte sind davon nicht betroffen.
Set-ADObject "CN=user-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=Domäne,DC=de" -Partition „CN=Configuration,DC=Domäne,DC=de“ -Replace @{CreateDialog="%<sn>, %<givenName>"}


Die Voreinstellung für Kontakte wird wie folgt geändert:
Set-ADObject "CN=contact-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=Domäne,DC=de" -Partition „CN=Configuration,DC=Domäne,DC=de“ -Replace @{CreateDialog="%<sn>, %<givenName>"}


# Benutzer muss Kennwort bei der nächsten Anmeldung ändern
Set-ADUser –identity Yusuf –ChangePasswordAtLogon $true


# Die Kontooption „Benutzer kann Kennwort nicht ändern“ setzen
Set-ADAccountControl Yusuf -CannotChangePassword $true

Achtung: Ist die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ aktiviert, kann über dsa.msc nicht zusätzlich die Kontooption „Benutzer kann Kennwort nicht ändern“ aktiviert werden. Was auch verständlich ist, denn diese beiden Optionen widersprechen sich. Ist jedoch die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ aktiviert und die Kontooption „Benutzer kann Kennwort nicht ändern“ wird über die AD-PowerShell aktiviert, sind anschließend beide Optionen aktiviert!


# Einem Benutzer ein neues Kennwort vergeben
Set-ADAccountPassword –Identity Yusuf -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "Pa$$w0rd!" –Force)


# Die Kontooption „Kennwort läuft nie ab“ bei einem Benutzer- oder Dienstkonto aktivieren
Set-ADAccountControl Yusuf -PasswordNeverExpires $true


# Bei allen Benutzern die Kontooption "Kennwort läuft nie ab" deaktivieren und dafür die Option "Benutzer muss Kennwort bei der nächsten Anmeldung ändern" aktivieren
Get-ADUser -filter * | Set-ADUser -PasswordNeverExpires $false -ChangePasswordAtLogon $true

# Alle Benutzerkonten innerhalb einer bestimmten OU anzeigen, die die Kontooption „Kennwort läuft nie ab“ aktiviert haben
Search-ADAccount -PasswordNeverExpires -SearchBase “OU=EDV,DC=blog,DC=dikmenoglu,DC=de”


Hinweis: Bei Nutzung des Cmdlets Search-ADAccount kann durch die Angabe des Parameters –UsersOnly oder –ComputersOnly die Abfrage entweder nur auf Benutzer- oder Computerkonten beschränkt werden.


# Liefert alle Konten die ein abgelaufenes Kennwort besitzen
Search-ADAccount -PasswordExpired | FT Name,ObjectClass


# Alle Benutzer-, Computer- und Dienstkonten anzeigen, die deaktiviert sind
Search-ADAccount -AccountDisabled | FT Name


# Nur deaktivierte Benutzerkonten einer Domäne anzeigen
Search-ADAccount –AccountDisabled –Usersonly | FT Name


# Lediglich deaktivierte Computerkonten anzeigen. Wenn Clients aus der Domäne entfernt und in eine Arbeitsgruppe hinzugefügt werden, wird das Computerkonto im AD deaktiviert und nicht gelöscht.
Search-ADAccount -AccountDisabled -ComputersOnly | FT Name


# Alle deaktivierten Benutzer einer bestimmten Organisationseinheit (OU) anzeigen
Search-ADAccount -AccountDisabled –Searchbase „OU=<OU>,DC=Domäne,DC=DE | where {$_.ObjectClass -eq 'user'} | FT Name


# Abgelaufene Benutzerkonten anzeigen
Search-ADAccount –AccountExpired | FT Name


# Alle Benutzerkonten anzeigen, die in den nächsten 60 Tagen ablaufen
Search-ADAccount –AccountExpiring -TimeSpan 60.00:00:00 | FT Name


# Alle Konten anzeigen (auch Computer) die sich in den letzten 60 Tagen nicht angemeldet haben. Bei dieser Abfrage muss sich der Domänenfunktionsmodus mindestens auf der Ebene „Windows Server 2003“ befinden
Search-ADAccount -AccountInactive -TimeSpan 60.00:00:00 | FT Name


# Alle gesperrten Benutzer anzeigen
Search-ADAccount -LockedOut –Usersonly | FT Name


# Einen bestimmten Benutzer entsperren
Unlock-ADAccount –identity <DN des Benutzers>


# Alle Benutzerkonten anzeigen die am 30.08.2009 ablaufen
Search-ADAccount -AccountExpiring -Usersonly -DateTime "8/30/2009" | FT Name

 


AD-PowerShell „Gruppenobjekt“ Befehle

Bei der Angabe des <Gruppennamen> können folgende Werte verwendet werden:

- sAMAccountName
- Distinguished Name (DN)
- ObjectSID
- ObjectGUID

Mit dem Cmdlet Get-ADGroup werden standardmäßig folgende Werte angezeigt: DistinguishedName, GroupCategory, GroupScope, Name, ObjectClass, ObjectGUID, sAMAccountName, ObjectSID. Sollen neben diesen Werten noch weitere angezeigt werden, müssen diese mit dem Parameter –Properties angegeben werden. Z.B.: Get-ADGroup <Gruppe> -Properties groupType,member,memberOf,whenCreated,whenchanged


# Alle Eigenschaften einer Gruppe werden mit der Angabe von dem Stern (Wildcard) angezeigt
Get-ADGroup <Gruppe> -Properties *


# Eine globale Sicherheitsgruppe im Container Users erstellen
New-ADGroup -Name "Neue Gruppe" -sAMAccountName NeueGruppe -GroupCategory Security -GroupScope Global -DisplayName "Neue Gruppe" -Path "CN=Users,DC=Domäne,DC=de"


# Eine domänenlokale Sicherheitsgruppe in einer OU erstellen
New-ADGroup -Name "Gruppe" -sAMAccountName Gruppe -GroupCategory Security -GroupScope DomainLocal -DisplayName "Gruppe" -Path "OU=<OU>,DC=Domäne,DC=de"


# Eine universelle Sicherheitsgruppe in einer OU erstellen
New-ADGroup -Name "Gruppe" -sAMAccountName Gruppe -GroupCategory Security -GroupScope Universal -DisplayName "Gruppe" -Path "OU=<OU>,DC=Domäne,DC=de"


# Eine globale Verteilergruppe in der angegebenen OU erstellen

New-ADGroup -Name <Gruppe> -sAMAccountName <Gruppe> -GroupScope Global -GroupCategory Distribution –DisplayName <Gruppe> –Path “OU=<OU>,DC=Domäne,DC=de”


# Alle Gruppen mit dem Gruppentyp “Sicherheit” anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483648))“

Oder
Get-ADGroup –Filter „groupType –band 0x80000000“


# Alle Gruppen mit dem Gruppentyp “Verteiler” anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(!groupType:1.2.840.113556.1.4.803:=2147483648))“


# Nur universelle Sicherheitsgruppen anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483640))“


# Nur domänenlokale Sicherheitsgruppen anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483644))“


# Nur globale Sicherheitsgruppen anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483646))“


# Globale Sicherheits- und Verteilergruppen werden mit diesem Befehl angezeigt
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2))“


# Domänenlokale Sicherheits- und Verteilergruppen zeigt dieser Befehl an
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=4))“


# Universelle Sicherheits- und Verteilergruppen anzeigen
Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=8))“


# Alle Benutzer anzeigen die als primäre Gruppe „Domänen-Benutzer“ eingetragen haben
Get-ADUser –LDAPFilter „(&(objectCategory=person)(objectClass=user)(primaryGroupID=513))“


# Alle Benutzer anzeigen die als primäre Gruppe NICHT „Domänen-Benutzer“ eingetragen haben
Get-ADUser –LDAPFilter „(&(objectCategory=person)(objectClass=user)(!primaryGroupID=513))“


# Alle direkten und verschachtelten Gruppenmitgliedschaften eines Benutzers anzeigen
Get-ADAccountAuthorizationGroup Yusuf


# Alle direkten Mitglieder einer Gruppe anzeigen
Get-ADGroupMember <Gruppe> | FT Name


# Alle direkten und verschachtelten Mitglieder einer Gruppe anzeigen
Get-ADGroupMember <Gruppe> -Recursive | FT Name -A


# Alle direkten, verschachtelten und aktive (keine deaktivierten) Mitglieder einer Gruppe anzeigen
Get-ADGroupMember <Gruppe> -Recursive | Get-ADUser | Where-Object { $_.Enabled -eq 'True' } | FT Name


# Alle für das System wichtigen Gruppen anzeigen
Get-ADGroup -Filter { isCriticalSystemObject -eq $true }


# Eine Gruppe verschieben
Move-ADObject "CN=Gruppe,OU=Techniker,DC=Domäne,DC=de" -TargetPath "OU=NeueOU,DC=Domäne,DC=de"


# Eine Beschreibung für eine Gruppe setzen
Set-ADGroup <Gruppe> -Description "Diese Gruppe darf Benutzer im AD erstellen"


# Eine Verteilergruppe in eine Sicherheitsgruppe ändern
Set-ADGroup <Gruppe> -groupCategory Security


# Den Gruppenbereich einer Gruppe auf Global ändern
Set-ADGroup <Gruppe> –groupScope Global


# Den Gruppenbereich und den Gruppentyp einer Gruppe ändern
Set-ADGroup <Gruppe> –groupScope Universal -groupCategory Security

Anstatt Universal kann Global oder DomainLocal angegeben werden.


# Mitglieder zu einer Gruppe hinzufügen
Add-ADGroupmember <Gruppe> -Member Yusuf,Kaan


# Eine Gruppe löschen
Remove-ADGroup <Gruppe>


# Einen Benutzer aus einer Gruppe entfernen
Remove-ADGroupMember <Gruppe> -Member Yusuf


# Alle direkten Gruppenmitgliedschaften eines Sicherheitsprinzipals (Benutzer, Gruppe, Computer) anzeigen
Get-ADPrincipalGroupMembership <Objekt>



 

AD-PowerShell „Organisationseinheit“ Befehle

# Mit dem Cmdlet Get-ADOrganizationalUnit werden folgende Werte angezeigt: City, Country, DistinguishedName, LinkedGroupPolicyObjects, ManagedBy, Name, ObjectClass, ObjectGUID, PostalCode, State, StreetAddress. Alle Eigenschaften einer OU lassen sich mit dem Parameter –Properties * anzeigen.


# Alle OUs in einer Domäne anzeigen
Get-ADOrganizationalUnit -Filter {Name -like „*“} | FT Name, DistinguishedName -A


# Den Inhalt einer bestimmten OU anzeigen
Get-ADObject -Filter {Name -Like "*"} -Searchbase „OU=<OU>,DC=Domäne,DC=de“


# Eine OU erstellen. Dabei ist die Option Objekt vor zufälligem Löschen schützen automatisch aktiviert.
New-ADOrganizationalUnit -Name Techniker -Path "OU=IT,DC=Domäne,DC=de"


# Die Option Objekt vor zufälligem Löschen schützen von einer OU entfernen
Set-ADOrganizationalUnit „<DN der OU>“ –ProtectedFromAccidentalDeletion $false


# Die Option Objekt vor zufälligem Löschen schützen auf einer OU aktivieren
Set-ADOrganizationalUnit „<DN der OU>“ –ProtectedFromAccidentalDeletion $true


# Die Option Objekt vor zufälligem Löschen schützen auf allen OUs einer Domäne aktivieren
Get-ADOrganizationalUnit -Filter 'Name -like "*"' | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $true


# Eine OU verschieben
Move-ADObject "aktuelle DN der OU" -TargetPath "Ziel-DN"

Ist die Option Objekt vor zufälligem Löschen schützen aktiviert, erhält man eine Fehlermeldung.


# Eine OU samt dem kompletten Inhalt löschen
Remove-ADOrganizationalUnit Test -Recursive

Ist die Option Objekt vor zufälligem Löschen schützen aktiviert, erhält man eine Fehlermeldung.


# Einen Benutzer aus einer OU löschen
Remove-ADObject „CN=Yusuf Dikmenoglu,OU=IT,DC=Domäne,DC=de“


# Alle Objekte innerhalb einer OU in eine andere OU verschieben
Get-ADObject -Filter {Name -Like "*"} -Searchbase „OU=AlteOU,DC=Domäne,DC=de“ -SearchScope OneLevel | Move-ADObject -TargetPath "OU=NeueOU,DC=Domäne,DC=de"


# Eine OU umbenennen
Rename-ADObject "OU=AlterName,DC=Domäne,DC=de" -NewName <Neuername>


# Eine Beschreibung für eine OU vergeben
Set-ADOrganizationalUnit <DN zur OU> -description <Beschreibung>



 

AD-PowerShell „Computerobjekt“ Befehle

# Mit dem Cmdlet Get-ADComputer werden diese Werte angezeigt: DistinguishedName, DNSHostName, Enabled, Name, ObjectClass, ObjectGUID, sAMAccountName, ObjectSID, userPrincipalName.


# Alle Computerkonten innerhalb einer Domäne auflisten
Get-ADComputer –Filter {Name –Like “*”}


# Ein Computerobjekt in eine andere OU verschieben
Get-ADComputer <Computername> | Move-ADObject -TargetPath „DN von Ziel-OU“


# Alle Computer anzeigen, die sich seit 180 Tagen nicht am AD angemeldet haben:
Search-ADaccount -AccountInactive -Timespan 180 -ComputersOnly


# Mit dem folgenden Befehl wird die maximale Anzahl an Clients die ein Domänen-Benutzer zur Domäne hinzufügen kann erhöht
Set-ADDomain blog.dikmenoglu.de -Replace @{"ms-ds-MachineAccountQuota"="333"}

Siehe auch:

Clients in die Domäne hinzufügen


 

Weitere Informationen:
Active Directory Administration with Windows PowerShell
Die Active Directory-Attribute hinter den Feldnamen

Sunday, August 09, 2009 8:14:18 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Powershell | Erweiterte Abfragen  | 
 Saturday, August 01, 2009

Wenn im Active Directory (AD) Objekte gelöscht werden, verschwinden diese nicht sofort aus der AD-Datenbank (NTDS.dit). Das AD markiert das Objekt als gelöscht, indem das Attribut Is-Deleted des Objekts auf den Wert TRUE (Wahr) gesetzt wird. Dabei werden von dem Objekt die meisten Attribute für immer entfernt. Anschließend wandert das Objekt in den Container „Deleted Objects“ (der in fast allen Verzeichnispartitionen existiert) und wird ab diesem Zeitpunkt als Tombstone (zu deutsch: Grabstein) bezeichnet. Im Container Deleted Objects erhält das Tombstone einen speziellen Distinguished Name (DN), der so aussieht: „CN=<alter RDN>\0ADEL:<Object-GUID>“. Der DN des gelöschten Benutzerobjekts „Yusuf Dikmenoglu“ sieht z.B. so aus: CN=Yusuf Dikmenoglu\0ADEL:4b506a93-d721-4cbf-87dc-565939cf07af,CN=Deleted Objects,DC=blog,DC=dikmenoglu,DC=de

Das gelöschte Objekt wandert deshalb zuerst in den Container Deleted Objects, damit jeder Domänencontroller (DC) z.B. in einer weltweit verteilten Umgebung von der Löschung des Objekts in Kenntnis gesetzt wird, ehe das Objekt endgültig aus dem AD gelöscht wird. Gerade in größeren AD-Umgebungen mit einem komplexen Replikationszeitplan, ist diese Vorgehensweise für das Löschen von Objekten zwingend. Denn würde das Objekt nach dem löschen direkt aus der AD-Datenbank entfernt werden, würden die anderen DCs von dieser Löschung nichts mitbekommen und es entständen Lingering Objects (zu Deutsch: herumlungernde Objekte).

Lingering Objects (veraltete Objekte)


Das gelöschte Objekt verbleibt im Container Deleted Objects so lange, bis die Tombstone Lifetime (TSL) abgelaufen ist. Die TSL beträgt standardmäßig bei einer ursprünglich erstellten Windows 2000 sowie Windows Server 2003 Gesamtstruktur 60 Tage. Beim erstellen einer Gesamtstruktur ab Windows Server 2003 SP1 oder ab Windows Server 2003 R2 SP2 beträgt die TSL 180 Tage. Erst nach Ablauf der TSL Zeit, wird das Objekt nun endgültig vom Garbage Collection Prozess der standardmäßig alle 12 Stunden auf jedem DC läuft, aus dem AD entfernt.

Die Tombstone Lifetime


Dabei können Objekte aus der Konfigurations-, Domänen- und Anwendungsverzeichnispartition (wie z.B. ForestDNSZones und DomainDNSZones) gelöscht werden, aber nicht aus der Schemapartition! Schemaobjekte (Attribute und Klassen) können nicht entfernt werden, höchstens deaktiviert.


Ab Windows Server 2003 kann ein gelöschtes Objekt, sprich das Tombstone mit wenigen Attributen reanimiert werden. Wurde ein Objekt gelöscht, wird der DN vom Ursprungsort des Objekts im Attribut
lastKnownParent eingetragen. Ein Objekt das autoritativ wiederhergestellt wurde, enthält ebenfalls im Attribut lastKnownParent den Ursprungsort. Oder wenn ein Objekt in den Container LostAndFound verschoben wird (bei einem Konflikt), der in den Verzeichnispartitionen Konfigurationspartition, Domänenpartition und Anwendungsverzeichnispartitionen wie die beiden DNS-Partitionen ForestDNSZones und DomainDNSZones existiert, wird im Attribut lastKnownParent ebenso der Ursprungsort des Konfliktobjekts eingetragen. Beim verschieben oder kopieren eines Objekts wird kein Wert im Attribut lastKnownParent eingetragen.

Wenn nun in der Domäne blog.dikmenoglu.de der Benutzer „Yusuf“ der sich in der OU „IT“ befindet gelöscht wird, enthält das Attribut lastKnownParent des gelöschten Benutzerobjekts im Container Deleted Objects der Domänenpartition den folgenden Wert:
OU=IT,DC=blog,DC=dikmenoglu,DC=de

Dadurch lassen sich wiederhergestellte Tombstones, autoritativ wiederhergestellte Objekte oder Konfliktobjekte die sich im Container LostAndFound befinden ausfindig machen, in dem man eine Abfrage nach dem Attribut lastKnownParent durchführt und dabei diesen LDAP-Filter verwendet:
(&(objectclass=*)(lastKnownParent=*))

Möchte man sich lediglich Benutzerkonten anzeigen lassen, so kann man z.B. bei einer benutzerdefinierten gespeicherten Abfrage diesen Filter verwenden:
(objectcategory=person)(lastKnownParent=*)

 

Den Container Deleted Object mit LDP anzeigen

Der versteckte Container Deleted Objects wird weder in der MMC Active Directory-Benutzer und -Computer, noch in ADSIEdit.msc angezeigt. Stattdessen kann man sich mit LDP.exe oder z.B. dem AD Explorer den Container Deleted Objects anzeigen lassen. Wobei der Container in den Anwendungsverzeichnispartitionen lediglich mit LDP angezeigt werden kann und nicht mit dem AD Explorer. Natürlich können aber auch andere LDAP-Browser verwendet werden.

  • Das LDP.exe befindet sich unter Windows 2000 und Windows Server 2003 in den Windows Support Tools und ist bereits ab Windows Server 2008 on Bord.

  • Unter Start - Ausführen startet man als Erstes das LDP

  • Danach muss man sich mit einem DC verbinden. Dazu gilt es unter Windows Server 2003 im Menüpunkt Connection die Option Connect… aufzurufen und im darauffolgenden Fenster einen DC einzutragen. Unter Windows Server 2008 heißt der Menüpunkt Remotedesktopverbindung und die Option Verbinden…

  • Nun gilt es unter Connection/Remotedesktopverbindung - Bind…/Gebunden… ein entsprechendes Benutzerkonto (z.B. den Domänen-Admin) anzugeben, um sich mit diesem Benutzer an das AD zu „binden“.

  • Anschließend muss der Distinguished Name (DN) des entsprechenden Deleted Objects Container unter View/Ansicht - Tree/Struktur angegeben werden.

    Der DN des Container Deleted Objects in der Konfigurationspartition lautet:
    CN=Deleted Objects,CN=Configuration,DC=Root-Domäne

    In der Domänenpartition lautet der DN von Deleted Objects wie folgt:
    CN=Deleted Objects,DC=blog,DC=dikmenoglu,DC=de

    Der DN von Deleted Objects in den beiden DNS-Anwendungsverzeichnispartitionen lautet folgendermaßen:
    CN=Deleted Objects,DC=ForestDNSZones,DC=Root-Domäne
    CN=Deleted Objects,DC=DomainDNSZones,DC=Domäne,DC=de

  • Nach dem man sich mit dem Container Deleted Objects verbunden hat, sieht man den Eintrag zwar auf der linken Seite im LDP-Fenster, jedoch erscheinen unter dem Eintrag keine weiteren Einträge, sprich die gelöschten Objekte bzw. Tombstones kommen nicht zum Vorschein. Diese erscheinen erst, wenn unter dem Menüpunkt Options/Optionen der Menüeintrag Controls/Steuerelemente ausgewählt und das LDAP-Control Return deleted objects (1.2.840.113556.1.4.417) als aktives Steuerelement eingecheckt wurde.




  • Um nun ein Tombstone mit LDP zu reanimieren, müssen zwei Attribute im Tombstone verändert werden. Dazu klickt man mit rechts auf das zu wiederherstellende Objekt und wählt die Option Modify/Ändern. Danach muss zum einen der Wert im Attribut isDeleted gelöscht werden (den Wert aus FALSE zu setzen reicht nicht aus) und zum anderen, muss der DN des Objekts geändert werden. Dabei muss das Tombstone auch nicht zwingend an seinem Ursprungsort, der im Attribut lastKnownParent eingetragen ist, wiederhergestellt werden. Mit einem Klick auf Run/Ausführen wird das Tombstone dann wiederhergestellt.




  • In größeren AD-Umgebungen kann es im Container Deleted Objects das sich in der Domänenpartition befindet, durch die vielen gelöschten Objekte sehr unübersichtlich werden. Um sich lediglich die gelöschten Objekte eines bestimmten Zeitraums auf der rechten Seite im LDP anzeigen zu lassen, muss nach einem bestimmten Attribut in den gelöschten Objekten (den Tombstones) gesucht werden. Das Attribut in dem das Löschdatum enthalten ist lautet whenChanged.

    Möchte man sich z.B. die Objekte die in den letzten 10 Tagen gelöscht wurden anzeigen, so klickt man auf der linken Seite im LDP mit rechts auf den Eintrag CN=Deleted Objects,DC=Domäne,DC=de und wählt die Option Search/Suchen. Als Filter könnte dieser eingesetzt werden: (&(objectclass=user)(whenchanged>=20090724023000.0Z)). Im Feld Attribute können die gewünschten Attribute des Tombstones angegeben werden, die ebenfalls angezeigt werden sollen. Oder es wird ein Wildcard (das Sternchen *) angegeben, um alle Attribute die im Tombstone enthalten sind anzuzeigen.

    Dabei muss der Wert, sprich das Datum und die Uhrzeit im Attribut whenChanged in folgender Notation angegeben werden:
    2009(Jahr) 07(Monat) 24(Tag) 02(Stunden) 30(Minuten) 00(Sekunden).0Z




    Man beachte bei der Zeitangabe, dass das Attribut whenChanged nicht zwischen den DCs repliziert wird.
    Das bedeutet, dass der Wert im Attribut
    whenChanged sich von DC zu DC unterscheidet.

  • Schaut man sich die LDAP-Controls im LDP unter Windows Server 2008 R2 genauer an, entdeckt man zwei neue Einträge. Die beiden neuen Einträge sind:







    Mit dem LDAP-Control Return deactivated links (1.2.840.113556.1.4.2065) werden die verknüpften Attribute bei aktiviertem AD-Papierkorb eines Objekts angezeigt (z.B. das memberOf Attribut eines Benutzerobjekts). Denn wenn der AD-Papierkorb im Windows Server 2008 R2 aktiviert wurde, werden die verknüpften Attribute (Forward- und Backlink) beim Löschen eines Objekts nicht entfernt. Somit ist auch das Geheimnis des AD-Papierkorbs entlüftet, wie es mit den verknüpften Attributen umgeht.

     

     

Weitere Informationen:
Last-Known-Parent Attribute (Windows)
When-Changed Attribute (Windows)
Der Active Directory-Papierkorb im Windows Server 2008 R2
Verknüpfte Attribute
Viewing deleted objects in Active Directory
How to let non-administrators view the Active Directory deleted objects container in Windows Server 2003 and in Windows 2000 Server
Searching for Deleted Objects

Saturday, August 01, 2009 10:05:05 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Wiederherstellung  | 
 Friday, July 17, 2009

Soll der erste Read-Only Domänencontroller (kurz RODC) zu einer Windows Server 2003 Gesamtstruktur hinzugefügt werden, müssen bestimmte Voraussetzungen erfüllt sein. Eine davon ist, dass das ADPREP mit dem Parameter /RODCPREP mit „Organisations-Admin“ Rechten auf irgendeinem DC auszuführen gilt. In einer Gesamtstruktur mit mehreren Domänen kontaktiert das ADPREP jeden Infrastrukturmaster um die Berechtigungen der Anwendungsverzeichnispartitionen DomainDNSZones und ForestDNSZones zu aktualisieren. Mit Ausführen von ADPREP /RODCPREP werden die Security Descriptor der Anwendungsverzeichnispartitionen "DomainDNSZones" sowie "ForestDNSZones" angepasst. Nach Ausführen des Befehls wird der Gruppe NT-AUTORITÄT\DOMÄNENCONTROLLER DER ORGANISATION auf den beiden DNS-Anwendungsverzeichnispartitionen die entsprechenden Zugriffsberechtigungen auf die Replikation erteilt. Ist die Gesamtstruktur mit Windows Server 2008 erstellt worden, ist das Ausführen von ADPREP nicht notwendig.

Beim aktualisieren des security descriptor der einzelnen DNS-Anwendungsverzeichnispartitionen mit ADPREP /RODCPREP kann es jedoch zu dem Problem kommen, dass der Infrastrukturmaster einer DNS-Anwendungsverzeichnispartition nicht erreichbar ist.

Die Fehlermeldungen in der Kommandozeile lauten:

Adprep konnte kein Replikat für Partition DC=ForestDnsZones,DC=Root-Domäne erreichen.
ADPREP hat einen LDAP-Fehler festgestellt.
Fehlercode: 0x0. Erweiterter Server-Fehlercode: 0x0, Server-Fehlermeldung:(null).

und

Adprep konnte kein Replikat für Partition DC=DomainDnsZones,DC=Domäne,DC=de erreichen.
ADPREP hat einen LDAP-Fehler festgestellt.
Fehlercode: 0x0. Erweiterter Server-Fehlercode: 0x0, Server-Fehlermeldung:(null).


Der Grund dafür ist, dass ab Windows Server 2003 eine Besonderheit was die Rolle des Infrastrukturmasters anbetrifft existiert. Denn mit Windows Server 2003 wurden erstmals die Anwendungsverzeichnispartitionen eingeführt, wie z.B. im DNS die ForestDNSZones- und DomainDNSZones-Partitionen. Ab Windows Server 2003 existiert nämlich zusätzlich je ein Infrastrukturmaster pro Anwendungsverzeichnispartition. Als Infrastrukturmaster einer Anwendungsverzeichnispartition kann irgendein DC aus der jeweiligen Domäne ausgewählt werden und dieser muss nicht der Träger der Infrastrukturmasterrolle für die Domänenpartition sein.

Es existiert also ein Infrastrukturmaster für die Gesamtstrukturweite Anwendungsverzeichnispartition „ForestDNSZones“ und je ein Infrastrukturmaster pro „DomainDNSZones“. Das bedeutet für eine Gesamtstruktur mit zehn Domänen in der lediglich die Standard-Anwendungsverzeichnispartition im DNS genutzt werden und die DNS-Informationen pro Domäne in der DomainDNSZones gespeichert wird, folgende Aufteilung der FSMO-Rollen:

  1. Ein Schemamaster 
  2. Ein Domänennamenmaster
  3. Zehn RID-Master (Relative ID)
  4. Zehn PDC-Emulatoren
  5. Zehn Infrastrukturmaster für die Domänen bzw. Domänenpartitionen
  6. Ein Infrastrukturmaster für die Anwendungsverzeichnispartition "ForestDNSZones"
  7. Zehn Infrastrukturmaster für die Anwendungsverzeichnispartition "DomainDNSZones" 

Es existieren also insgesamt 21 Infrastrukturmaster in der Gesamtstruktur.

 

In allen Unternehmen die seit mehreren Jahren eine AD-Umgebung betreiben, müssen mit der Zeit auch die Hardware der Betriebsmasterrollen ausgetauscht werden. Wird die Hardware des FSMO-Rolleninhabers ausgetauscht, müssen alle Rollen die der DC innehat auf einen anderen DC verschoben werden. Dies kann händisch oder automatisch während dem DCPROMO-Vorgang erfolgen. Natürlich müssen auch bei einem Hardware-Crash des Rolleninhabers die gecrashten Rollen auf einem anderen DC erneut bereitgestellt werden.

Die FSMO-Rollen verschieben
Die FSMO-Rollen mit DCPROMO verschieben

Und genau bei dem Übertragen oder Übernehmen der FSMO-Rollen gehen die Infrastrukturmaster der Anwendungsverzeichnispartitionen in Vergessenheit. In den meisten Umgebungen handelt es sich dabei um den Infrastrukturmaster der beiden DNS-Anwendungsverzeichnispartitionen „ForestDNSZones“ sowie „DomainDNSZones“. Andere Anwendungsverzeichnispartitionen sind in vielen Umgebungen nicht im Einsatz.

Leider werden die Infrastrukturmasterrollen der Anwendungsverzeichnispartitionen unter Windows Server 2003 sowie Windows Server 2008 beim Übertragen (Rolleninhaber ist online) auf einen anderen DC weder über die GUI, noch in der Kommandozeile mit NTDSUTIL (NTDSUTIL - Transfer) "verschoben". Diese müssen zusätzlich noch händisch auf einen anderen DC übertragen werden. Auch beim Übernehmen (Rolleninhaber ist offline, z.B. bei einem DC-Crash) der FSMO-Rollen auf einen anderen DC, müssen zusätzlich die Infrastrukturmaster der Anwendungsverzeichnispartitionen händisch verschoben werden.

 

Bedauerlich das Microsoft an die Infrastrukturmaster der Anwendungsverzeichnispartitionen keine Beachtung geschenkt hat. Es erscheint weder ein Hinweis beim verschieben der FSMO-Rollen, noch wird ein Eintrag in der Ereignisanzeige protokolliert, der auf das Fehlen der Infrastrukturmaster für die Anwendungsverzeichnispartitionen hinweist. Auch überprüft das DCDIAG bei dem Test KnowsOfRoleHolders nicht die Anwendungsverzeichnispartitionen nach dem Infrastrukturmaster, sondern nur den Infrastrukturmaster der Domänenpartition. Das Fehlen eines Infrastrukturmasters für eine Anwendungsverzeichnispartition bleibt somit unbemerkt.

 

 

 

Den Infrastrukturmaster der DNS-Anwendungsverzeichnispartitionen mit ADSIEdit ändern


Die Infrastrukturmasterrollen der Anwendungsverzeichnispartitionen "ForestDNSZones und "DomainDNSZones" sollten bevorzugt auf dem aktuellen Infrastrukturmaster wie folgt mit ADSIEdit auf einen anderen DC verschoben werden:

  1. Unter Windows Server 2003 gilt es zuerst die Windows Support Tools (auf der Server-CD im Verzeichnis Support\Tools) zu installieren. 
  2. Danach startet man das ADSIEdit, was ab Windows Server 2008 bereits "on Bord" ist. 
  3. Im ADSIEdit wählt man mit einem Rechtsklick auf den Eintrag "ADSI Edit" die Option "Connect to..." aus. 
  4. Im darauffolgenden Fenster "Connection Settings" ist im Bereich "Connection Point" die Option "Select or type a Distinguished Name or Naming Context" auszuwählen. 
  5. In dem Feld trägt man dann den Distinguished Name (DN) der entsprechenden Anwendungsverzeichnispartition ein, um sich mit dieser Verzeichnispartition zu verbinden. Im Fall der "ForestDNSZones" würde der DN so lauten:
    DC=ForestDNSZones,DC=Root-Domäne,DC=TLD
     
  6. Anschließend verbindet man sich noch mit den einzelnen (je nach Anzahl der Domänen) "DomainDNSZones" Partitionen. Der DN lautet wie folgt:
    DC=DomainDNSZones,DC=Domäne,DC=TLD
     
  7. Wenn man nun im ADSIEdit auf der linken Seite die einzelnen Verzeichnispartitionen mit denen man sich verbunden hat erweitert, findet man auf der rechten Seite das Objekt CN=Infrastructure. Mit einem Rechtsklick auf dieses Objekt ruft man die Eigenschaften des Objekts auf und ändert dort den Wert im Attribut fSMORoleOwner. An dieser Stelle muss nicht zwingend(!) der Infrastrukturmaster für die Domänenpartition angegeben werden. Es muss bloß ein verfügbarer DC der Domäne eingetragen werden. 
  8. Der Wert im Attribut sieht z.B. so aus:
    CN=NTDS Settings,CN=DCON01,CN=Servers,CN=<Standort>,CN=Sites,CN=Configuration,DC=intra,DC=dikmenoglu,DC=de

 

 

Den Infrastrukturmaster der DNS-Anwendungsverzeichnispartitionen mit LDP ändern

 

  1. Unter Windows Server 2003 befindet sich das LDP in den Windows Support Tools und ab Windows Server 2008 ist es bereits „on Bord“.

  2. Zuerst gilt es das LDP unter Start - Ausführen - LDP zu starten.

  3. Als nächstes sollte man sich mit dem aktuellen Infrastrukturmaster verbinden. Dazu ruft man unter Windows Server 2003 im Menüpunkt Connection die Option „Connect…“ auf und trägt im darauf erscheinenden Fenster den DC ein und klickt auf OK. Unter Windows Server 2008 heißt der Menüpunkt Remotedesktopverbindung und die Option Verbinden…

  4. Jetzt gilt es unter Connection/Remotedesktopverbindung - Bind…/Gebunden… ein entsprechendes Benutzerkonto (z.B. den Domänen-Admin) anzugeben, um sich mit diesem Benutzer an das AD zu „binden“.

  5. Nun muss der Distinguished Name (DN) der entsprechenden Anwendungsverzeichnispartition unter View/Ansicht - Tree/Struktur angegeben werden. Der DN für ForestDNSZones lautet DC=ForestDNSZones,DC=Root-Domäne,DC=TLD und für DomainDNSZones DC=DomainDNSZones,DC=Domäne,DC=TLD.

  6. Mit einem Rechtsklick auf den Eintrag CN=Infrastructure,DC=ForestDnsZones,DC=Root-Domäne,DC=de bzw. CN=Infrastructure,DC=DomainDnsZones,DC=Domäne,DC=de gilt es die Option Modify auszuwählen.

  7. Anschließend muss als Wert im Attribut fSMORoleOwner der DN des NTDS Settings Objekts des zukünftigen Infrastrukturmaster eingetragen werden, z.B.:
    CN=NTDS Settings,CN=MZDCON02,CN=Servers,CN=Mainz,CN=Sites,CN=Configuration,DC=intra,DC=dikmenoglu,DC=de

 

Existieren evtl. noch selbst erstellte Anwendungsverzeichnispartitionen, so müssen die Infrastrukturmasterrollen dieser Verzeichnispartitionen ebenfalls auf einen anderen DC verschoben werden, wenn der Ursprungsrollenträger aus der Domäne entfernt werden soll oder nicht mehr zur Verfügung steht.


Zum ändern des Infrastrukturmasters für die Anwendungsverzeichnispartition „DomainDNSZones“ kann man auch das Skript in dem folgenden Artikel verwenden:
Error message when you run the "Adprep /rodcprep" command in Windows Server 2008: "Adprep could not contact a replica for partition DC=DomainDnsZones,DC=Contoso,DC=com"


 

Die Verzeichnispartitionen und die Infrastrukturmasterrolle der DNS-Partitionen anzeigen

 

Der folgende Befehl kann dazu verwendet werden, alle Verzeichnispartitionen die in der Gesamtstruktur existieren anzeigen zu lassen:
Dsquery * CN=Partitions,CN=Configuration,DC=Domäne,DC=de -attr nCName


Möchte man sich lediglich die Anwendungsverzeichnispartitionen die in der Gesamtstruktur existieren anzeigen lassen, so ist das mit diesem Befehl möglich:
Dsquery * CN=Partitions,CN=Configuration,DC=Root-Domäne,DC=de -Filter "(&(objectcategory=crossRef)(systemFlags:1.2.840.113556.1.4.803:=5))" -Scope OneLevel -attr dnsRoot


Bei dieser Abfrage werden alle crossRef-Objekte im Container
Partitions abgefragt, die im systemFlags Attribut als Wert 0101 (Dezimal 5)  eingetragen haben. Der Befehl sieht in einer kürzeren Fassung mit dem gleichen Ergebnis so aus:

Dsquery * CN=Partitions,CN=Configuration,DC=Root-Domäne,DC=de -Filter (systemFlags=5) -Scope OneLevel -attr dnsRoot


Die Abfrage nach dem Attribut
dnsRoot liefert als Ergebnis immer den DNS-Namen der Anwendungsverzeichnispartitionen, wie z.B.: DomainDNSZones.blog.dikmenoglu.de. Bei der Abfrage nach dem Attribut nCName wird als Ergebnis der „Distinguished Name“ der Partitionen geliefert. Die Abfrage sieht wie folgt aus:
Dsquery * CN=Partitions,CN=Configuration,DC=Root-Domäne,DC=de -Filter (systemFlags=5) -Scope OneLevel -attr nCName

 

Die Infrastrukturmasterrolle der ForestDNSZones-Partition lässt sich mit diesem Befehl anzeigen:
Dsquery * CN=Infrastructure,DC=ForestDNSZones,DC=Root-Domäne -attr fSMORoleOwner

 

Die Infrastrukturmasterrollen der jeweiligen DomainDNSZones-Partition lassen sich wie folgt herausfinden:
Dsquery * CN=Infrastructure,DC=DomainDNSZones,DC=<die entsprechende Domäne>,DC=TLD -attr fSMORoleOwner

 


Warum beeinträchtigt ein fehlender Infrastrukturmaster einer DNS-Anwendungsverzeichnispartition nicht die Domäne?

Die Arbeit des Infrastrukturmaster besteht darin, domänenübergreifende Objektreferenzen (z.B. bei domänenübergreifenden Gruppenmitgliedschaften) innerhalb seiner Domäne stets aktuell zu halten. In den beiden DNS-Anwendungsverzeichnispartitionen werden jedoch ausschließlich die DNS-Zonen (Forward Lookup- und Reverse Lookup Zonen) gespeichert, die keine Verweise zu anderen Objekten in anderen Verzeichnispartitionen verwenden. Daher hat ein Infrastrukturmaster für die beiden DNS-Anwendungsverzeichnispartitionen nichts zu tun und wird deshalb nicht benötigt. Aus diesem Grund fällt an dieser Stelle ein fehlender Infrastrukturmaster für die DNS-Anwendungsverzeichnispartitionen im laufenden Betrieb nicht auf.

Siehe auch:
Phantome im Active Directory


Erst beim ausführen von ADPREP /RODCPREP wird man auf diesen Fehler aufmerksam gemacht, der sich schnell und einfach beheben lässt.

 

Weitere Informationen:
DCDIAG: NCSecDesc Fehler
Read-Only Domain Controller (RODC)
Die Installation eines RODC
How many Infrastructure Masters do you have?

 

Friday, July 17, 2009 9:29:48 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Saturday, July 11, 2009

Phantome im Active Directory (AD) sind nichts anderes als Referenzen auf Objekte aus anderen Domänen innerhalb der Gesamtstruktur. Wird z.B. ein Domänen-Benutzer zu einer Gruppe in einer anderen Domäne hinzugefügt, erstellt der lokale Domänencontroller (DC) der den Domänen-Benutzer zur Gruppe hinzufügt automatisch ein spezielles Objekt in der Datentabelle. Das spezielle Objekt ist das Phantomobjekt für den Domänen-Benutzer. Mit einem Phantomobjekt können DCs Verweise auf Objekte die sich in anderen Domänen innerhalb der Gesamtstruktur befinden verwalten. Im Phantomobjekt wird der ObjektGUID, ObjektSID und der Distinguished Name (DN) des neuen Gruppenmitglieds gespeichert. Durch dieses Phantomobjekt wird ein Distinguished Name Tag (DNT) bereitgestellt, das im member Attribut einer Gruppe gespeichert werden kann. Ist jedoch auf dem DC der globale Katalog (GC) aktiviert, so wird kein Phantomobjekt erstellt. Denn im GC befindet sich bereits ein Eintrag in der Datentabelle für jedes Objekt in der Gesamtstruktur. Phantomobjekte sind eine spezielle Art von internen Datenbankobjekten die einzig und alleine zum nachverfolgen dienen und lassen sich deshalb weder über die LDAP- noch ADSI-Schnittstelle anzeigen.

 

Die Anzahl der Phantomobjekte kann man sich mit NTDSUTIL anzeigen lassen. Führt man mit NTDSUTIL eine Analyse der AD-Datenbank mit Semantic Database Analysis durch, wird eine Datei erzeugt deren Inhalt so aussieht:

Summary:
Active Objects 9647
Phantoms 67
Deleted 2469

 

Der DC der die Rolle des Infrastrukturmasters innehat vergleicht regelmäßig die Einträge in seiner Datentabelle mit dem GC. Stellt dieser fest das ein Objekt umbenannt, verschoben oder gelöscht wurde, aktualisiert der Infrastrukturmaster automatisch das Phantomobjekt in der Datentabelle und repliziert die Änderung auf seine Replikationspartner innerhalb der Domäne. Wird das Quell-Objekt in eine andere Domäne verschoben, ändert sich der DN des Objekts und der Infrastrukturmaster aktualisiert automatisch den DN vom Phantomobjekt. Der Infrastrukturmaster überprüft standardmäßig alle zwei Tage die Verknüpfungsbeziehungen und kann auch Phantomobjekte entfernen, auf die sich keine Forward-Link Attribute in der Domäne mehr beziehen. Bei Bedarf kann das Intervall auf dem DC der die Rolle des Infrastrukturmasters innehat, mit Erstellen des folgenden Registryschlüssels angepasst werden:

 

Registrierungseintrag: Days per database Phantom scan

Type: DWORD

Standardwert: 2 Tage (der Mindestwert wäre ein Tag)

 

Ein Phantomobjekt wird letztendlich vom Garbage Collection Prozess der alle 12 Stunden auf jedem DC ausgeführt wird erst dann entfernt, wenn alle Verweise zum Quell-Objekt entfernt wurden.

Es könnte aber auch durchaus sein, dass ein Forward-Link Attribut auf Objekte außerhalb der eigenen Gesamtstruktur verweist (z.B. auf Objekte einer vertrauenswürdigen Domäne). In solch einem Fall wird vom AD in der Domänenverzeichnispartition ein Objekt im Container ForeignSecurityPrincipals erstellt. Dieses Objekt wird dann als Foreign Security Principal (kurz FSP) bezeichnet. In diesem FSP werden neben dem SID zusätzliche Attribute gespeichert, damit das Objekt in der vertrauenswürdigen Domäne eindeutig identifiziert werden kann. Ein Nachteil des FSP ist, das es keinen Prozess gibt damit der FSP stets aktuell bleibt (z.B. wenn das Quell-Objekt umbenannt wird). Muss ein FSP von einer System State-Sicherung wiederhergestellt werden, so wird das FSP wie jedes andere AD-Objekt behandelt.

 

Weitere Informationen:
Verknüpfte Attribute
Die Active Directory-Datenbank reparieren
Was passiert in der AD-Datenbank wenn ein Objekt gelöscht wird?
Phantoms, tombstones and the infrastructure master
How the Data Store Works

Saturday, July 11, 2009 10:17:25 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Tuesday, July 07, 2009

Alle Active Directory (AD) Daten wie z.B. Benutzer-, Gruppen- oder Computerobjekte werden in der transaktionalen Datenbankdatei NTDS.DIT gespeichert, die sich standardmäßig im Verzeichnis %windir%\NTDS auf jedem Domänencontroller (DC) befindet. Die zugrundeliegende Datenbank-Engine ist die Extensible Storage Engine (ESE), die ebenfalls im Exchange und WINS-Umfeld zum Einsatz kommt. Die AD-Datenbank NTDS.DIT besteht intern aus drei Tabellen: Datentabelle (Data-Table), Verknüpfungstabelle (Link-Table) und (security descriptor) SD-Table. Die beiden elementarsten Tabellen in der sich die Daten des AD befinden ist die Datentabelle, die alle Objekte sowie Attribute enthält und die Verknüpfungstabelle, in der die Beziehungen zwischen den Objekten gespeichert werden.

Jedes AD-Objekt (z.B. Benutzer, Gruppen, Computer und Anwendungsspezifische Daten) wird zusammen mit seinem „Distinguished Name“ (DN) und einer eindeutigen Kennung in einer einzelnen Zeile, mit einer Spalte pro Attribut in der Datentabelle gespeichert. Oder anders ausgedrückt entspricht jede Zeile in der Datentabelle einem Objekt. Bei einem DC enthält die Datentabelle die Einträge aus der Schema-, Konfigurations-, Anwendungs- und Domänenpartition. Auf einem globalen Katalog (GC) enthält die Datentabelle Einträge für jedes Objekt in der Gesamtstruktur, denn alle Objekte aus allen Domänenpartitionen innerhalb der Gesamtstruktur werden mit den Attributen die für eine Suche relevant sind, in den GC repliziert.

Das AD verwendet als eindeutige Kennung das Distinguished Name Tag (DNT), um jede Zeile in der Datentabelle eindeutig zu identifizieren. Bei dem DNT handelt es sich um einen 32Bit Integer Wert und dieser wird zum internen Verweis auf Objekte verwendet. Der Distinguished Name Tag ist eine lokale Kennung der nicht zwischen den DCs repliziert wird und lautet bei jedem DC anders.



Das Verknüpfen von Objekten

Im AD existieren zwei Arten von Beziehungen die zwischen den Objekten verwaltet werden. Zum einen ist es die Beziehung zwischen den über- und untergeordneten Objekten und zum anderen ist es die Verknüpfungsbeziehung. Für die Beziehung zwischen den über- und untergeordneten Objekten speichert das AD in einer zusätzlichen Spalte innerhalb der Datentabelle den Parent Distinguished Name Tag (PDNT). In dieser Spalte wird der DNT vom übergeordneten Objekt gespeichert.

Die Verknüpfungsbeziehung zwischen einem Verknüpfungspaar wird in der Verknüpfungstabelle gespeichert. Die Verknüpfungstabelle verwendet nur den DNT der gespeicherten Objekte, um den DN und somit das Objekt selbst ausfindig zu machen. Diese Vorgehensweise innerhalb der AD-Datenbank stellt sicher, dass die Integrität der Objekte und den jeweiligen Links gewährleistet ist.
 


Im AD werden alle Attribute durch ein attributeSchema-Objekt in der Schemapartition definiert, wobei diverse Attribute im AD als Verknüpfungsattribute definiert sind. Als Verknüpfungsattribute werden Attribute bestimmt, die einen geraden Wert im LinkID Attribut des attributeSchema-Objekts enthalten.

Verknüpfte Attribute (auf Englisch: Linked Attributes) stellen eine besondere Beziehung im Active Directory zueinander dar und sind Verknüpfungspaare, die aus einem Forward-Link Attribut und einem Back-Link Attribut bestehen um eine Verknüpfung zwischen zwei AD-Objekten zu erstellen.

Der Wert des Back-Link Attributs wird basierend auf dem Wert das im Forward-Link Attribut eingetragen ist berechnet. Der Wert eines Back-Link Attributs im Zielobjekt besteht aus den Distinguished Name Einträgen aller Objekte, in denen der DN des Quellobjekts im entsprechenden Forward-Link Attribut eingetragen ist.

Z.B. stellen in den Eigenschaften eines Benutzerkontos, in der Registerkarte „Organisation“ die Attribute „manager“ (Feldname: Vorgesetzter) und das Attribut „directReports“ (Feldname: Mitarbeiter) ein Verknüpfungspaar dar. Dabei handelt es sich bei dem einwertigen (single-value) Attribut „manager“ um das Forward-Link und bei dem mehrwertigen (multivalue) Attribut „directReports“ um das Back-Link Attribut.

Ein weiteres Beispiel ist die Gruppenmitgliedschaft eines Domänen-Benutzers. Das MemberOf-Attribut im Benutzerobjekt ist das Back-Link und das Member-Attribut im Gruppenobjekt das Forward-Link Attribut. Beide Attribute sind mehrwertig und stellen eine Verknüpfung zwischen dem Gruppenobjekt und seinen Benutzerobjekten dar. Denn schließlich kann ein Domänen-Benutzer Mitglied in mehreren Gruppen sein und eine Gruppe kann mehrere Domänen-Benutzer als Gruppenmitglieder enthalten. Das member Atribut im Gruppenobjekt scheint in der MMC Active Directory-Benutzer und -Computer die DNs der Mitglieder zu enthalten, aber tatsächlich werden die DNs vom AD anders gespeichert. Wird der DN eines Benutzerobjekts dem member Attribut einer Gruppe hinzugefügt, speichert das AD den DNT des Objekts und nicht den DN. Da sich der DNT selbst beim umbenennen eines Objekts nicht ändert, kann ein Benutzerobjekt umbenannt werden ohne dass das AD alle Gruppen durchsuchen muss um den DN in jedem member Attribut zu aktualisieren.




Wird in einem Verknüpfungspaar der Wert eines Forward-Link Attributs vom Administrator verändert, aktualisiert das Active Directory automatisch das Back-Link Attribut. Das beinhaltet selbstverständlich auch das Löschen von Werten. Dabei kann lediglich der Forward-Link vom Administrator bearbeitet werden (wie z.B. das Member-Attribut eines Gruppenobjekts), der zwischen den DCs repliziert wird.

Back-Links dagegen werden von jedem DC selbst verwaltet und können auch nicht vom Administrator bearbeitet werden. Es ist ein sogenanntes system-only Attribut und wird auch nicht auf andere DCs repliziert. Ein Back-Link und sein Wert werden zum Zeitpunkt der Abfrage generiert. Solche Attribute tragen den Namen constructed.

Das LinkID Attribut im Forward-Link enthält immer einen geraden und das LinkID Attribut im verknüpften Back-Link enthält einen ungeraden Wert, nämlich den Wert „Forward-LinkID plus 1“. Beispielsweise enthält das LinkID Attribut im attributeSchema-Objekt Manager den Wert 42 und das LinkID Attribut im attributeSchema-Objekt directReports den Wert 43. Im attributeSchema-Objekt Member enthält das LinkID Attribut den Wert 2 und im attributeSchema-Objekt MemberOf enthält das LinkID Attribut den Wert 3.

 

Es gibt aber auch Gruppentypen die Mitglieder enthalten können, die sich in einer anderen Domäne befinden. Das AD speichert dazu ein spezielles Objekt in der Datentabelle, damit ein DNT bereitgestellt und im member Attribut der Gruppe gespeichert werden kann. Was genau das auf sich hat, wird in diesem Artikel beschrieben:

Phantome im Active Directory

 

Weitere Informationen:
Die unterschiedliche Größe der AD-Datenbank
Was passiert in der AD-Datenbank wenn ein Objekt gelöscht wird?

Link-ID Attribute (Windows)
Linked Attributes (Windows)
How the Data Store Works: Active Directory

Tuesday, July 07, 2009 1:03:50 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Friday, June 26, 2009

Wenn das DCDIAG auf einem Windows Server 2008 oder Windows Server 2008 R2 ausgeführt wird, kann es unter Umständen zu folgendem Fehler bei dem NCSecDesc Test kommen:

Starting test: NCSecDesc
         Fehler: NT-AUTORITÄT\DOMÄNENCONTROLLER DER ORGANISATION besitzt
         keine Replicating Directory Changes In Filtered Set
         Zugriffsrechte für den Namenskontext:
         DC=DomainDnsZones,DC=Domäne,DC=TLD
         Fehler: NT-AUTORITÄT\DOMÄNENCONTROLLER DER ORGANISATION besitzt
         keine Replicating Directory Changes In Filtered Set
         Zugriffsrechte für den Namenskontext:
         DC=ForestDnsZones,DC=Domäne,DC=TLD
         .................. DCON01 hat den Test NCSecDesc nicht bestanden.

 

Wird ein Windows Server 2008 oder Windows Server 2008 R2 als zusätzlicher Domänencontroller (DC) zu einer Windows 2000 oder Windows Server 2003 Domäne hinzugefügt, kann es zu diesem Fehler kommen. Das DCDIAG ab Windows Server 2008 bringt bei dem NCSecDesc Test einen Fehler, wenn der Befehl ADPREP /RODCPREP nicht ausgeführt wurde.

Denn bei diesem Test wird überprüft, ob der Security Descriptor der genannten Verzeichnispartitionen, in dem Fall die beiden Anwendungsverzeichnispartitionen "DomainDNSZones" sowie "ForestDNSZones", über die entsprechenden Berechtigungen für die Replikation verfügt. Der Fehler zeigt an, dass die Gruppe NT-AUTORITÄT\DOMÄNENCONTROLLER DER ORGANISATION keine Zugriffsberechtigung auf die Replikation der Verzeichnisänderungen für die beiden DNS-Anwendungsverzeichnispartitionen besitzt.

Falls es nicht geplant ist einen Read-Only Domänencontroller (RODC) in der Gesamtstruktur zu installieren, kann dieser Fehler getrost ignoriert werden. Aber wenn es doch geplant ist einen RODC in der Gesamtstruktur zu installieren, verschwindet dieser Fehler nach dem Ausführen von ADPREP /RODCPREP. Dabei kann das ADPREP sowohl von der Windows Server 2008 DVD als auch von der Windows Server 2008 R2 DVD auf irgendeinem DC mit „Organisations-Admin“ Rechten ausgeführt werden. Denn beide ADPREP-Versionen setzen beim Ausführen des Parameters /RODCPREP die gleichen Berechtigungen in den DNS-Anwendungsverzeichnispartitionen.

Das ADPREP kontaktiert während der Ausführung alle Infrastrukturmasterrollen der einzelnen DNS-Anwendungsverzeichnispartitionen in der Gesamtstruktur und aktualisiert die Berechtigungen. Während der Durchführung von ADPREP /RODCPREP könnte es sein, dass ein Infrastrukturmaster nicht erreichbar ist. Was genau das auf sich hat, beschreibt der folgende Artikel:

Die Infrastrukturmaster der Anwendungsverzeichnispartitionen

 

Weitere Informationen:
Die Installation eines RODC

Friday, June 26, 2009 1:05:01 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Wednesday, June 24, 2009

Möchte der Administrator eine LDAP-Abfrage durchführen oder eine Objektdelegierung im Active Directory (AD) einrichten, so muss er wissen welches Attribut hinter dem Feld z.B. in der MMC Active Directory-Benutzer und –Computer (dsa.msc) dahinter steckt, damit er seine Aufgabe durchführen kann.

Die Attribute die hier aufgezeigt werden beziehen sich auf die Felder in der MMC dsa.msc.

 

Die Attribute hinter den Feldern eines Benutzerkontos

 

Die Registerkarte: Allgemein

 

Die Registerkarte: Adresse

 

Die Registerkarte: Konto

 

Die Registerkarte: Profil

 

Die Registerkarte: Rufnummern

 

Die Registerkarte: Organisation

 

Die Registerkarte: Mitglied von

 

Die Übersicht in der MMC "dsa.msc"

 

 

Die Attribute hinter den Feldern eines Gruppenkontos

 

Die Registerkarte: Allgemein

 

Die Registerkarte: Mitglieder

 

Die Registerkarte: Mitglied von

 

Die Registerkarte: Verwaltet von

 

 

Die Attribute hinter den Feldern einer Organisationseinheit (OU)

 

Die Registerkarte: Allgemein

 

Die Registerkarte: Verwaltet von

 


Die Attribute in der Registerkarte "Objekt"

Diese Registerkarte kommt in den Eingenschaften einer OU, eines Benutzer-, Gruppen- oder Computerkontos erst dann zum Vorschein, wenn im Snap-In Active Directory-Benutzer und -Computer unter Ansicht die Option Erweiterte Funktionen aktiviert wurde.

 



Die Attribute hinter den Feldern eines Computerkontos

 

Die Registerkarte: Allgemein

 

Die Registerkarte: Betriebssystem

 

Die Registerkarte: Mitglied von

 

Die Registerkarte: Standort


 

Die Attribute hinter den Feldern eines Druckers


Die Registerkarte: Allgemein


 


Die Attribute hinter den Feldern eines "Kontakts"


Die Registerkarte: Allgemein

 

Die Registerkarte: Adresse

 

Die Registerkarte: Rufnummern

 

Die Registerkarte: Organisation

 

 

Weitere Informationen:
Gespeicherte Abfragen
Active Directory - Abfrage
All Attributes (Windows)
All Classes (Windows)
Mappings for the Active Directory Users and Computers Snap-in (Windows)

Wednesday, June 24, 2009 8:04:25 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Erweiterte Abfragen | Objektverwaltung  | 
 Friday, June 19, 2009

In vielen Unternehmen ist ein Prozess etabliert, wie und wann ein neuer Mitarbeiter im Active Directory (AD) als Benutzer erstellt wird. Viele Firmen verwenden zum erstellen eines Benutzerkontos die Standardwerkzeuge, wie die MMC Active Directory-Benutzer und -Computer (dsa.msc) das im Windows mitgeliefert wird. Andere Firmen verwenden dagegen ihre „eigenen“ Werkzeuge in Form von Dritt-Anbieter Tools, Skripten oder selbst entwickelte Tools, weil dadurch gleich beim erstellen eines Domänen-Benutzers weitere Informationen (z.B. Büro, Rufnummer, Adressinformationen etc.) dem Benutzerkonto in einem Schritt vergeben werden.

Mit einer Unternehmensrichtlinie kann man zwar festlegen, dass ein Benutzerkonto ausschließlich über das eigene Werkzeug erstellt werden soll, doch technisch gesehen kann natürlich der Administrator weiterhin über die MMC dsa.msc Benutzerkonten erstellen.



Das kann man jedoch wie folgt unterbinden:

  • Dazu ruft man zuerst das ADSIEdit.msc auf, das sich unter Windows 2000 und Windows Server 2003 in den Windows Support Tools befindet und ab Windows Server 2008 bereits im Betriebssystem integriert ist und verbindet sich mit der Schemapartition.

  • Dann gilt es in den Eigenschaften des Objekts CN=User den Wert des Attributs defaulthidingvalue auf TRUE (Wahr) zu setzen. Ändert man stattdessen das Attribut im Objekt CN=Group, so lassen sich keine Gruppen mehr in der MMC dsa.msc erstellen.

  • Anschließend steht der Eintrag „Benutzer“ unter „Neu“ nicht mehr zur Verfügung.



Da diese Änderung in der Schemapartition durchgeführt und auf alle DCs in der Gesamtstruktur repliziert wird, betrifft das alle Domänen in der Gesamtstruktur.

Natürlich ist es aber über andere grafische Tools oder mit Kommandozeilentools wie z.B. DSADD weiterhin möglich Benutzer im AD zu erstellen. Diese Änderung betrifft ausschließlich die MMC Active Directory-Benutzer und -Computer.


Weitere Informationen:
Eigene Spalten in ADBuC integrieren

Friday, June 19, 2009 1:07:01 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Thursday, June 11, 2009

Microsoft stellt das Active Directory Management Gateway Service (AD MGS) für Windows Server 2003 und Windows Server 2008 als separaten Download zur Verfügung.

Wenn das AD MGS installiert ist, stellt es die gleichen Funktionen zur Verfügung wie die Active Directory Web Services (ADWS) unter Windows Server 2008 R2.
Das AD MGS ist das AD-Web Services für Windows Server 2003 und Windows Server 2008. 


Die Installationsvoraussetzungen für das AD MGS wären:

 

Nach der Installation des AD MGS kann ein Windows Server 2003 DC oder Windows Server 2008 DC über die AD-Powershell und
Active Directory Administrative Center (ADAC) von einem Windows 7 Client oder Windows Server 2008 R2 Mitgliedsserver bzw. DC administriert werden.

Das AD MGS steht hier zum Download zur Verfügung:

Active Directory Management Gateway Service (Active Directory Web Service for Windows Server 2003 and Windows Server 2008)


 

Weitere Informationen:
The Active Directory Management Gateway Service is now available
Neues in den AD DS: Active Directory-Webdienste
Die AD-Powershell im Windows Server 2008 R2
Das Active Directory-Verwaltungscenter

Thursday, June 11, 2009 9:41:04 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell  | 
 Saturday, June 06, 2009

Wurde bis einschließlich Windows Server 2008 der Domänen- oder Gesamtstrukturfunktionsmodus z.B. von „Windows Server 2003“ auf „Windows Server 2008“ hochgestuft, ist es nicht möglich weder den Domänen- noch Gesamtstrukturfunktionsmodus zurückzustufen. Die einzige Möglichkeit wäre ein Forest-Recovery durchzuführen. Denn das Heraufstufen des Domänen- bzw. Gesamtstrukturfunktionsmodus ist ein irreversibler Vorgang.

Unter Windows Server 2008 R2 ist nun das zurückstufen in einen bestimmten Domänen- sowie Gesamtstrukturfunktionsmodus unter gewissen Voraussetzungen möglich.

Die Funktionsebenen bestimmen zum einen die zur Verfügung stehenden Active Directory-Funktionen innerhalb der Domäne sowie Gesamtstruktur und zum anderen werden die Betriebssystemversionen beschränkt, die auf Domänencontrollern (DCs) ausgeführt werden können.

Weitere Informationen über die Funktionsebenen liefert der folgende Artikel:

Domänen- und Gesamtstrukturfunktionsmodus



Den Domänenfunktionsmodus zurückstufen

Der Domänenfunktionsmodus lässt sich unter bestimmten Voraussetzungen wie folgt zurückstufen:

  • Der aktuelle Domänenfunktionsmodus muss sich auf „Windows Server 2008 R2“ befinden.

  • Der Domänenfunktionsmodus lässt sich ausschließlich auf „Windows Server 2008“ zurückstufen. Ein zurückstufen auf „Windows Server 2003“ oder früher ist unter keinen Umständen möglich.

  • Der Gesamtstrukturfunktionsmodus muss den Domänenfunktionsmodus auf den die entsprechende Domäne zurückgestuft werden soll (also auf „Windows Server 2008“) unterstützen. Das bedeutet, befindet sich der Gesamtstrukturfunktionsmodus auf „Windows Server 2008 R2“, so kann die Domäne nicht auf „Windows Server 2008“ zurückgestuft werden, da der Gesamtstrukturfunktionsmodus nur „Windows Server 2008 R2“ Domänen innerhalb der Gesamtstruktur unterstützt.

  • Der Gesamtstrukturfunktionsmodus muss sich also auf Windows 2000, Windows Server 2003 oder Windows Server 2008 befinden.

  • Der Domänenfunktionsmodus kann zum einen in der AD-Powershell mit dem Commandlet Set-ADDomainMode und zum anderen, mit dem Attribut-Editor in der MMC Active Directory-Benutzer und -Computer (dsa.msc) oder ADSIEdit zurückgestuft werden.

  • Unter Start-Verwaltung gilt es das Active Directory Module for Windows Powershell zu starten. Danach kann mit diesem AD Powershell-Befehl der Domänenfunktionsmodus zurückgestuft werden:
    Set-ADDomainMode <FQDN der Domäne> -DomainMode Windows2008Domain

  • Anschließend muss die Aktion mit einem „J“ bestätigt werden.



  • Leider erscheint in der AD-Powershell keine Meldung das die Aktion durchgeführt wurde. Es wird aber im Verzeichnisdienstprotokoll des DCs die EventID 2039 protokolliert in der bestätigt wird, dass die Neue Domänenfunktionsebene:3 lautet.

  • Die Zahl „3“ gibt den Wert im Attribut msDS-Behavior-Version an, das sich in der Domänenpartition in den Eigenschaften des Containers <DC=Domäne,DC=TLD> befindet.

    Folgende Werte können im Attribut msDS-Behavior-Version eingetragen sein:

    0 = Domänenfunktionsmodus: Windows 2000 gemischt und Windows 2000 pur
    1 = Domänenfunktions: Windows Server 2003 Interim
    2 = Domänenfunktionsebene: Windows Server 2003
    3 = Domänenfunktionsebene: Windows Server 2008
    4 = Domänenfunktionsebene: Windows Server 2008 R2

  • Mit dem Attribut-Editor in der MMC Active Directory-Benutzer und -Computer (dsa.msc) oder ADSIEdit lässt sich der Domänenfunktionsmodus ebenfalls zurückstufen. In der MMC dsa.msc gilt es zuerst unter Ansicht die Erweiterte Features zu aktivieren. Anschließend ruft man mit einem Rechtsklick auf den Domänennamen die Eigenschaften auf und wechselt zum Reiter Attribut-Editor. Dort angelangt, ändert man den Wert im Attribut msDS-Behavior-Version von 4 auf 3. Mit ADSIEdit ist die Vorgehensweise ähnlich. Nach dem Aufruf von ADSIEdit stellt man im ersten Schritt eine Verbindung mit der Domänenpartition (Standardmäßiger Namenskontext) her und ändert im zweiten, den Wert im Attribut msDS-Behavior-Version von 4 auf 3.

  • Der Domänenfunktionsmodus kann natürlich auch in der MMC Active Directory-Benutzer und -Computer (dsa.msc) und Active Directory-Domänen und -Vertrauensstellungen (domain.msc) überprüft werden.

  • In der AD-Powershell lässt sich der DomainMode mit dem Cmdlet Get-ADDomain verifizieren.




Den Gesamtstrukturfunktionsmodus zurückstufen

Der Gesamtstrukturfunktionsmodus lässt sich unter gewissen Voraussetzungen wie folgt zurückstufen:

  • Der aktuelle Gesamtstrukturfunktionsmodus muss sich auf „Windows Server 2008 R2“ befinden.

  • Der Gesamtstrukturfunktionsmodus kann wie der Domänenfunktionsmodus nur auf „Windows Server 2008“ zurückgestuft werden.

  • Optionale Funktionen die nicht mehr deaktiviert werden können, wie der AD-Papierkorb, dürfen nicht aktiviert sein. Zukünftige optionale Funktionen die deaktiviert werden können, lassen sich mit dem AD-Powershell Cmdlet Disable-ADOptionalFeature deaktivieren.

  • Das zurückstufen erfolgt entweder in der AD-Powershell mit dem Cmdlet Set-ADForestMode oder mit ADSIEdit.

  • In dem Active Directory Module for Windows Powershell muss zum zurückstufen des Gesamtstrukturfunktionsmodus dieser Befehl eingegeben werden:
    Set-ADForestMode <FQDN der Root-Domäne> -ForestMode Windows2008Forest

  • Der Vorgang ist mit einem „J“ zu bestätigen.



  • Danach wird im Verzeichnisdienstprotokoll des DCs die EventID 2040 protokolliert mit der Beschreibung, dass die Neue Gesamtstrukturfunktionsebene:3 lautet.

  • Auch hier ist mit der Zahl „3“ der Wert im Attribut msDS-Behavior-Version gemeint, das sich in den Eigenschaften des Containers
    <CN=Partitions,CN=Configuration,DC=Root-Domäne,DC=TLD> befindet.

    Die Werte die im Attribut
    msDS-Behavior-Version eingetragen werden können sind:

    0 = Gesamtstrukturfunktionsebene: Windows 2000
    1 = Gesamtstrukturfunktionsebene: Windows Server 2003 Interim
    2 = Gesamtstrukturfunktionsebene: Windows Server 2003
    3 = Gesamtstrukturfunktionsebene: Windows Server 2008
    4 = Gesamtstrukturfunktionsebene: Windows Server 2008 R2

  • Mit ADSIEdit ist zuerst eine Verbindung mit der Konfigurationspartition herzustellen. Anschließend muss der Wert im Attribut msDS-Behavior-Version das sich in den Eigenschaften des Containers <CN=Partitions,CN=Configuration,DC=Root-Domäne,DC=TLD> befindet, von 4 auf 3 geändert werden.

  • Außerdem kann man den Gesamtstrukturfunktionsmodus in der MMC Active Directory-Domänen und -Vertrauensstellungen (domain.msc) kontrollieren.

  • In der AD-Powershell lässt sich der ForestMode mit dem Cmdlet Get-ADForest überprüfen.



Weitere Informationen:
Der Active Directory-Papierkorb im Windows Server 2008 R2
Die AD-Powershell im Windows Server 2008 R2

Saturday, June 06, 2009 7:00:35 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell  | 
 Sunday, May 24, 2009

Eine weitere Neuheit die ab Windows Server 2008 R2 und Windows 7 eingeführt wird, ist die Möglichkeit einen Computer mit Windows Server 2008 R2 oder Windows 7 zur Domäne hinzuzufügen, ohne das die Maschine eine Verbindung zum Netzwerk hat (Offline Domain join). Diese neue Funktion kann ausschließlich ab Windows Server 2008 R2 und Windows 7 eingesetzt werden. Damit ist es möglich an entfernten Standorten die noch keine Anbindung ans Unternehmensnetzwerk haben Windows Server 2008 R2 Mitgliedserver und Windows 7 Clients zur Domäne hinzuzufügen.

Eine weitere Einsatzmöglichkeit für diese Funktion wäre, dass bereits die bestellten Windows 7 Clients direkt vom PC-Lieferanten vorinstalliert und zur Domäne hinzugefügt werden.

Oder bei der Massenanfertigung von virtuellen Maschinen können direkt nach der Betriebssysteminstallation die VMs zur Domäne hinzugefügt werden. Das ganze hat sogar den Vorteil, dass dadurch ein Neustart erspart bleibt der sonst nach dem Hinzufügen einer VM zur Domäne notwendig wäre.

Auch mit Deployment Tools, wie z.B. dem Windows-System-Image Manager (SIM) der Bestandteil des Windows Automated Installation Kit (WAIK) ist, können bereits während der unbeaufsichtigten (unattended) Installation eines Windows Server 2008 R2 und Windows 7 die Systeme zur Domäne hinzugefügt werden. Das ist möglich durch das Bereitstellen der relevanten Daten in der Unattend.xml-Datei, die für das offline domain join notwendig sind. Die Unattend.xml-Datei für Windows Server 2008 R2 und Windows 7 muss um einen weiteren Abschnitt erweitert werden, damit das Hinzufügen zur Domäne bereits während der Betriebssysteminstallation vonstattengehen kann.

Diese neue Funktion ist Dank einem neuen Kommandozeilentool Namens Djoin.exe möglich, dass nur ab Windows Server 2008 R2 und Windows 7 „on Bord“ ist. Mit diesem Kommandozeilentool lässt sich auch der sichere Kanal zwischen einem Windows Server 2008 R2 Mitgliedserver oder Windows 7 Client und einem Domänencontroller zurücksetzen.

Wie üblich bei den Windows-Kommandozeilentools lässt sich mit dem Befehl djoin /? die Hilfe aufrufen, worin die einzelnen Parameter beschrieben werden.


 

Einen Windows Server 2008 R2 oder Windows 7 offline zur Domäne hinzufügen

  • Im ersten Schritt muss von einem Windows Server 2008 R2 (DC oder Mitgliedserver) oder Windows 7 das Computerkonto im AD erstellt werden. Dabei wird eine Textdatei generiert, die lokal auf dem zu hinzuzufügenden Windows Server 2008 R2 oder Windows 7 benötigt wird. Diesen Vorgang bezeichnet man auch als bereitgestellte Installation oder auf englisch provision computer account.
  • Bei der bereitgestellten Installation wird das Computerkonto im AD standardmäßig im Container Computers erstellt. Der Befehl lautet so:
    Djoin.exe /provision /domain <Domänenname> /machine <Computername> /savefile <blob.txt>





  • Soll stattdessen das Computerkonto in einer OU erstellt werden, so müsste der folgende Befehl ausgeführt werden:
    Djoin.exe /provision /domain <Domänenname> /machine <Computername> /machineou <DN der OU> /savefile <blob.txt>





  • Standardmäßig wird mit Ausführen von Djoin.exe das Computerkonto im AD von einem Windows Server 2008 R2 DC erstellt. Durch die Angabe des Parameters /downlevel kann das Computerkonto von einem DC älter als Windows Server 2008 R2 bzw. in einer Windows 2000, Windows Server 2003 oder Windows Server 2008 Domäne erstellt werden:
    Djoin.exe /provision /domain <Domänenname> /machine <Computername> /downlevel /savefile <blob.txt>
  • Der mit diesem Befehl erstellte Base64-codierte Metadaten-Blob (Binary Large Object, die Textdatei) enthält sehr sensible Daten. Diese Datei sollte verständlicherweise sicher aufbewahrt werden, denn in dem Blob ist z.B. das Computerkontokennwort, Informationen über die Domäne einschließlich des Domänennamens, der Name eines Domänencontroller und der Security Identifier (SID) der Domäne enthalten. Daher muss zwingend darauf geachtet werden, dass wenn diese Datei physikalisch (über den Postweg) oder über das Netzwerk transportiert wird, die Sicherheit jederzeit gewährleistet ist und diese Datei nicht in fremde Hände gelangt.

    Der Blob sieht wie folgt aus:




  • Im zweiten Schritt muss auf dem Windows Server 2008 R2 oder Windows 7 der zur Domäne hinzugefügt werden soll, der folgende Befehl in einer Kommandozeile eingegeben werden. Dabei ist es zwingend, dass die CMD explizit als Administrator gestartet wird:
    Djoin.exe /requestodj /loadfile <Pfad zur blob.txt> /windowspath %windir% /localos
  • Zum Schluss ist ein Neustart fällig. Anschließend kann der Rechner ans Netzwerk verkabelt werden und befindet sich automatisch in der Domäne.
  • Mit type blob.txt bekommt man die Datei in der Kommandozeile angezeigt.




Welche Rechte werden benötigt?

Für diese Funktion werden Domänen-Admin Rechte benötigt oder den entsprechenden Personen wurde das Recht Hinzufügen von Arbeitsstationen zur Domäne über die Gruppenrichtlinie erteilt. Besser wäre es jedoch dieses Recht per Objektdelegierung an die jeweiligen Personen zu delegieren.

Clients in die Domäne hinzufügen

 


Wird eine Logdatei erstellt?

Wenn ein Fehler beim ausführen von Djoin.exe auftritt, erhält man in der Protokolldatei %windir%\debug\netsetup.log weitere Informationen.


 

Beitreten zur Domäne während einer unbeaufsichtigten Betriebssysteminstallation

Für das Beitreten zur Domäne während der Betriebssysteminstallation muss zuerst mit Djoin.exe das Computerkonto im AD und vor allem der Base64-codierte Metadaten-Blob generiert werden. Anschließend gilt es die Unattend.xml Datei zu erzeugen und einen neuen Abschnitt in der XML zu erstellen. Der Abschnitt sieht folgendermaßen aus:

<Component>
<Component name=Microsoft-Windows-UnattendedJoin>
<Identification>
<Provisioning>
<AccountData>Inhalt des Base64codierten Metadaten-Blob</AccountData>
</Provisioning>
</Identification>
</Component>

Nach dem fertigstellen der Unattended.xml Datei gilt es den Computer der zur Domäne hinzugefügt werden soll im Windows PE (Windows Preinstallation Environment) zu starten. Danach muss das Setup mit der Angabe der Antwortdatei ausgeführt werden:

Setup /unattend:<Pfad zur Unattended.xml>


 

Den sicheren Kanal (secure channel) mit Djoin.exe zurücksetzen

Wenn der sichere Kanal zwischen einem Windows Server 2008 R2 Mitgliedserver oder Windows 7 Client und einem Domänencontroller nicht mehr funktioniert, entsteht ein typisches Authentifizierungsproblem. Die Lösung für dieses Problem wäre entweder NLTEST auszuführen NLTEST /SC_RESET (NLTEST befindet sich in den Windows Support Tools und ist ab Windows Server 2008 bereits on Bord) oder die Maschine aus der Domäne zu entfernen und erneut hinzuzufügen.

Dieses Problem lässt sich nun auch mit Djoin.exe lösen. Dazu muss man sich entweder an dem betroffenen Windows Server 2008 R2 Mitgliedserver oder Windows 7 Client mit zwischengespeicherten Anmeldeinformationen oder an einem nicht betroffenen Windows Server 2008 R2 Mitgliedserver oder Windows 7 anmelden.

  • Als Erstes muss eine Eingabeaufforderung mit erhöhten Rechten (Start-Alle Programme-Zubehör-Eingabeaufforderung, Rechtsklick --> Als Administrator ausführen) gestartet werden. Danach gilt es diesen Befehl einzugeben:
    Djoin.exe /provision /domain <Domänenname> /reuse /machine <betroffener Computername> /savefile C:\blob.txt

  • Steht kein Windows Server 2008 R2 DC zur Verfügung, so muss der Parameter /downlevel mit angegeben werden:
    Djoin.exe /provision /domain <Domänenname> /reuse /machine <betroffener Computername> /downlevel /savefile C:\blob.txt
  • Wurde der Befehl auf einem nicht betroffenen System ausgeführt, muss der Blob auf das betroffene System kopiert werden.
  • Auf dem betroffenen System gilt es anschließend diesen Befehl, ebenfalls in einer CMD mit erhöhten Rechten auszuführen:
    Djoin.exe /requestodj /loadfile <Pfad zur blob.txt> /windowspath %windir% /localos
  • Zum Abschluss muss der Windows Server 2008 R2 oder Windows 7 neu gestartet werden.
  • Danach sollte der sichere Kanal mit dem folgenden Befehl überprüft werden:
    NLTEST /sc_verify:Domäne.TLD



Hinweis zum Parameter /downlevel

Das Kommandozeilentool Djoin.exe im Windows Server 2008 R2 und Windows 7 verwendet in erster Linie das LDAP-Protokoll um das Computerkonto im AD zu erstellen, was von früheren Betriebssystemversionen so nicht unterstützt wird. Wenn der Parameter /downlevel angegeben wird, wird das SAM-Protokoll verwendet falls das Erstellen des Computerkontos mit dem LDAP-Protokoll fehlschlagen sollte. Daher ist der Parameter /downlevel nur dann erforderlich, wenn kein Windows Server 2008 R2 DC in der Domäne existiert. Denn bei dem Parameter /downlevel wird die SE_MACHINE_ACCOUNT_PRIVILEGE-Berechtigung angewendet, anstatt die direkt auf dem Container erteilten Berechtigungen.

 


Weitere Informationen:
You cannot join a Windows 7 Beta-based or a Windows Server 2008 R2 Beta-based computer to an existing domain, and you receive an error message: "The parameter is incorrect"

Sunday, May 24, 2009 8:12:45 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Sunday, May 10, 2009

Im Active Directory (AD) lassen sich Berechtigungen durch die folgenden Möglichkeiten an die entsprechenden Personen delegieren:

  • Durch den Assistenten zum Zuweisen der Objektverwaltung.
  • Durch das Bearbeiten der Discretionary Access Control List (DACL)  im security descriptor des Objekts.
  • Mit dem Kommandozeilentool DSACLS.

 

Bis auf den Delegierungsassistenten lassen sich mit den beiden anderen Methoden die vergebenen AD-Berechtigungen zum einen anzeigen und zum anderen auch entfernen. Anzeigen sowie Löschen lassen sich die Rechte auch mit dem Kommandozeilentool DSREVOKE.

 

 

 

Der Objektdelegierungsassistent

 

Ein ungeübter Administrator sollte stets den Delegierungsassistenten verwenden, um die notwendigen Berechtigungen an die gewünschten Personen zu delegieren. Doch leider lassen sich die bereits delegierten Rechte auf einem Objekt durch den Objektdelegierungsassistenten weder anzeigen, noch entfernen. Der Assistent dient einzig und alleine dem vergeben von AD-Berechtigungen.


Der Objektdelegierungsassistent


 

 

Die Discretionary Access Control List (DACL)

 

Über die DACL lassen sich zum einen die Zugriffsrechte auf ein bestimmtes AD-Objekt vergeben sowie entfernen und zum anderen, kann man sich die vergebenen Berechtigungen anzeigen lassen. Damit man sich die vergebenen Berechtigungen z.B. auf einer Organisationseinheit (OU) in der grafischen Oberfläche anzeigen lassen kann, muss zuerst in der MMC Active Directory-Benutzer und -Computer unter Ansicht die Option Erweiterte Funktionen aktiviert werden. Danach erscheint in den Eigenschaften der OU der Reiter Sicherheit. Anschließend kann im security descriptor, den erweiterten Sicherheitseinstellungen der OU, die Person ausgewählt und mit einem Klick auf Bearbeiten… die gesetzten Berechtigungen eingesehen werden. Sollen die vergebenen Berechtigungen dem Benutzer entzogen werden, so ist der Benutzer aus der ACL (Access Control List) im Reiter Sicherheit des Objekts, zu entfernen. Ist es hingegen erforderlich bloß eine einzelne Berechtigung z.B. auf ein einziges Attribut dem Benutzer zu entziehen, so kann lediglich der ACE (Access Control Entrie) Eintrag aus der DACL entfernt werden.

 

 

 

 

 

Das Kommandozeilentool DSACLS

 

Der versierte Administrator kann recht einfach und das sogar automatisiert in einem Skript, wiederkehrende Berechtigungen im AD und in AD LDS (Active Directory Lightweight Directory Services, ehemals ADAM) mit DSACLS delegieren. Denn über die Kommandozeile lassen sich die Berechtigungen auf einem AD-Objekt mit DSACLS, das sich unter Windows 2000 sowie Windows Server 2003 in den Windows Support Tools befindet (z.B. auf der Windows Server 2003 CD im Verzeichnis Support\Tools) und ab Windows Server 2008 bereits im Betriebssystem integriert ist, ebenfalls vergeben sowie entfernen. Der Vorteil an diesem Tool ist, dass man aufwändige Berechtigungen skriptbasiert delegieren und im Fehlerfall die vergebenen Berechtigungen leichter entfernen kann.

 

Mit dem folgenden Befehl werden die Berechtigungen für die OU „IT“ (im dsa.msc) in einer TXT aufgelistet:

Dsacls OU=IT,DC=kaan,DC=dikmenoglu,DC=de > C:\Dsacls.txt

 

Das DSACLS eignet sich auch sehr gut dazu, um die standardmäßige Sicherheitseinstellungen eines Objekts wiederherzustellen. Die standardmäßigen Sicherheitsinformationen erhält jedes Objekt durch das Active Directory-Schema. Denn jedes erstellte Objekt erhält durch das im entsprechenden classObject enthaltene Attribut Default-Security-Descriptor seine Sicherheitsinformationen.

Das bedeutet konkret, wenn z.B. ein Benutzer erstellt wird, werden die Sicherheitsinformationen vom Attribut defaultSecurityDescriptor
das in der Klasse User enthalten ist, auf das Benutzerkonto angewendet. Die Klasse User befindet sich in der Schemapartition im Pfad:
CN=User,CN=Schema,CN=Configuration,DC=kaan,DC=dikmenoglu,DC=de.

Dadurch erhält nun jedes Objekt bei seiner Erstellung durch den defaultSecurityDescriptor der jeweiligen Klasse seine Sicherheitsinformationen. Die Sicherheitsinformationen werden im Attribut defaultSecurityDescriptor im security descriptor definition language Format (SDDL-String) angegeben. Ausserdem bekommt das Objekt durch die darüberliegenden Einheiten (Domäne, OU) weitere Berechtigungen vererbt.

Hat man an einem AD-Objekt die Berechtigung so verändert das man den Überblick verloren hat, so lassen sich die Sicherheitseinstellungen die für diese Objektklasse im Schema des AD definiert ist wie folgt wiederherstellen: Dsacls <DN des Objekts> /S


Die Standardberechtigungen der OU
IT in der Domäne kaan.dikmenoglu.de lassen sich wie folgt zurücksetzen:

Dsacls OU=IT,DC=kaan,DC=dikmenoglu,DC=de /S

 

Befinden sich im Distinguished Name (DN) des Objekts Leerzeichen, muss dieser in „Anführungszeichen“ gesetzt werden.


Hinweis für Windows Server 2008: Wird mit dem Parameter /S unter Windows Server 2008 die Berechtigungen eines Objekts zurückgesetzt, erhält man in der Kommandozeile die Fehlermeldung Falscher Parameter und die Meldung Der Befehl wurde nicht erfolgreich ausgeführt. Aber die Berechtigungen werden trotzdem zurückgesetzt. Der Befehl funktioniert.

 

Die Berechtigungen eines einzelnen Benutzers oder einer Gruppe lassen sich mit diesem Befehl entfernen:
Dsacls OU=IT,DC=kaan,DC=dikmenoglu,DC=de /R <DNS- oder NetBIOS Name der Domäne>\<sAMAccountName des Benutzers oder der Gruppe>


Der Befehl mit dem DNS-Namen der Domäne sieht dann so aus:

Dsacls OU=IT,DC=kaan,DC=dikmenoglu,DC=DE /R kaan.dikmenoglu.de\Yusuf

 

Der Benutzer oder die Gruppe kann auch mit dem userPrincipalName (UPN) angegeben werden:

Dsacls OU=IT,DC=kaan,DC=dikmenoglu,DC=DE /R Yusuf@kaan.dikmenoglu.de

 

 

Achtung: Die Parameter in Dsacls sind case-sensitive!

 

 

 

Das Kommandozeilentool DSREVOKE

 

Die vergebenen Berechtigungen können in Form von ACEs (Access Control Entries) auch mit dem Kommandozeilentool DSREVOKE angezeigt und entfernt werden. Dieses Tool muss aber zuerst von Microsoft heruntergeladen werden und kann anschließend unter allen Serverversionen eingesetzt werden (auch unter Windows Server 2008!). ACLs werden (nicht so wie bei DSACLS) bei diesem Tool nicht berücksichtigt.

 

Die einzelnen ACEs eines Benutzers oder einer Gruppe lassen sich mit diesem Befehl anzeigen:

Dsrevoke /Report <DN des Objekts> <NetBIOS Name (nicht DNS-Name!) der Domäne>\<sAMAccountName eines Benutzers oder einer Gruppe>

 

Welche Berechtigungen der Benutzer Yusuf auf der OU IT in der Domäne kaan.dikmenoglu.de hat, lässt sich wie folgt anzeigen:

Dsrevoke /Report OU=IT,DC=kaan,DC=dikmenoglu,DC=de Kaan-Dikmenoglu\Yusuf


 

 

 

 

Die an den Benutzer Yusuf delegierten AD-Berechtigungen auf der OU IT lassen sich mit diesem Befehl entfernen:
Dsrevoke /Remove OU=IT,DC=kaan,DC=dikmenoglu,DC=de Kaan-Dikmenoglu\Yusuf

 

Die anschließende Sicherheitsabfrage zum Löschen muss mit einem “y” bestätigt werden.

 

Alle Berechtigungen eines Benutzers oder einer Gruppe ab einem bestimmten Container wie z.B. einer OU und somit auch von den darunterliegenden Objekten werden mit diesem Befehl entfernt:

Dsrevoke /Remove /root:<DN der OU> <NetBIOS Name der Domäne\sAMAccountName>

 

 

Download details: DSREVOKE.EXE

 

 

 

Weitere Informationen:

Delegierte Berechtigungen im AD verstehen

Objektdelegierungen einrichten

Das aktivieren/deaktivieren eines Benutzerkontos delegieren

How to Use Dsacls.exe in Windows Server 2003 and Windows 2000

When you use the Dsrevoke command-line tool to report permissions for all the organizational units in a Windows Server 2003-based domain, the tool may not return all the access control entries

Sunday, May 10, 2009 8:20:04 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Objektverwaltung  | 
 Sunday, April 26, 2009

Das Active Directory (AD) speichert seine Daten bekanntermaßen in einer Datenbank. Das Herzstück des AD ist die Datenbankdatei, die standardmäßig im Verzeichnis %windir%\NTDS\ gespeichert wird. Diese transaktionale Datenbank und die zugehörige Datenbank-Engine „Extensible Storage Engine (ESE)“, trägt den Namen NTDS.DIT. Dabei steht das „NTDS“ für New Technology Directory Services und das „DIT“ für Directory Information Tree.

Jeder Domänencontroller (DC) in einer Einzel- und Multidomänen-Gesamtstruktur hält seine eigene Kopie dieser AD-Datenbank (NTDS.dit), die kontinuierlich durch lokale Änderungen und durch die Replikationspartner aktualisiert wird. Die AD-Datenbank verändert sich in der Größe zum einen durch die lokalen Änderungen auf dem DC selbst und zum anderen durch die Änderungen die von den Replikationspartnern repliziert werden. Es ist zwingend notwendig, dass die AD-Daten konsistent zwischen den DCs durch die AD-Replikation gehalten werden. Aber die AD-Datenbankdatei ist ohnehin nie bis auf das letzte Bit zwischen mehreren DCs identisch.

Es gibt AD-Daten, die nicht zwischen den DCs repliziert werden. Denn z.B. werden die Indizes die eine performante LDAP-Suche ermöglichen lokal auf jedem DC erstellt. Dies kann bereits zu einem gewissen Maß an Größenunterschied in jeder AD-Datenbankdatei führen. Das einzige was repliziert wird ist die Anweisung, dass ein Attribut im AD indiziert werden soll. Wird in den Eigenschaften eines Attributs im Schema Snap-In die Option Attribut in Active Directory indizieren markiert, repliziert sich diese Änderung bei der nächsten Replikation der Schemapartition auf alle DCs in der Gesamtstruktur.

Die Gründe warum auf zwei DCs die AD-Datenbank unterschiedlich groß ist, sind:

  • Der Whitespace oder zu Deutsch: Der freie Speicherplatz in der AD-Datenbank. Dies trifft dann zu, wenn ein weiterer DC zur Domäne hinzugefügt wird. Wenn ein Server als zusätzlicher DC zu einer Domäne hinzugefügt wird kann es durchaus sein, das die AD-Datenbank des neuen DCs wesentlich kleiner ist als auf den bestehenden DCs. Das ist dann ein klares Indiz für den Whitespace der in der AD-Datenbank auf den bestehenden DCs existiert. Denn wird ein weiterer DC zur Domäne hinzugefügt, wird selbstverständlich nur die Nettokapazität der AD-Datenbank auf den neuen DC repliziert und nicht zusätzlich der unnötige Whitespace.
  • AD-Replikationsprobleme. Bestehen auf einem DC Replikationsprobleme, sei es mit einer oder mit allen Verzeichnispartitionen, bekommt dieser keine Aktualisierungen von seinen Replikationspartnern mehr mit.
  • In einer Multidomänen-Gesamtstruktur ist auf einem DC der globale Katalog (GC) aktiviert und auf dem anderen nicht. Oder auf einem DC wurde der GC „unbemerkt“ deaktiviert.


Die Ursachen in der Praxis sind in der Regel der Whitespace und AD-Replikationsprobleme, die den Unterschied zwischen den AD-Datenbankdateien ausmachen.

 


Der Whitespace in der AD-Datenbank

Der Whitespace in der AD-Datenbank entsteht folgendermaßen.

Wenn ein AD-Objekt gelöscht wird, verschwindet es nicht sofort aus der AD-Datenbank. Das AD markiert das Objekt als gelöscht, indem das Attribut Is-Deleted des Objekts auf TRUE gesetzt wird. Dabei werden von dem Objekt die meisten Attribute für immer entfernt und wandert anschließend in den Container „Deleted Objects“ (der in fast allen Verzeichnispartitionen existiert). Ab diesem Zeitpunkt wird das gelöschte Objekt als Tombstone (zu deutsch: Grabstein) bezeichnet.

Die gelöschten Objekte bleiben nun so lange im Container „Deleted Objects“ und somit in der AD-Datenbank erhalten, bis die Tombstone-Lifetime (TSL) abgelaufen ist. Erst wenn ein gelöschtes Objekt die TSL überschritten hat wird es endgültig vom Garbage Collection Prozess aus der AD-Datenbank entfernt. Der Garbage Collection Prozess läuft standardmäßig im 12-Stunden-Takt auf jedem DC in der Gesamtstruktur. Die Zeit lässt sich zwar verändern, jedoch ist das beim täglichen Betrieb nicht notwendig.

Ändern könnte man die Zeit durch das Attribut garbageCollPeriod, welches sich in den Eigenschaften des folgenden Containers befindet (die Angabe der Zeit muss in Stunden erfolgen):
CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne



Wenn die Objekte unwiderruflich aus dem AD entfernt wurden, entsteht freier Speicherplatz (der sogenannte Whitespace) in der AD-Datenbank. Die Datenbankseiten auf denen die Objekte gespeichert waren, werden als frei markiert. Physikalisch wird aber dadurch die AD-Datenbank auf der Festplatte nicht kleiner. Stattdessen werden beim Hinzufügen neuer AD-Objekte diese auf den freien Datenbankseiten geschrieben, ohne dabei eine Speicheroptimierung bei späteren Abfragen dieser Objekte zu berücksichtigen. Durch das wiederbeschreiben der freien Datenbankseiten wird die Gesamtgröße der AD-Datenbank nicht größer. Zwar findet standardmäßig alle 12-Stunden durch den Garbage Collection Prozess auf jedem DC eine Onlinedefragmentierung der AD-Datenbank im laufenden Betrieb statt, jedoch wird dabei die AD-Datenbank ebenfalls nicht kleiner. Ob die Onlinedefragmentierung zweimal am Tag auch wirklich stattfindet, kann im Verzeichnisdienstprotokoll auf jedem DC kontrolliert werden. Denn beim Starten der Onlinedefragmentierung wird die EventID 700 und wenn sie abgeschlossen wurde, die EventID 701 protokolliert.

Bei der Onlinedefragmentierung werden lediglich die leeren Datenbankseiten neu angeordnet um einen zusammenhängenden freien Speicherplatz in der AD-Datenbank zu schaffen. Somit wird die durch die endgültige Löschung der AD-Objekte bedingte Fragmentierung der AD-Datenbank beseitigt und dadurch der Zugriff auf das AD optimiert bzw. beschleunigt. Bei den heutigen Festplattenpreisen ist es aber auch keineswegs tragisch das die AD-Datenbank physikalisch nicht kleiner wird. Dennoch ist es aus Performancegründen empfehlenswert, dass die AD-Datenbank „nur“ so groß ist, damit sie noch in den Arbeitsspeicher des DCs geladen werden kann.

Wie viel freier Speicherplatz in der AD-Datenbank tatsächlich existiert, kann durch eine Registry-Einstellung herausgefunden werden. Dazu gilt es im folgenden Registry-Schlüssel diese Einstellung vorzunehmen:

HKLM\System\CurrentControlSet\Services\NTDS\Diagnostics
"6 Garbage Collection" = 1 (REG_DWORD)




Anschließend wird beim nächsten Durchlauf des Garbage Collection Prozesses, im Verzeichnisdienstprotokoll des DCs die EventID 1646 protokolliert. In dem Eintrag wird der freie Speicherplatz neben der Gesamtgröße der AD-Datenbank angegeben.


 

Es reicht in der Regel aus diese Registry-Einstellung nur auf einem DC in der Domäne zu konfigurieren, da sicherlich der freie Speicherplatz auf allen bestehenden DCs (bei gleicher DC Konfiguration) gleich ist.

Eine andere Variante mit der man sich einen tieferen Einblick über die Größe des freien Speicherplatzes in Form von leeren Datenbankseiten sogar der einzelnen Indizes in der AD-Datenbank verschaffen kann, wäre mit Esentutl. Dazu muss jedoch das AD offline sein. Bis einschließlich Windows Server 2003 muss hierzu der DC im Modus Verzeichnisdienstwiederherstellung gestartet werden. Unter Windows Server 2008 lässt sich dagegen der Dienst Active Directory-Domänendienste samt den abhängigen Diensten im laufenden Betrieb mit dem Kommandozeilenbefehl net stop ntds /y anhalten. Danach wird mit dem Befehl Esentutl /ms <Pfad zur Ntds.dit> oder durch das Aufrufen von Esentutl aus dem NTDS-Verzeichnis C:\Windows\NTDS>Esentutl /ms ein detaillierter Auszug der Ntds.dit erstellt. Es ist auch möglich die AD-Datenbank aus einer System State-Sicherung an einer alternativen Stelle wiederherzustellen, um diese AD-Datenbank zum überprüfen des freien Speicherplatzes zu nutzen. In der AD-Datenbank wird jede Tabelle zusammen mit der Anzahl der Datenbankseiten die es besitzt, samt der Anzahl der leeren Datenbankseiten die zur Verfügung stehen aufgelistet.



Damit die AD-Datenbank physikalisch kleiner wird, ist eine Offlinedefragmentierung notwendig. Natürlich müsste die Offlinedefragmentierung auf jedem DC erfolgen, damit die AD-Datenbank auf jedem DC auch physikalisch kleiner wird. Aber in den allermeisten AD-Umgebungen ist eine Offlinedefragmentierung nicht nötig. Wobei es jedoch in größeren AD-Gesamtstrukturen wiederum des Öfteren notwendig sein kann, eine Offlinedefragmentierung durchzuführen.


 

Wann ist eine Offlinedefragmentierung empfehlenswert?

  • Nach einer größeren Löschaktion im AD ist es empfehlenswert, wenn nach Ablauf der Tombstone-Lifetime die gelöschten Objekte endgültig aus der AD-Datenbank entfernt wurden, eine Offlinedefragmentierung der AD-Datenbankdatei durchzuführen.
  • In einer Multidomänen-Gesamtstruktur ist es ratsam, nach der Deaktivierung des globalen Katalogs auf einem DC eine Offlinedefragmentierung der AD-Datenbank durchzuführen.
  • Des Weiteren ist nach einem Inplace-Update eines Windows 2000 DCs auf Windows Server 2003/2008 eine Offlinedefragmentierung empfehlenswert. Nach einem Inplace-Update von Windows 2000 entsteht in der AD-Datenbankdatei eine erhebliche Menge an freiem Speicherplatz. Das ist aufgrund einer Verbesserung ab Windows Server 2003 möglich, worin eindeutige „security descriptors“ nur einmal (Single Instance Store) und nicht jedes Mal wenn sie verwendet werden in der AD-Datenbank gespeichert werden.
  • Wenn die DNS-Daten aus der Domänenpartition in die Anwendungsverzeichnispartitionen (DomainDNSZones und ForestDNSZones) umgezogen werden, wie es z.B. nach einer Domänenaktualisierung von einer Windows 2000 Domäne zu einer Windows Server 2003 bzw. Windows Server 2008 Domäne der Fall sein könnte, entsteht ebenfalls freier Speicherplatz in der AD-Datenbank (genauer in der Domänenpartition). Die Größe der AD-Datenbank lässt sich dann mit einer Offlinedefragmentierung verkleinern.


Die Größe unter anderem der AD-Datenbank kann man sich mit dem folgenden Befehl anzeigen lassen:
FOR /f %i IN ('Dsquery Server -Domain %userdnsdomain% -o Rdn') DO dir \\%i\Admin$\NTDS




Eine Offlinedefragmentierung durchführen

Die Gesamtgröße der AD-Datenbank wird ausschließlich nur durch eine Offlinedefragmentierung verringert. Diese sollte beim Entfernen einer größeren Anzahl an AD-Objekten, nach dem Entfernen eines globalen Katalogs in einer Multidomänen-Gesamtstruktur, nach einem Inplace-Update eines Windows 2000 DCs auf Windows Server 2003/2003R2/2008 und nach dem Umzug der DNS-Daten aus der Domänenpartition in die Anwendungsverzeichnispartition durchgeführt werden.

Die Offlinedefragmentierung wird folgendermaßen durchgeführt:

  • Zuerst sollte eine System State-Sicherung des DCs durchgeführt werden.
  • Damit eine Offlinedefragmentierung der AD-Datenbank auf einem DC durchgeführt werden kann, muss unter Windows 2000 und Windows Server 2003 der DC im Modus Verzeichnisdienstwiederherstellung gestartet werden. In diesen Modus gelangt man, wenn während der Bootphase des DCs die F8-Taste betätigt und die Option „Verzeichnisdienstwiederherstellung“ ausgewählt wird.
  • Ab Windows Server 2008 ist das Starten im Modus „Verzeichnisdienstwiederherstellung“ nicht notwendig (was aber möglich wäre). Ab einem Windows Server 2008 DC kann der Dienst Active Directory-Domänendienste im laufenden Betrieb entweder in der Dienstesteuerung (services.msc) oder in der Kommandozeile mit dem Befehl net stop ntds /y samt den abhängigen Diensten angehalten werden.

    Active Directory-Domänendienste (AD-DS)
  • In der Eingabeaufforderung oder unter „Start-Ausführen“ gilt es das NTDSUTIL aufzurufen.
  • Ab Windows Server 2008 muss als erstes mit dem Befehl Activate Instance NTDS die NTDS-Instanz aktiviert werden. Unter Windows 2000 und Windows Server 2003/2003R2 muss dieser Schritt übersprungen werden.
  • Als nächstes gilt es den Befehl Files einzugeben.
  • In der „file maintenance“ Ebene werden mit dem Befehl info die aktuellen Informationen über den Pfad und der Größe der AD-Datenbank sowie der zugehörigen Protokolldateien angezeigt. Der Pfad zur AD-Datenbankdatei sollte notiert werden (zumindest sollte man ihn sich merken).
  • Mit dem Befehl compact to <Laufwerk>:\<Verzeichnis> wird eine neue, komprimierte AD-Datenbankdatei im angegebenen Verzeichnis erstellt. Es sollte ein Laufwerk und Verzeichnis an dem ausreichend Speicherplatz zur Verfügung steht ausgewählt werden, um die komprimierte neue AD-Datenbankdatei Ntds.dit zu speichern. Falls im Namen des Verzeichnispfads Leerzeichen enthalten sind, muss der Pfad in Anführungszeichen stehen. Z.B. compact to "C:\Neu NTDS".
  • Sobald die Offlinedefragmentierung abgeschlossen ist, gilt es mit der zweimaligen Eingabe von quit das NTDSUTIL zu verlassen.
  • Nun muss die neu erstellte defragmentierte Datenbankdatei "Ntds.dit" über die alte Datei "Ntds.dit" im aktuellen Pfad zur Active Directory-Datenbank (der in Schritt vier notiert bzw. gemerkt wurde), kopiert werden. Anschließend sind noch die alten Protokolldateien (*.log) zu löschen.
  • Das Kopieren der Datenbankdatei kann auch über die Kommandozeile mit folgendem Befehl erfolgen: Copy „C:\Neu NTDS\Ntds.dit“ „C:\Windows\NTDS\Ntds.dit“
    Die darauffolgende Sicherheitsabfrage muss mit einem „
    j“ bestätigt werden.
  • Die alten Protokolldateien können in der Kommandozeile mit diesem Befehl gelöscht werden:
    Del „C:\Windows\NTDS\*.log“
  • Danach gilt es den DC neu zu starten. Unter Windows Server 2008 wird mit net start ntds der Dienst Active Directory-Domänendienste samt den abhängigen Diensten gestartet.
  • Zum Schluss sollte noch eine System State-Sicherung mit der neuen Größe der Ntds.dit durchgeführt werden.


 


AD-Replikationsprobleme

Ein weiterer Grund warum zwischen zwei DCs die AD-Datenbank unterschiedlich groß ist, könnten AD-Replikationsprobleme sein. Hinweise ob es bei der AD-Replikation Probleme gibt, liefert bereits das Verzeichnisdienstprotokoll der DCs. Ein entscheidender Faktor bei der AD-Replikation ist die Tombstone-Lifetime (TSL). Denn DCs müssen sich mindestens einmal während der TSL mit ihren Replikationspartnern repliziert haben, da ansonsten Lingering Objects (herumlungernde Objekte) in der AD-Datenbank des DCs entstehen und die Replikationspartner den „veralteten“ DC von der AD-Replikation ausschließen.

Lingering Objects (veraltete Objekte)


Oftmals handelt es sich bei Replikationsproblemen um DNS-Probleme, denn für eine AD-Umgebung ist das DNS essentiell. Bevor ein DC die AD-Replikation startet führt dieser zuerst ein DNS-Lookup durch. Somit stellt der DC zwei Dinge sicher, zum einen das sein Replikationspartner online und funktionstüchtig ist und zum anderen, das die Namensauflösung funktioniert. Daher muss bei Replikationsproblemen die Umgebung genauestens untersucht und verifiziert werden, um welche Probleme es sich tatsächlich handelt.

Das nützlichste Werkzeug für die Überprüfung und Problembehandlung bei der AD-Replikation ist für alle Serverversionen Repadmin. Bis einschließlich „Windows Server 2003“ befindet sich Repadmin noch in den Windows Support Tools (auf der Server CD im Verzeichnis Support\Tools) und ab „Windows Server 2008“ ist es „on Bord“. Dieses Tool stellt quasi das Schweizer Messer für die AD-Replikation dar. Mit diesem Kommandozeilentool lässt sich die Replikationstopologie aus der Sicht jedes einzelnen DCs anzeigen.

Den Zustand der AD-Replikation kann man z.B. mit diesem Repadmin-Befehl überprüfen:
Repadmin /Replsum * /Bysrc /Bydest /Sort:Error

Die Replikationsinformationen auf einem DC lassen sich auch in eine CSV-Datei importieren, damit diese Datei z.B. in Excel geöffnet und leichter durchsucht werden kann. Der Befehl ist wie folgt:

Repadmin /showrepl * /csv > C:\Repadmin.csv


Eine andere Methode um Differenzen zwischen den AD-Datenbanken aufzudecken, ist neben
Repadmin das DSASTAT. Details dazu liefert der folgende Artikel:

Domänencontroller vergleichen


Es könnte aber auch sein, dass ein Problem in der AD-Datenbank auf einem DC existiert. Dieses lässt sich mit einer Überprüfung der AD-Datenbankdatei herausfinden. Dazu sollte die Integrität der Ntds.dit mit NTDSUTIL untersucht und falls bei der Überprüfung Probleme gemeldet werden, könnten diese sich evtl. mit einem Fixup beheben lassen.

Siehe:
Die Active Directory-Datenbank reparieren




Die unterschiedliche Größe der AD-Datenbank zwischen globalen Katalogen

Wenn in einer Multidomänen-Gesamtstruktur auf einem DC der globale Katalog (GC) aktiviert wird, werden alle AD-Objekte aus allen Domänen in den GC repliziert. Im GC wird die vollständige Domänenpartition (alle Objekte samt allen Attributen) der eigenen Domäne gespeichert, in der sich der GC befindet. Die Domänenpartitionen der anderen Domänen werden ebenfalls in den GC repliziert, es werden jedoch nicht alle Attribute der Objekte gespeichert. Nur die Attribute die für eine Suchoperation relevant sein könnten (z.B. der DN eines Objekts) werden gespeichert.

Wird auf einem DC der GC aktiviert, gibt sich dieser nach Beendigung der Replikation im DNS als solcher bekannt. Das der DC endgültig ein GC ist, wird im Verzeichnisdienstprotokoll mit der EventID 1119 (was zwingend erscheinen muss!) protokolliert.

Ob das Heraufstufen eines DCs zum GC erfolgreich abgeschlossen wurde, lässt sich anhand des folgenden Artikels ermitteln:

Globaler Katalog – Sein oder nicht sein


Falls das Heraufstufen zum GC ordnungsgemäß abgeschlossen wurde und sich die lokale AD-Datenbankdatei dennoch von anderen GCs in der Größe wesentlich unterscheidet (z.B. 50%), so könnte ein DNS- und/oder Replikationsproblem vorliegen. Auch hierbei muss dann ein tiefergehendes Troubleshooting betrieben und die AD-Replikation mit Repadmin untersucht werden. Bei der Fehlersuche sollte die erste Anlaufstelle die Ereignisanzeige des DCs sein, DCDIAG sollte ausgeführt werden und bei Verdacht auf DNS-Probleme könnte man neben dem DCDIAG (mit den DNS-Parametern) noch das DNSLint ausführen.

 


Weitere Informationen:
Die Tombstone Lifetime
Globaler Katalog (Global Catalog - GC)
Die Protokollierung des Active Directory`s konfigurieren
Extensible Storage Engine Architecture
The Active Directory database garbage collection process
Performing offline defragmentation of the Active Directory database

Sunday, April 26, 2009 6:55:33 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Replikation  | 
 Sunday, April 12, 2009

Im Windows Server 2008 R2 ist ein weiteres neues Werkzeug integriert, das sich Active Directory-Verwaltungscenter (dsac.exe) nennt. Die neue Managementkonsole mit flexiblen Filtermöglichkeiten basiert auf der Powershell Version 2 und stellt im Prinzip eine grafische Shell für die Powershell dar. Denn nach dem die auszuführende Aufgabe in der Konsole ausgewählt wurde, führt dsac.exe die entsprechenden AD-Cmdlets aus. Jede Lese- und Schreibaktion im AD-Verwaltungscenter wird über die AD-Powershell durchgeführt. Das neue Werkzeug verringert den allgemeinen administrativen Aufwand, der in einer AD-Umgebung täglich zu bewältigen ist. Mit dieser neuen aufgabenbasierten Managementkonsole, beginnt im neuen Server-Betriebssystem die MMC 4 Ära.

Die im Vergleich zu der MMC „Active Directory-Benutzer und -Computer“ abgespeckte Managementkonsole „Active Directory-Verwaltungscenter“, ist in erster Linie eher an den Systemadministrator bzw. an den First-Level Support gerichtet. Denn es stehen nicht die gleichen Funktionen wie in der MMC Active Directory-Benutzer und -Computer (dsa.msc) zur Verfügung. Daher kann der AD-Administrator nicht auf die MMC dsa.msc verzichten (auch wenn es theoretisch möglich wäre). Die Personen denen die entsprechenden Rechte im AD delegiert wurden, können mit der neuen Konsole effektiver ihren täglichen Routineaufgaben nachgehen als mit der MMC dsa.msc. Gerade in größeren AD-Umgebungen mit mehreren Domänen spielt dieses Werkzeug seine Stärken aus.

Das AD-Verwaltungscenter ist, neben der AD-Powershell, von dem Dienst Active Directory-Webdienste (ADWS) abhängig, das erst ab Windows Server 2008 R2 zur Verfügung steht. Dsac.exe ist nicht auf die RPC- oder LDAP-Schnittstelle angewiesen. Daher muss in den vertrauten Domänen oder in der vertrauten Gesamtstruktur mindestens ein Windows Server 2008 R2 DC existieren oder das AD Management Gateway Service muss auf einem Windows Server 2003 DC bzw. Windows Server 2008 DC installiert sein, damit dsac.exe remote ausgeführt werden kann. Auf dem Windows Server 2008 R2 DC auf dem dieser Dienst läuft, darf der TCP-Port 9389 von der evtl. aktivierten lokalen Windows-Firewall nicht blockiert werden. Läuft der Dienst AD-Webdienste nicht oder ist dieser wegen einer Firewall nicht erreichbar, funktioniert das dsac.exe nicht.

Damit eine Windows Server 2003 oder Windows Server 2008 Umgebung mit dem AD-Verwaltungscenter (neben der AD-Powershell) administriert werden kann, muss das AD Management Gateway Service installiert werden:

Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008



Das AD-Verwaltungscenter kann lediglich zur Verwaltung von AD DS-Domänen und nicht von AD LDS-Umgebungen eingesetzt werden!


 

Welche Funktionen stehen im AD-Verwaltungscenter gegenüber der MMC „AD-Benutzer und -Computer“ nicht zur Verfügung?

  • Ein Drag & Drop ist nicht möglich.

  • Es steht keine Delegierungsfunktion zur Verfügung.

  • Die FSMO-Rollen der Domäne können nicht angezeigt werden, wie in der MMC dsa.msc.



Was kann mit dem AD-Verwaltungscenter alles durchgeführt werden?

  • Mit dem AD-Verwaltungscenter können neue Benutzerkonten erstellt oder bestehende verwaltet werden.

  • Es können neue Gruppenkonten erstellt oder bestehende verwaltet werden.

  • Es können mehrere Objekte gleichzeitig ausgewählt und bearbeitet werden.

  • Neue OUs können erstellt bzw. bestehende verwaltet werden.

  • Auch neue Computerkonten können erstellt oder bestehende verwaltet werden.

  • Es ist möglich in der gleichen dsac.exe Instanz, sich mit mehreren Domänen oder Domänencontrollern zu verbinden und sich die AD-Informationen anzuzeigen bzw. Änderungen durchzuführen.

  • Durch die vorgegebenen oder eigens kreierten Filter (bei der globalen Suche) können lediglich die benötigten AD-Objekte angezeigt werden.

  • Im Gegensatz zu dsa.msc lässt sich aus dem AD-Verwaltungscenter neben dem Domänen- nun auch der Gesamtstrukturfunktionsmodus heraufstufen.




Die Installation des AD-Verwaltungscenter


Das AD-Verwaltungscenter kann ausschließlich auf Windows Server 2008 R2 und Windows 7 Clients, auf folgende Varianten installiert werden:

  • Durch das Installieren der AD DS-Rolle auf einem Windows Server 2008 R2.

  • Durch das Heraufstufen eines Windows Server 2008 R2 zu einem Domänencontroller.

  • Durch das Installieren der RSAT auf einem Windows Server 2008 R2.

  • Durch das Installieren der RSAT auf einem Windows 7 Client.


Das AD-Verwaltungscenter wird zusammen mit dem „Active Directory-Modul“ für die Windows PowerShell und dem .NET Framework 3.5.1 installiert. Diese beiden Komponenten sind, neben dem Dienst AD-Webdienste, die Voraussetzung damit das AD-Verwaltungscenter eingesetzt werden kann.




Das Arbeiten mit dem AD-Verwaltungscenter

Wenn das AD-Verwaltungscenter gestartet wird, sticht das zurücksetzen der Benutzerkennwörter sowie das entsperren von Benutzerkonten ins Auge. Diese beiden Optionen sind einer der meisten Fehlerquellen mit denen sich der Administrator im täglichen Leben beschäftigen muss. Des Weiteren sieht man in der linken Hälfte der Managementkonsole den Navigationsbereich. Dort kann man sich durch die einzelnen Container durch hangeln. Die oft besuchten Container werden dabei für den schnellen Zugriff direkt angezeigt.


 



Das Erstellen eines neuen Benutzerkontos sieht wie folgt aus. Es lassen sich die Kontooptionen, Organisationsinformationen, Gruppenmitgliedschaften und Profileinstellungen in einem Schritt konfigurieren.




In der Domäne oder in einer bestimmten OU lassen sich die Objekte anhand der vorgegebenen Filtermöglichkeiten sogar mit zusätzlichen Attributen anzeigen.


 



Natürlich kann man auch entsprechende Suchkriterien für Computerkonten auswählen.




Bei der globalen Suche kann man sich mit den vorgegebenen oder selbst erstellten Filtermöglichkeiten die gewünschten Objekte anzeigen lassen. Dabei kann man auch nach der Auswahl der vorgegebenen Filtermöglichkeiten, den echten LDAP-Filter anzeigen lassen.





Des Weiteren ist es wie im Windows Explorer möglich, durch die Eingabe eines bestimmten LDAP-Pfads in der Adresszeile direkt in die gewünschte OU zu navigieren.


 

Sunday, April 12, 2009 11:45:20 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Sunday, March 08, 2009
Endlich wird es in Zukunft auch einen Best Practice Analyzer (BPA) für die Active Directory Domain Services (kurz AD DS-BPA) geben. Der BPA der bereits seit längerem für verschiedene Microsoft Produkte existiert (Siehe Abschnitt „Weitere BPAs“), ist für viele Administratoren ein unverzichtbares Werkzeug. Denn mit dem BPA lassen sich Konfigurationsprobleme schnell und einfach aufspüren.

Der BPA für die AD DS-Rolle wird erstmals im Windows Server 2008 R2 eingeführt und hilft dem Administrator dabei, Best Practices bei der Konfiguration der AD DS-Umgebung zu implementieren. Ein oder mehrere DCs lassen sich gegen eine Reihe von vordefinierten Best Practices überprüfen. Der AD DS-BPA erstattet nach der Durchführung Bericht, ob der DC mit den Best Practices kompatibel oder nicht konform ist.

Wenn die AD DS-Umgebung installiert und alles Notwendige konfiguriert wurde, ist es empfehlenswert die durchgeführten Konfigurationen anschließend auf Fehler zu überprüfen. Doch dies ohne den AD DS-BPA zu verifizieren ist gar nicht so einfach und dauert unter Umständen viele Stunden. Aber mit dem neuen AD DS-BPA lassen sich schnell und einfach Konfigurationsfehler und Schwachstellen in der AD DS-Umgebung auf Knopfdruck aufspüren.

Der AD DS-BPA lässt sich zum einen über die grafische Oberfläche und zum anderen, über die Powershell-Kommandozeile ausführen. In der grafischen Oberfläche befindet sich der AD DS-BPA ausschließlich im Server Manager des Windows Server 2008 R2. Der Server Manager ist erstmals auch in den RSAT für den Windows 7 Client enthalten.

Der BPA scannt die AD DS-Rolle so wie sie auf dem Windows Server 2008 R2 DC konfiguriert ist. Nach der Durchführung werden im Server Manager in den Reitern „Nicht Kompatibel“ und „Kompatibel“ die Ergebnisse angezeigt. Ein Ergebnis kann dabei als „Schweregrad“ Fehler, Warnung oder Kompatibel enthalten.



Bei Fehlern die im Reiter „Nicht Kompatibel“ angezeigt werden und somit gegen die „Best Practices“ verstoßen (wenn z.B. kein DNS-Server für die Domäne erreichbar ist), werden in der Beschreibung die Punkte „Problem“, „Auswirkung“ und „Lösung“ angezeigt. Durch die genauen Angaben erfährt man, welche Auswirkung das gefundene Problem hat und vor allem, wie es sich lösen lässt.

Die Ergebnisse können gefiltert werden, indem einzelne Berichte für die zukünftigen Durchführungen des BPA vorübergehend ausgeschlossen und zu einem späteren Zeitpunkt erneut einbezogen werden.

Im AD DS-Umfeld steht der BPA unter Windows Server 2008 R2 vorerst für die folgenden Rollen zur Verfügung:

  • Active Directory Certificate Services
  • Active Directory Domain Services
  • DNS Server


Der BPA wird über die “Windows Updates” stetig verbessert und erweitert.


 

Was ist möglich?

  • Der AD DS-BPA lässt sich über den Server Manager oder über die Powershell, nur auf Windows Server 2008 R2 DCs ausführen.

  • Der AD DS-BPA kann über den Server Manager oder über die Powershell lokal und remote auf einem Windows Server 2008 R2 Vollinstallation, Windows Server 2008 R2 RODC und Windows Server 2008 R2 Core ausgeführt werden.

  • Auf einem Windows Server 2008 R2 Core kann lokal der AD DS-BPA ausschließlich über die Powershell ausgeführt werden, da der Server Manager in der grafischen Oberfläche auf einem Windows Server 2008 R2 Core nicht existiert.

  • Von einem Windows 7 Client worauf das RSAT (Remote Server Administration Tools) installiert ist, kann der AD DS-BPA über den Server Manager oder über die Powershell remote auf einem Windows Server 2008 R2 Vollinstallation oder Windows Server 2008 R2 Core ausgeführt werden.

  • Nur über die Powershell können mehrere Rollen zur gleichen Zeit überprüft werden (z.B. die AD DS- und DNS-Rolle).

 


Was ist nicht möglich?

  • Der Server Manager vom Windows Server 2008 R2, worin sich der AD DS-BPA befindet, lässt sich nicht auf Windows 2000, Windows Server 2003/2003 R2 oder Windows Server 2008 installieren.

  • Der AD DS-BPA lässt sich nicht über den Server Manager remote auf einen Windows 2000 DC, Windows Server 2003/2003 R2 DC und Windows Server 2008 DC ausführen.

  • Der AD DS-BPA lässt sich nicht über die Powershell remote auf einen Windows 2000 DC, Windows Server 2003/2003 R2 DC und Windows Server 2008 DC ausführen.


 

Wie wird der AD DS-BPA im Server Manager installiert?

Sobald auf einem Windows Server 2008 R2 Vollinstallation die AD DS-Rolle installiert und dieser zum Domänencontroller gestuft wird, steht der AD DS-BPA automatisch im Server Manager zur Verfügung. Es ist auch nicht notwendig weitere Komponenten zu installieren um den AD DS-BPA zu nutzen.

Auf einem Windows Server 2008 R2 Core kann der AD DS-BPA lokal ausschließlich über die Powershell ausgeführt werden.




Die Bestandteile des AD DS-BPA

Der Server-Manager im Windows Server 2008 R2 beinhaltet eine Engine mit dem der AD DS-BPA ausgeführt wird. Dabei besteht der AD DS-BPA aus den folgenden Komponenten:

  • AD DS-BPA PowerShell Skript: Das Skript sammelt AD DS-Konfigurationsdaten und speichert sie in ein XML-Dokument.

  • XML-Schema: Das Schema definiert das Format des XML-Dokuments, das vom AD DS-BPA PowerShell Skript erzeugt wurde.

  • AD DS-BPA Regeln: Die Regeln definieren die Best Practice-Konfiguration einer AD DS Umgebung.

  • AD DS-BPA Leitfaden: Diese Informationen helfen dem Administrator ihre AD DS-Umgebung entsprechend den Best Practices zu konfigurieren.




Die Funktionsweise des AD DS-BPA

Wenn der AD DS-BPA auf einem DC ausgeführt wird, werden die folgenden Schritte durchgeführt:

  • Die BPA Engine sammelt in der bestehenden AD DS-Umgebung mit dem „AD DS-BPA Powershell Skript“ Informationen über die AD DS-Konfiguration und speichert sie in ein XML-Dokument.

  • Danach wird das XML-Dokument gegen das „XML-Schema“ validiert.

  • Nach dem Anwenden der „AD DS-BPA Regeln“ auf das XML-Dokument wird anschließend ein Bericht anhand des „AD DS-BPA Leitfaden“ erstellt.




Den AD DS-BPA lokal in der grafischen Oberfläche ausführen

Der AD DS-BPA lässt sich mit der Maus im Server Manager eines Windows Server 2008 R2 DCs Vollinstallation ausführen. Dort findet man ihn nach Auswahl der Rolle Active Directoy-Domänendienste in der Zusammenfassung.


 

Das Ausführen des AD DS-BPA lokal auf einem Windows Server 2008 R2 DC Vollinstallation, in der AD-Powershell

In der Powershell-Kommandozeile lässt sich der AD DS-BPA ebenfalls ausführen.

  • Als erstes gilt es das Server Manager-Modul mit dem folgenden Befehl in die Powershell-Sitzung zu importieren.
    Import-Module ServerManager

  • Im zweiten Schritt muss das BPA-Modul mit diesem Befehl importiert werden.
    Import-Module BestPractices

  • Mit diesem Befehl werden alle verfügbaren BPAs aufgelistet.
    Get-BPAModel

  • Nach der Durchführung des AD DS-BPA werden die Ergebnisse mit diesem Befehl angezeigt.
    Get-BPAResult Microsoft/Windows/DirectoryServices

  • Die AD DS-Rolle wird mit diesem Befehl überprüft.
    Invoke-BPAModel Microsoft/Windows/DirectoryServices

  • Einzelne Ergebnisse werden mit diesem Befehl ausgeschlossen bzw. erneut einbezogen.
    Set-BPAResult


 

Den AD DS-BPA remote im Server Manager ausführen

Mit dem Server Manager lässt sich nun auch unter Windows Server 2008 R2 wie es bei MMCs üblich ist, remote eine Verbindung zu anderen Servern aufbauen. Das war vor Windows Server 2008 R2 nicht möglich. Der Server Manager steht unter Windows Server 2008 R2 sowie auf dem Windows 7 Client nach dem Installieren der RSAT zur Verfügung.





Doch bevor man sich mit dem Server Manager zu einem anderen DC verbinden kann, muss der zu verwaltende DC dies vorher zulassen. Das Zulassen für die Remoteverwaltung kann ebenfalls im Server Manager erfolgen. Die notwendigen Einstellungen werden bei aktivierter Windows-Firewall automatisch vorgenommen.



Über die Powershell muss auf dem zu verwaltenden DC zuerst der Befehl set-executionPolicy -executionPolicy remotesigned ausgeführt werden. Alle dazu benötigten Windows-Firewalleinstellungen werden durch diesen Befehl Configure-SMRemoting.ps1 -force -enable vorgenommen.

Anschließend lässt sich die AD DS-Rolle auf einem beschreibbaren Windows Server 2008 R2 DC, Windows Server 2008 R2 RODC oder Windows Server 2008 R2 Core DC von der Ferne aus überprüfen.


 

Den AD DS-BPA lokal auf einem Windows Server 2008 R2 Core DC ausführen

Ein lokales Ausführen des AD DS-BPA auf einem Windows Server 2008 R2 Core DC ist nur über die Powershell möglich. Die Powershell ist jedoch standardmäßig nicht installiert. Dazu müssen die folgenden Features installiert werden:

  • start /w ocsetup NetFx3-ServerCore

  • start /w ocsetup ServerCore-WOW64

  • start /w ocsetup MicrosoftWindowsPowerShell

  • start /w ocsetup MicrosoftWindowsPowerShell-WOW64

  • start /w ocsetup ActiveDirectory-PowerShell


Achtung: Die Featurenamen sind case sensitive!


Nach der Installation der Features, lässt sich die Powershell aus dem Verzeichnis
%windir%\system32\windowspowershell\v1.0 mit dem Befehl powershell aufrufen. Anschließend gilt es die folgenden Powershell-Module zu laden:

  • import-module activedirectory
  • import-module servermanager
  • import-module bestpractices

Überprüfen lässt sich danach die AD DS-Rolle mit diesem Befehl:
Get-WindowsFeature AD-Domain-Services | invoke-bpamodel


Die Ergebnisse nach der Durchführung des AD DS-BPAs lassen sich mit diesem Befehl anzeigen:
Get-WindowsFeature AD-Domain-Services | get-bparesult




Den AD DS-BPA remote auf einem Windows Server 2008 R2 Core DC ausführen

Bevor man den AD DS-BPA von der Ferne aus über den Server Manager oder über die AD-Powershell auf einem Windows Server 2008 R2 Core ausführen kann, muss zuerst auf dem Server Core die Fernadministration erlaubt werden. Mit dem folgenden Befehl werden die entsprechenden Konfigurationen in der Windows-Firewall vorgenommen: winrm quickconfig.

Anschließend kann man mit dem Server Manager oder über die Powershell von einem Windows Server 2008 R2 oder von einem Windows 7 Client (mit installierten RSAT) remote den AD DS-BPA auf einem Windows Server 2008 R2 Core DC ausführen.


 

Weitere BPAs für verschiedene Microsoft Produkte

Für Gruppenrichtlinien, Exchange, ISA, SQL und einige mehr gibt es den BPA schon seit längerer Zeit.

Sunday, March 08, 2009 10:43:39 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell | Installation  | 
 Sunday, February 22, 2009

Immer wieder haben Administratoren Probleme mit dem Kennwort für den Verzeichnisdienstwiederherstellungsmodus. Sie gehen zu leichtfertig und unbedacht mit diesem hochsensiblen Kennwort um und wissen oftmals nicht, für was dieses Kennwort benötigt wird. Sie schreiben sich das Kennwort bei der Vergabe nicht auf und wissen es im Ernstfall nicht mehr. Das man das Kennwort seit Windows 2000 im laufenden Betrieb eines DCs ändern kann, ist ebenfalls vielen unbewusst. Um diesen Zustand bis zu einem gewissen Grad zu mildern sowie zu garantieren, dass das Kennwort konsistent bleibt, hat sich Redmond etwas einfallen lassen.

Microsoft hat ein neues Feature unter Windows Server 2008 veröffentlicht, mit dem das synchronisieren des Kennworts für den Modus „Verzeichnisdienste wiederherstellen" (im englischen „Directory Services Restore Mode“, kurz DSRM) und einem Domänen-Benutzerkonto möglich ist. Diese neue Funktion vermindert oder erhöht keineswegs die Sicherheit des Kennworts. Es dient einzig und alleine dazu, die Verwaltung des Kennworts zu vereinfachen.

Diese Funktion steht aber erst ab Windows Server 2008 und dort erst nach der Installation eines Hotfix zur Verfügung, der vorher von Microsoft von dieser Seite angefordert werden muss. Wurde der Hotfix auf einem Windows Server 2008 DC installiert, ist zwingend ein Neustart erforderlich. Der Hotfix steht ausschließlich für Windows Server 2008 zur Verfügung! Ab dem Service Pack 2 für Windows Server 2008 ist der Hotfix integriert und das installieren des Hotfix' ist nicht notwendig! Ab Windows Server 2008 R2 ist es ohnehin integriert.

Die Synchronisierung des Kennworts für den Verzeichnisdienstwiederherstellungsmodus mit dem Kennwort eines Domänen-Benutzerkontos erfolgt über das Kommandozeilentool NTDSUTIL. Dabei hat jeder DC sein „eigenes“ Kennwort für den Verzeichnisdienstwiederherstellungsmodus, das lokal gespeichert ist.

Nach der Eingabe des folgenden Befehls findet eine einseitige Synchronisation statt. Das Konto für den Verzeichnisdienstwiederherstellungsmodus erhält das Kennwort vom angegebenen Benutzerkonto. Die Vorgehensweise ist wie folgt:

  • Unter „Start-Ausführen“ oder in einer Kommandozeile gilt es zuerst das NTDSUTIL aufzurufen.

  • Danach ist dieser Befehl einzugeben: set dsrm password

  • Anschließend wird die Synchronisierung des Kennworts mit diesem Befehl durchgeführt: sync from domain account <sAMAccountName>

  • Mit der zweimaligen Eingabe von q verlässt man das NTDSUTIL.


 

  • Man kann die Synchronisation auch mit dem folgenden Einzeiler erreichen: NTDSUTIL “set dsrm password" "sync from domain account <Benutzer>" q q


Der Befehl kann im laufenden Betrieb ausgeführt werden und das Kennwort wird dann einmalig synchronisiert! Es findet keine permanente Synchronisation statt. Daher muss der Befehl erneut ausgeführt werden, wenn sich das Kennwort vom angegebenen Benutzerkonto geändert hat.


Über die "Group Policy Preferences" und einem "geplanten Task" lässt sich die Synchronisierung des Kenworts auch automatisieren:

DS Restore Mode Password Maintenance

 

Weitere Informationen: 
How to Change the Recovery Console Administrator Password on a Domain Controller
How To Reset the Directory Services Restore Mode Administrator Account Password in Windows Server 2003
Active Directory-Domänendienste (AD-DS)

Sunday, February 22, 2009 10:22:25 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Sunday, February 08, 2009

Im Windows Server 2008 R2 ist erstmals die Active Directory-Powershell in der Version 2.0 Out-of-the-Box für AD DS sowie AD LDS (ehemals ADAM) im Betriebssystem integriert. Es stehen die AD-Powershell Kommandozeile sowie das Snap-In Windows PowerShell Integrated Scripting Environment (ISE) zur Verfügung. Die Powershell-Entwicklungsumgebung ISE muss im Server Manager unter den Features installiert werden, ehe diese unter Start - Alle Programme - Zubehör - Windows Powershell genutzt werden kann. Hinter der AD-Powershell verbirgt sich nichts anderes als ein Powershell-Modul Namens „ActiveDirectory“, worin bereits die AD-Cmdlets zur Verfügung stehen. Denn unter der Windows Powershell V2 sowie ISE müssen zuerst die AD-Cmdlets mit dem Befehl import-module activedirectory importiert werden. Die Bestandteile der AD-Powershell ist der AD-Powershell Provider und die insgesamt 76 AD-Powershell Commandlets (kurz Cmdlets).

Vor Windows Server 2008 R2 mussten AD-Administratoren mehrere Kommandozeilentools und AD Snap-Ins verwenden, um ihre Active Directory-Umgebung sowie die AD LDS „configuration sets“ (eine Gruppe von Replikationspartnern) zu administrieren und zu konfigurieren. Diese Vielfalt an Werkzeugen können sie zwar auch unter Windows Server 2008 R2 weiterhin nutzen, doch wer seine AD DS/AD LDS-Umgebung zentralisiert aus nur einem Werkzeug heraus administrieren bzw. konfigurieren möchte, der kann dies mit der Active Directory-Powershell realisieren.

Dadurch lassen sich viele AD-Administrations- und -Konfigurationsaufgaben nun auch über die AD-Powershell ausführen. Doch bevor die AD-Powershell genutzt werden kann, muss diese zuerst installiert werden. Die Installation der AD-Powershell kann ausschließlich auf den Betriebssystemen Windows Server 2008 R2 Vollinstallation, Server Core R2 und Windows 7 Client durchgeführt werden.

Dabei kann die Installation der AD-Powershell auf verschiedene Weise erfolgen. Diese wären:

  • Die Installation der Serverrolle AD DS oder AD LDS unter Windows Server 2008 R2.
  • Das Heraufstufen eines Windows Server 2008 R2 zu einem Domänencontroller (DC) mit dem Dcpromo-Assistenten.
  • Bei der Installation der Remote Server Administration Tools (kurz RSAT) auf einem Windows Server 2008 R2 Servers.
  • Mit der Installation der RSAT auf Windows 7 Clients.

Mit der Installation der AD-Powershell werden standardmäßig die Komponenten „Windows Powershell“ und „.NET Framework 3.5.1“ mit installiert. Diese beiden Komponenten sind die Voraussetzung ehe die AD-Powershell installiert und genutzt werden kann.

Wenn die AD-Powershell auf einem Windows 7 Client genutzt werden soll, um eine AD DS-Domäne oder AD LDS-Umgebung zu administrieren, dann ist das erst möglich wenn sich mindestens ein Windows Server 2008 R2 DC oder mindestens eine Instanz in einem AD LDS „configuration set“ auf einem Windows Server 2008 R2 läuft. Das ist notwendig, da die AD-Powershell von dem Dienst Active Directory-Webdienste abhängig ist und nicht von der RPC- bzw. LDAP-Schnittstelle. Nur wenn dieser Dienst in der Umgebung zur Verfügung steht, kann die AD-Powershell eingesetzt werden.

Damit eine Windows Server 2003 oder Windows Server 2008 Umgebung oder AD LDS-Instanzen die auf Windows Server 2008 laufen von einem Windows 7 Client oder Windows Server 2008 R2 Mitgliedsserver bzw. DC administrert werden können, muss vorher das Active Directory Management Gateway Service installiert werden:

Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008


Nach der Installation der AD-Powershell stehen alle 76 verfügbaren AD-Cmdlets zur Verfügung und man kann sich mit dem Befehl
Get-Command *-ad* die Cmdlets anzeigen lassen. Mit den folgenden Powershell-Befehlen lässt sich zu dem jeweils angegebenen AD-Cmdlet eine detailierte und ausführliche Hilfe anzeigen:

  • Get-Help <Cmdlet Name> -Detailed (z.B. Get-Help Disable-ADAccount -Detailed)
  • Get-Help <Cmdlet Name> -Examples
  • Get-Help <Cmdlet Name> -Full


Die Cmdlets lassen sich auch durch das Pipelining miteinander verbinden. Dadurch können die Daten von einem Cmdlet zum anderen weitergegeben werden. Z.B.: Search-ADAccount <Parameter/alle deaktivierten Benutzer> | Enable-ADAccount


Die AD-Cmdlets die zur Verfügung stehen sind:

ADAccount (4 Cmdlets)

  • Disable-ADAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Deaktiviert das angegebene Benutzer-, Dienst- oder Computerkonto.

  • Enable-ADAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Aktiviert das angegebene Benutzer-, Dienst- oder Computerkonto.

  • Search-ADAccount
    Die Suche zeigt Benutzer- oder Computerkonten anhand der angegebenen Parameter an.

  • Unlock-ADAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Entsperrt ein Domänen-Benutzerkonto.


ADAccountAuthorizationGroup
(1 Cmdlet)

  • Get-ADAccountAuthorizationGroup (Das Cmdlet funktioniert nicht bei einem AD-Snapshot)
    Zeigt die Sicherheitsgruppen mit detailierten Informationen im AD an, in denen das angegebene Benutzer-, Dienst- oder Computerkonto Mitglied ist. Mit diesem Cmdlet wird auch die „primäre Gruppe“ eines Benutzers angezeigt!


ADAccountControl (1 Cmdlet)

  • Set-ADAccountControl (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Mit diesem Cmdlet lassen sich die Kontooptionen eines Benutzer- oder Computerkontos bearbeiten. Das Attribut „userAccountControl“ das sich aus einer Bitmaske zusammensetzt, lässt sich somit auch in der AD-Powershell bearbeiten.


ADAccountExpiration (2 Cmdlet)

  • Clear-ADAccountExpiration (Dieses Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Mit diesem Cmdlet lässt sich in den Eigenschaften eines Benutzerkontos, im Reiter Konto die Option “Konto läuft ab” auf „Nie“ einstellen.
  • Set-ADAccountExpiration (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Das Ablaufdatum eines Benutzerkontos lässt sich mit diesem Cmdlet konfigurieren.


ADAccountPassword (1 Cmdlet)

  • Set-ADAccountPassword (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Das Kennwort eines Benutzer- oder Dienstkonto kann mit diesem Cmdlet bearbeitet bzw. ein neues vergeben werden.


ADAccountResultantPasswordReplicationPolicy (1 Cmdlet)

  • Get-ADAccountResultantPasswordReplicationPolicy (Das Cmdlet funktioniert nicht bei den AD LDS)
    Mit diesem Cmdlet kann man sich die Kennwortreplikationsrichtlinie eines Benutzer-, Dienst- oder Computerkontos, an dem angegebenen RODC anzeigen lassen.


ADComputer (4 Cmdlet)

  • Get-ADComputer (Das Cmdlet funktioniert nicht bei den AD LDS)
    Eine Abfrage über Computerkonten anhand bestimmter Kriterien lässt sich mir diesem Cmdlet durchführen.
  • New-ADComputer (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Hiermit können Computerkonten im AD erstellt werden. Darunter fällt auch die neue Funktion „Offline Domain Join“ oder ein RODC-Computerkonto.

  • Remove-ADComputer (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Dieses Cmdlet entfernt Computerkonten aus dem AD.

  • Set-ADComputer (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Die Eigenschaften eines Computerkontos lassen sich mit diesem Cmdlet bearbeiten.


ADComputerServiceAccount (3 Cmdlets)

  • Add-ADComputerServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Ein oder mehrere Computer-Dienstkonten werden mit diesem Cmdlet auf einem Server hinzugefügt.

  • Get-ADComputerServiceAccount (Das Cmdlet funktioniert nicht bei den AD LDS)
    Die auf einem Server verfügbaren Computer-Dienstkonten zeigt dieses Cmdlet an.

  • Remove-ADComputerServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Entfernen lassen sich ein oder mehrere Computer-Dienstkonten mit diesem Cmdlet.


ADDefaultDomainPasswordPolicy (2 Cmdlets)

  • Get-ADDefaultDomainPasswordPolicy (Das Cmdlet funktioniert nicht bei den AD LDS)
    Dieses Cmdlet zeigt die Domänen-Kennwortrichtlinie an und nicht die “Password Settings Objects (PSO)”.
  • Set-ADDefaultDomainPasswordPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Mit diesem Cmdlet lassen sich die Kennwortvorgaben (minimales und maximales Kennwortalter usw.) in der Domänen-Kennwortrichtlinie konfigurieren.


ADDirectoryServer (1 Cmdlet)

  • Move-ADDirectoryServer (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Ein Domänencontroller kann mit diesem Cmdlet an einen anderen AD-Standort verschoben werden.


ADDirectoryServerOperationMasterRole (1 Cmdlet)

  • Move-ADDirectoryServerOperationMasterRole (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Dieses Cmdlet lässt sich zum Verschieben der FSMO-Rollen einsetzen.


ADDomain (2 Cmdlets)

  • Get-ADDomain (Das Cmdlet funktioniert nicht bei den AD LDS)
    Mit diesem Cmdlet und den entsprechenden Parametern lassen sich Domäneninformationen ausgeben.

  • Set-ADDomain (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Dieses Cmdlet lässt sich zum Bearbeiten diverser Domäneninformationen verwenden.


ADDomainController (1 Cmdlet)

  • Get-ADDomainController (Das Cmdlet funktioniert nicht bei den AD LDS)
    Ausführliche Informationen über einen Domänencontroller erhält man mit diesem Cmdlet.


ADDomainControllerPasswordReplicationPolicy (3 Cmdlets)

  • Add-ADDomainControllerPasswordReplicationPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Ein oder mehrere Benutzer, Gruppen oder Computer können mit diesem Cmdlet in die Sicherheitsgruppe „Abgelehnte RODC-Kennwortreplikationsgruppe” oder „Zulässige RODC-Kennwortreplikationsgruppe” hinzugefügt werden.

  • Get-ADDomainControllerPasswordReplicationPolicy (Das Cmdlet funktioniert nicht bei den AD LDS)
    Die Mitglieder (Benutzer, Gruppen oder Computer) der Sicherheitsgruppe „Zulässige RODC-Kennwortreplikationsgruppe” oder „Abgelehnte RODC-Kennwortreplikationsgruppe” werden mit diesem Cmdlet angezeigt.

  • Remove-ADDomainControllerPasswordReplicationPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Dieses Cmdlet entfernt einzelne oder mehrere Benutzer, Gruppen oder Computer von der Sicherheitsgruppe „Abgelehnte RODC-Kennwortreplikationsgruppe” oder „Zulässige RODC-Kennwortreplikationsgruppe”.


ADDomainControllerPasswordReplicationPolicyUsage (1 Cmdlet)

  • Get-ADDomainControllerPasswordReplicationPolicyUsage (Das Cmdlet funktioniert nicht bei den AD LDS)
    In welcher RODC-Kennwortreplikationsgruppe (zulässige oder abgelehnte) der angegebene Benutzer auf dem angegebenen RODC Mitglied ist, zeigt dieses Cmdlet.


ADDomainMode (1 Cmdlet)

  • Set-ADDomainMode (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Das Heraufstufen des Domänenfunktionsmodus lässt sich auch mit diesem Cmdlet festlegen.


ADFineGrainedPasswordPolicy (4 Cmdlets)

  • Get-ADFineGrainedPasswordPolicy (Das Cmdlet funktioniert nicht bei den AD LDS)
    Dieses Cmdlet zeigt die konfigurierten Optionen einer oder mehrerer “Password Settings Objects (PSO)” an.

  • New-ADFineGrainedPasswordPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Neue PSOs können mit diesem Cmdlet erstellt werden.

  • Remove-ADFineGrainedPasswordPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Entfernen lässt sich ein PSO mit diesem Cmdlet.

  • Set-ADFineGrainedPasswordPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Die konfigurierten Optionen einer PSO können mit diesem Cmdlet überarbeitet werden.


ADFineGrainedPasswordPolicySubject (3 Cmdlets)

  • Add-ADFineGrainedPasswordPolicySubject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Mit diesem Cmdlet wird eine bereits bestehende PSO mit einem oder mehreren Benutzern bzw. einer Gruppe verknüpft.

  • Get-ADFineGrainedPasswordPolicySubject (Das Cmdlet funktioniert nicht bei den AD LDS)
    Welche Benutzer oder Gruppen mit einem bestimmten PSO verknüpft sind, zeigt dieses Cmdlet.

  • Remove-ADFineGrainedPasswordPolicySubject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Eine oder mehre Benutzer bzw. Gruppen werden mit diesem Cmdlet von einer PSO entfernt.


ADForest (2 Cmdlets)

  • Get-ADForest (Das Cmdlet funktioniert nicht bei den AD LDS)
    Weiterreichende Informationen über die Gesamtstruktur erhält man durch dieses Cmdlet.

  • Set-ADForest (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Dieses Cmdlet lässt sich zum Hochstufen des Gesamtstrukturfunktionsmodus oder zum Bearbeiten gesamtstrukturweiter Informationen (z.B. Hinzufügen oder Bearbeiten des UPNSuffix) verwenden.


ADForestMode (1 Cmdlet)

  • Set-ADForestMode (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Der Gesamtstrukturfunktionsmodus lässt sich mit diesem Cmdlet Hochstufen.


ADGroup (4 Cmdlets)

  • Get-ADGroup
    Sollen die Benutzer einer speziellen Gruppe ermittelt werden, eine Gruppe mit detailierten Informationen angezeigt oder alle Gruppen anhand bestimmter Kriterien ermittelt werden, so kann man dieses Cmdlet dafür verwenden.

  • New-ADGroup (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Sicherheit- oder Verteilergruppen können in der AD-Powershell mit diesem Cmdlet erstellen werden.

  • Remove-ADGroup (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Gruppentypen der Kategorie „Sicherheit“ oder „Verteilung“ werden mit diesem Cmdlet entfernt.

  • Set-ADGroup (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Bestehende Gruppen lassen sich mit diesem Cmdlet bearbeiten.


ADGroupMember (3 Cmdlets)

  • Add-ADGroupMember (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Ein oder mehrere Benutzer-, Gruppen-, Dienst- oder Computerkonten können mit diesem Cmdlet einer bestimmten Gruppe hinzugefügt werden.

  • Get-ADGroupMember (Das Cmdlet funktioniert nicht bei einem AD-Snapshot)
    Die Mitglieder (Benutzer, Gruppen, Clients) einer bestimmten Gruppe werden mit diesem Cmdlet angezeigt.

  • Remove-ADGroupMember (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Mit diesem Cmdlet ist es möglich, ein oder mehrere Benutzer, Gruppen oder Clients aus einer bestimmten Gruppe zu entfernen.


ADObject (7 Cmdlets)

  • Get-ADObject
    Jegliche Active Directory-Abfrage kann anhand der angegebenen Parameter mit diesem Cmdlet durchgeführt werden.

  • Move-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Active Directory-Objekte oder OUs können entweder innerhalb oder zwischen Domänen mit diesem Cmdlet verschieben werden.

  • New-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Neue Active Directory-Objekte jeder Art, sei es z.B. neue Benutzer, OUs oder Subnetze werden mit diesem Cmdlet erstellt.

  • Remove-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Jede Art von Active Directory-Objekten, wie z.B. Benutzer oder OUs, können mit diesem Cmdlet entfernt werden.

  • Rename-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Das umbenennen von AD-Objekten kann mit diesem Cmdlet durchgeführt werden.

  • Restore-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Dieses Cmdlet stellt ein gelöschtes ADObjekt aus dem Container „Deleted Objects“ wieder her.

  • Set-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Jegliche Art von AD-Objekten lassen sich mit diesem Cmdlet bearbeiten.


ADOptionalFeature (3 Cmdlets)

  • Disable-ADOptionalFeature (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Ein Active Directory „Optional Feature“ lässt sich mit diesem Cmdlet deaktivieren.

  • Enable-ADOptionalFeature (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Aktivieren lässt sich ein „Optional Feature“, wie z.B. der AD-Papierkorb, mit diesem Cmdlet.

  • Get-ADOptionalFeature
    Die optionalen Features innerhalb einer Gesamtstruktur werden mit diesem Cmdlet angezeigt.


ADOrganizationalUnit (4 Cmdlets)

  • Get-ADOrganizationalUnit
    Eine oder mehrere Organisationseinheiten (OU) können anhand der angegebenen Parameter, mit diesem Cmdlet ermittelt werden.

  • New-ADOrganizationalUnit (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Erstellen lässt sich eine neue OU mit diesem Cmdlet.

  • Remove-ADOrganizationalUnit (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Soll eine OU (ohne oder mit Objekten) entfernt werden, so lässt sich das Löschen mit dieser Cmdlet durchführen. Ist allerdings die OU vor dem „versehentlichen“ löschen geschützt, so erscheint eine Fehlermeldung.

  • Set-ADOrganizationalUnit (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Die Eigenschaften einer OU (Adressinformationen oder die Einstellung „Objekt vor zufälligem Löschen schützen“ etc.) lassen sich mit diesem Cmdlet bearbeiten.


ADPrincipalGroupMembership (3 Cmdlets)

  • Add-ADPrincipalGroupMembership (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Dieses Cmdlet fügt einen oder mehrere Benutzer, Gruppen oder Computer zu einer oder mehreren Gruppen hinzu.
  • Get-ADPrincipalGroupMembership (Das Cmdlet funktioniert nicht bei einem AD-Snapshot)
    Alle Gruppenmitgliedschaften eines Benutzers, einer Gruppe oder eines Clients werden mit diesem Cmdlet angezeigt.

  • Remove-ADPrincipalGroupMembership (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Ein oder mehrere Benutzer, Gruppen oder Clients werden mit diesem Cmdlet aus einer oder mehreren Gruppen entfernt.


ADRootDSE (1 Cmdlet)

  • Get-ADRootDSE
    Die Informationen des Einstiegpunkts eines Active Directory (RootDSE) zeigt dieses Cmdlet an.


ADServiceAccount (6 Cmdlets)

  • Get-ADServiceAccount (Das Cmdlet funktioniert nicht bei den AD LDS)
    Die im Windows Server 2008 R2 eingeführten AD-Dienstkonten („Managed Service Account“) lassen sich anhand der angegeben Parameter, mit diesem Cmdlet anzeigen.

  • Install-ADServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Ein neues AD-Dienstkonto lässt sich mit diesem Cmdlet installieren.

  • New-ADServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Dieses Cmdlet erstellt ein neues AD-Dienstkonto.

  • Remove-ADServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Entfernen kann man ein AD-Dienstkonto mit diesem Cmdlet.

  • Set-ADServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Mit diesem Cmdlet lässt sich ein bestehendes AD-Dienstkonto bearbeiten.

  • Uninstall-ADServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Deinstallieren lässt sich ein AD-Dienstkonto mit diesem Cmdlet.


ADServiceAccountPassword (1 Cmdlet)

  • Reset-ADServiceAccountPassword (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
    Das Kennwort eines AD-Dienstkontos kann mit diesem Cmdlet zurückgesetzt werden.


ADUser (4 Cmdlets)

  • Get-ADUser
    Ist man auf der Suche nach einem bestimmten oder nach mehreren Benutzern die alle ein bestimmtes Kriterium erfüllen, so lässt sich die Abfrage mit diesem Cmdlet durchführen.
  • New-ADUser (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Ein Benutzerkonto (samt Kennwort) lässt sich mit diesem Cmdlet erstellen.

  • Remove-ADUser (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Dieses Cmdlet entfernt ein oder mehrere Benutzerkonten.

  • Set-ADUser (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
    Bearbeiten kann man ein Benutzerkonto mit diesem Cmdlet.


ADUserResultantPasswordPolicy (1 Cmdlet)

  • Get-ADUserResultantPasswordPolicy (Das Cmdlet funktioniert nicht bei den AD LDS)
    Die mit einem Benutzer- oder Gruppenkonto verknüpften “Password Settings Objects“ (PSO) werden mit diesem Cmdlet angezeigt.

 

Weitere Informationen:
AD-PowerShell Befehle
Active Directory Powershell Overview
Active Directory Module for Windows PowerShell Cookbook
Den ersten Windows Server 2008 R2 DC zur Gesamtstruktur hinzufügen
Der Active Directory-Papierkorb im Windows Server 2008 R2

Sunday, February 08, 2009 1:31:33 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | AD-Powershell | Erweiterte Abfragen  | 
 Sunday, February 01, 2009

Das versehentliche Löschen von Active Directory-Objekten ist in Active Directory (AD) bzw. Active Directory Domain Services (AD DS), als auch in Active Directory Lightweight Directory Services (AD LDS, ehemals Active Directory Application Mode, kurz ADAM) Umgebungen mehr als ärgerlich. Denn schnell sind mit zwei Mausklicks ein oder mehrere Objekte gelöscht. Hoffentlich existiert in so einem Fall eine aktuelle und vor allem funktionierende Sicherung, mit dem das verlorene Objekt wiederhergestellt werden kann. Bis jedoch das passende Sicherungsband gefunden, eingelegt und das Objekt letztenendes wiederhergestellt ist, können diese Arbeiten sehr zeitintensiv und aufwändig sein.

 

Die Möglichkeiten die einem bei der Wiederherstellung zur Verfügung stehen, sind unter:

  • Windows 2000 = Autoritative Wiederherstellung

  • Windows Server 2003 = Autoritative Wiederherstellung, Tombstone reanimieren

  • Windows Server 2003 R2 = Autoritative Wiederherstellung, Tombstone reanimieren

  • Windows Server 2008 = Autoritative Wiederherstellung, Tombstone reanimieren

  • Windows Server 2008 R2 = AD-Papierkorb, Autoritative Wiederherstellung, Tombstone reanimieren (bei deaktiviertem und aktiviertem AD-Papierkorb)

 

Die autoritative Wiederherstellung

 

Existiert eine aktuelle und funktionierende System State-Sicherung, kann mit einer autoritativen Wiederherstellung das Objekt mit all seinen Informationen die es zum Zeitpunkt der Sicherung hatte, wiederhergestellt werden. Dabei darf die Systemstatus-Sicherung (auf englisch: System State) nicht älter als die Tombstone-Lifetime (TSL) sein, denn ansonsten entstehen Lingering Objects. Die TSL einer Gesamtstruktur gibt das maximale Alter einer Systemstatus-Sicherung an, die für eine Rücksicherung verwendet werden darf.

 

Ein AD-Objekt wird in der Kommandozeile mit dem Befehl Ntdsutil-authoritative restore hergestellt. Dabei wird die Versionsnummer um 100.000 erhöht, damit das rückgesicherte Objekt nach der AD-Replikation auf die Replikationspartner erhalten bleibt und nicht von einem anderen DC direkt wieder gelöscht wird.

 

Problematisch ist allerdings die Wiederherstellung der Gruppenmitgliedschaften eines gelöschten Benutzers, die sogenannten Backlinks. Zur Wiederherstellung von Gruppenmitgliedschaften sind weitere aufwändige Schritte notwendig. Das hat sich zwar mit Windows Server 2003 SP1 etwas entschärft, jedoch ist weiterhin der Aufwand zum Rücksichern dieser Backlinks recht hoch.

 

Der Nachteil einer autoritativen Wiederherstellung wäre, dass der Domänencontroller (DC) im Modus Verzeichnisdienste wiederherstellen gestartet werden muss und dadurch zwei Neustarts notwendig sind. Somit würde der DC während der ganzen Zeit der Wiederherstellung nicht zur Verfügung stehen.

 

Diese Vorgehensweise ist seit der Einführung des Active Directory mit Windows 2000 gleich geblieben.

 

Weitere Details stehen in dem Artikel:

Active Directory Wiederherstellung

 


Ist eine Wiederherstellung in einer AD LDS-Umgebung notwendig, so ist es erforderlich die AD LDS-Instanz vorher zu stoppen. Allerdings muss für die Wiederherstellung der Server nicht im Modus Verzeichnisdienste wiederherstellen gestartet werden.

 

Wiederherstellen von AD LDS-Instanzdaten

 


 

 

Die Tombstone-Reanimierung

 

Eine andere Variante die seit Windows Server 2003 zur Verfügung steht, ist das reanimieren des Tombstones (zu Deutsch: Grabstein). Diese Art der Wiederherstellung hat den Vorteil, dass das Tombstone online ohne, dass der DC neu gestartet werden muss, jederzeit wiederhergestellt werden kann. Auch in einer AD LDS-Umgebung muss dazu die AD LDS-Instanz nicht offline genommen werden. Das gelöschte Objekt (das Tombstone) kann natürlich nur reanimiert werden, solange die Tombstone Lifetime nicht abgelaufen ist. Der Nachteil dieser Variante wiederum wäre, dass beim Wiederbeleben des Tombstones nicht alle Informationen eines Objekts automatisch wiederhergestellt werden.

 

Denn wenn ein Objekt gelöscht wird, verschwindet es nicht sofort aus der Active Directory-Datenbank (NTDS.dit). Das Objekt wird stattdessen vom Active Directory als gelöscht markiert, indem das Attribut Is-Deleted des Objekts auf den Wert True gesetzt wird. Aber es werden die meisten Attribute von dem Objekt für immer entfernt. Danach wird das Objekt in den versteckten Container Deleted Objects (der in jeder Verzeichnispartitionen existiert) verschoben und wird ab diesem Zeitpunkt als Tombstone bezeichnet. Wird also ein Benutzer gelöscht, so landet das Benutzerkonto mit wenigen Werten im Container „Deleted Objects“ der Domänenpartition und wird erst nach Ablauf der TSL vom Garbage Collection Prozess ein für allemal aus dem AD entfernt.

 

Landet das Tombstone im Container „Deleted Objects“, erhält es einen speziellen Relative Distinguished Name (RDN) der so aussieht: „CN=<Alter RDN>\0ADEL:<Object-GUID>“. Beim Wiederbeleben des Tombstone wird das Objekt dann nur noch mit einigen wenigen Werten (z.B. ObjectGUID oder ObjectSID) wiederhergestellt.

 

Der Container „Deleted Objects“ wird aber nicht in den AD Snap-Ins oder im ADSIEdit angezeigt. Stattdessen können die Tombstones mit ADRestore.Net, ADRestore oder LDP.exe angezeigt sowie wiederhergestellt werden.

 

ADRestore.NET

ADRestore


 

Die restlichen Werte die in einem wiederhergestellten Tombstone fehlen, könnten mit einem der folgenden Tools, von einem zuvor erstellten AD-Snapshot unter Windows Server 2008 bzw. Windows Server 2008 R2 wiederhergestellt werden.


Directory Service Comparison Tool 1.3.2.X

AD Explorer

 


 

 

Die Grabstein-Lebenszeit (Tombstone Lifetime)

 

Die Tombstone Lifetime wird mit dem Installieren des allerersten DCs für die komplette Gesamtstruktur festgelegt. Dabei ist es entscheidend welches Server-Betriebssystem mit welchem Service-Pack auf dem Server installiert ist, mit dem die Gesamtstruktur erstellt wird. Das Installieren eines Service-Packs auf bestehenden DCs, verändert niemals die Tombstone Lifetime. Es müsste schon die Gesamtstruktur neu installiert werden.

 

Wie und wo man die TSL überprüfen kann, steht neben weiteren Details in dem folgenden Artikel.

 

Die Tombstone Lifetime

 

 

Die Tombstone-Lifetime beträgt unter den Betriebssystemen:

  • Windows 2000 (mit allen SPs) = 60 Tage

  • Windows Server 2003 ohne SP = 60 Tage

  • Windows Server 2003 ab Service Pack 1 = 180 Tage

  • Windows Server 2003 R2 mit Service Pack 1, installiert mit beiden R2-CDs = 60 Tage

  • Windows Server 2003 R2 mit Service Pack 1, installiert nur mit der ersten R2-CD = 180 Tage

  • Windows Server 2003 R2 ab Service Pack 2 (installiert mit der ersten oder beiden R2-CDs) = 180 Tage

  • Windows Server 2008 (mit allen SPs) = 180 Tage

  • Windows Server 2008 R2 (mit allen SPs) = 180 Tage


 

 

Der Vorgang eines gelöschten AD-Objekts sowie seine Wiederherstellung unter Windows Server 2003/2003 R2, Windows Server 2008 und Windows Server 2008 R2, bei deaktiviertem AD-Papierkorb

 

 

 

 


 

Der Active Directory-Papierkorb unter Windows Server 2008 R2

 

Ein absolutes Highlight im Windows Server 2008 R2 ist der Papierkorb für gelöschte Active Directory-Objekte. Wird ein Active Directory-Objekt in den Active Directory Domain Services (AD DS) oder Active Directory Lightweight Directory Services (AD LDS) gelöscht, kann es Dank des AD-Papierkorbs schnell wiederhergestellt werden. Der AD-Papierkorb steht in AD DS und AD LDS-Umgebungen zur Verfügung. Der große Vorteil des AD-Papierkorbs ist, dass das Objekt mit all seinen Informationen die es zum Zeitpunkt der Löschung hatte wiederhergestellt wird. Das bedeutet, alle Attribute samt allen Backlinks und somit z.B. den Gruppenmitgliedschaften eines Benutzers, werden hergestellt. Nach der Wiederherstellung ist auch der Zugriff auf die bestehenden Objekte und Ressourcen wieder gegeben.

 

Dafür wird weder eine System-State Sicherung benötigt, noch muss der DC im Verzeichnisdienste wiederherstellen Modus gestartet werden. Die Wiederherstellung findet im laufenden Betrieb statt.

 

Diese neue Technik steht ausschließlich in den folgenden Server-Versionen zur Verfügung:

  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter

 

Der AD-Papierkorb steht in den folgenden Versionen nicht zur Verfügung:

  • Windows Server 2008 R2 für Itanium basierte Systeme
  • Windows Web Server 2008 R2

 

 

Jedoch ersetzt diese Funktion niemals eine regelmäßige System State-Sicherung von mindestens zwei DCs pro Domäne!

 


 

 

Die Voraussetzungen um den Active Directory-Papierkorb unter Windows Server 2008 R2 zu nutzen

 

Die Voraussetzungen um den AD-Papierkorb zu nutzen sind:

  • Der AD-Papierkorb steht in den AD DS und AD LDS-Umgebungen erst im Gesamtstrukturfunktionsmodus Windows Server 2008 R2 zur Verfügung. Es müssen also alle Domänencontroller aus allen Domänen der Gesamtstruktur oder alle Server auf denen eine AD LDS-Instanz konfiguriert ist, unter Windows Server 2008 R2 laufen!

    Den ersten Windows Server 2008 R2 DC zur Gesamtstruktur hinzufügen

  • Der AD-Papierkorb ist standardmäßig deaktiviert, sowohl bei einer Domänenaktualisierung oder dem neu Aufsetzen einer Windows Server 2008 R2 Gesamtstruktur im Gesamtstrukturfunktionsmodus „Windows Server 2008 R2“. Der AD-Papierkorb muss explizit in der AD-Powershell aktiviert werden. Dieser Schritt ist ein irreversibler Vorgang und kann danach nicht mehr rückgängig gemacht werden!

     

    Nach dem Aktivieren des AD-Papierkorbs lässt sich dieses Feature mit Bordmitteln über die AD-Powershell und LDP.exe nutzen. Es existiert keine grafische Oberfläche in der man mit der Maus die Funktion aktivieren kann. Jedoch lassen sich mit dem Tool LDP oder den beiden Tools ADRestore.Net und ADRestore, ebenfalls die gelöschten Objekte im AD-Papierkorb anzeigen sowie wiederherstellen.



 

Kann der AD-Papierkorb für eine einzige Domäne in der Gesamtstruktur aktiviert werden?

 

So wie bei der Tombstone Lifetime ist es nicht möglich, den AD-Papierkorb „pro Domäne“ zu aktivieren. Wenn die Voraussetzungen erfüllt sind, kann diese Funktion nur auf der Gesamtstrukturebene mit „Organisations-Admin“ Rechten für alle Domänen aktiviert werden. Anschließend steht jeder Domäne sein eigener AD-Papierkorb zur Verfügung. Der AD-Papierkorb existiert also "pro Domäne" und nicht "pro Gesamtstruktur"!

 


 

 

Die Funktionsweise des Active Directory-Papierkorbs unter Windows Server 2008 R2

 

Der AD-Papierkorb baut auf der Technik der Tombstone-Reanimierung auf. Jedoch werden vom gelöschten Objekt dafür keine Attribute vom System entfernt und es bleiben alle Attribute erhalten. Das Objekt wird logisch gelöscht bzw. inaktiv gesetzt, was ein neues Stadium eines gelöschten Objekts ist, das mit Windows Server 2008 R2 eingeführt wurde. In der AD-Datenbank wurde dazu das Speicherformat der Objektlinks geändert. Wird ein Objekt gelöscht, so erhält das Attribut isDeleted im Objekt den Wert TRUE. Das gelöschte Objekt wird nach wie vor in den versteckten Container Deleted Objects verschoben und sein Distinguished Name (DN) erhält dadurch einen neuen Wert. Das Objekt in „Deleted Objects“ behält seinen logischen Löschzustand solange bei, bis die Deleted Object Lifetime (DOL) abgelaufen ist. Nach Ablauf der DOL wandelt sich das gelöschte Objekt zu einem "recycled Objekt". Das recycled Objekt wird dann endgültig vom Garbage Collection Prozess nach Ablauf der Recycled Object Lifetime (ROL) aus der AD-Datenbank entfernt. Unter Windows Server 2008 R2 gibt es nun neben der Tombstone Lifetime zusätzlich die Deleted Object Lifetime (kurz DOL) und Recycled Object Lifetime (kurz ROL).

 

Die Deleted Object Lifetime wird durch den Wert im neuen Attribut msDS-DeletedObjectLifetime bestimmt. Denn bei einer Domänenaktualisierung auf Windows Server 2008 R2 ist eines der Schema-Aktualisierungen mit Adprep /Forestprep (von der Windows Server 2008 R2 DVD) das Hinzufügen des neuen Attributs msDS-DeletedObjectLifetime. Wenn jedoch eine Gesamtstruktur auf Basis von Windows Server 2008 R2 erstellt wird, befinden sich bereits alle benötigten Attribute im Schema und das Adprep muss in keinster Weise ausgeführt werden. Die Recycled Object Lifetime hingegen, erhält seinen Wert aus dem Attribut tombstoneLifetime.

 

Ist die Zeit des im Attribut msDS-DeletedObjectLifetime definierten Werts abgelaufen, wandelt sich das logisch gelöschte Objekt zum „recycled Objekt“. Zusätzlich erhält das Attribut isRecycled im Objekt den Wert TRUE. Dabei werden die gleichen Attribute vom Objekt entfernt, wie es seit Windows Server 2003 bei einem Tombstone der Fall ist. Oder anders ausgedrückt, im recycled Objekt bleiben standardmäßig die gleichen Attribute erhalten wie bei einem Tombstone unter Windows Server 2003, Windows Server 2008 oder Windows Server 2008 R2 bei deaktiviertem AD-Papierkorb. Von der Begrifflichkeit her entspricht ein „recycled Objekt“ einem klassischen Tombstone.

 

Eine Besonderheit gibt es jedoch mit recycled Objects! Diese lassen sich nicht wie mit einem klassischen Tombstone reanimieren. Denn die API zum reanimieren eines recycled Objects ist bei aktiviertem AD-Papierkorb deaktiviert!

 

Das recycled Objekt bleibt weiterhin in dem Container Deleted Objects, bis die im Attribut tombstoneLifetime definierte Zeit abläuft. Anschließend wird das Objekt vom Garbage Collection Prozess unwiderruflich aus dem AD entfernt.

 

Das bedeutet im Klartext, bei aktiviertem AD-Papierkorb lässt sich ein gelöschtes Objekt nur während der DOL mit allen Werten wiederherstellen. Die Möglichkeiten zum Wiederherstellen sind dabei:

  • Das Wiederherstellen aus dem AD-Papierkorb mit der AD-Powershell, LDP, ADRestore.NET oder ADRestore.
  • Eine autoritative Wiederherstellung.


Achtung:
Wird der AD-Papierkorb aktiviert, wandeln sich alle AD-Objekte die bis zum Aktivieren des AD-Papierkorbs gelöscht wurden (also alle Tombstones), zu recycled Objekten. Diese Objekte können in der AD-Powershell mit einem bestimmten Befehl angezeigt werden (siehe unten). Jedoch können diese Objekte nicht mit Hilfe des AD-Papierkorbs bzw. der Tombstone-Reanimierung wiederhergestellt werden. Die beiden Tools ADRestore.NET und ADRestore zeigen ebenfalls diese Tombstones nicht an. Das Tool LDP zeigt zwar ebenfalls die Objekte an, ist aber auch nicht in der Lage die Objekte wiederherzustellen. Der einzige Weg diese Objekte herzustellen, ist eine autoritative Wiederherstellung von einer Systemstatus-Sicherung, die vor dem aktivieren des AD-Papierkorbs durchgeführt wurde.

 



 

Die Deleted Object Lifetime (DOL) und Recycled Object Lifetime (ROL)

 

Standardmäßig enthält das Attribut msDS-DeletedObjectLifetime keinen Wert. Es ist <Nicht festgelegt>. In diesem Fall wird der Wert aus der Recycled Object Lifetime festgelegt. Man kann aber natürlich auch jederzeit manuell einen Wert im Attribut msDS-DeletedObjectLifetime definieren.

 

Die ROL wiederum erhält seinen Wert aus dem Attribut tombstoneLifetime, denn die ROL hat kein eigenes Attribut wie die DOL. Das bedeutet, wenn ein Objekt gelöscht wird und im Attribut msDS-DeletedObjectLifetime ist kein Wert definiert, behält das Objekt für 60/180 Tage seinen logischen Löschzustand bei und wird anschließend zum recycled Objekt umgewandelt. Nach weiteren 60/180 Tagen (nach Ablauf der Tombstone Lifetime) wird es dann endgültig vom Garbage Collection Prozess aus der AD-Datenbank entfernt. Das Objekt bleibt somit über den gesamten Zeitraum der DOL und ROL im AD erhalten, ehe es definitiv aus dem AD gelöscht wird.

 

Ist hingegen im Attribut msDS-DeletedObjectLifetime ein Wert definiert, so beträgt die DOL den eingetragenen Wert in Tagen und es wird nicht der Wert aus dem Attribut tombstoneLifetime angenommen. Wenn daher der Bedarf besteht, ein gelöschtes Objekt länger als die Zeit das im Attribut tombstoneLifetime eingetragen ist aus dem AD-Papierkorb wiederherzustellen, so gilt es einen eigenen Wert im Attribut msDS-DeletedObjectLifetime zu definieren.

 

Enthält z.B. das Attribut tombstoneLifetime als Wert 180 und ist im Attribut msDS-DeletedObjectLifetime kein Wert eingetragen, so wird ein gelöschtes Objekt erst nach 360 Tagen vom Garbage Collection Prozess für immer aus dem AD entfernt.

 

 

 

Der Vorgang eines gelöschten AD-Objekts sowie seine Wiederherstellung, bei aktiviertem AD-Papierkorb unter Windows Server 2008 R2

 

 

 


 

 

 

Die Deleted Object Lifetime (DOL) und Recycled Object Lifetime (ROL) überprüfen und bearbeiten

  • Das Attribut msDS-DeletedObjectLifetime befindet sich im gleichen Container wie das Attribut tombstoneLifetime, nämlich in den Eigenschaften des Containers:
    CN=Directory Services,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne


  • Kontrollieren kann man das Attribut msDS-DeletedObjectLifetime z.B. mit Dsquery.

    Der Befehl lautet:

    Dsquery * "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Domäne" -attr msDS-DeletedObjectLifetime

     

    Falls kein Wert angezeigt wird, gilt der Standardwert aus dem Attribut tombstoneLifetime von 60/180 Tagen (sofern nicht manuell geändert). Ansonsten gilt der angezeigte Wert in Tagen.

  • Das Attribut tombstoneLifetime lässt sich mit Dsquery folgendermaßen abfragen:
    Dsquery * "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne" -attr tombstoneLifetime

     

    Falls kein Wert angezeigt wird, gilt als Wert 60 Tage. Ansonsten gilt auch hier der angezeigte Wert in Tagen.

  • Die DOL und das Attribut tombstoneLifetime lassen sich auch mit ADSIEdit überprüfen und bearbeiten. Dazu gilt es zuerst zum folgenden Container zu navigieren:

    CN=Directory Services,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne

     

    Dort befindet sich in den Eigenschaften des Containers zum einen das Attribut msDS-DeletedObjectLifetime und zum anderen das Attribut tombstoneLifetime. Ist im Attribut msDS-DeletedObjectLifetime ein Wert gesetzt, beträgt die DOL den eingetragenen Wert in Tagen. Steht im Attribut als Wert hingegen <Nicht festgelegt>, so beträgt die DOL den Wert aus dem Attribut tombstoneLifetime. Wenn im Attribut tombstoneLifetime als Wert <Nicht festgelegt> ist, so gilt als Wert 60 Tage. Ansonsten beträgt die Zeit den eingetragenen Wert in Tagen.

  • Die DOL lässt sich auch über die AD-Powershell bearbeiten. Dazu ist die AD-Powershell explizit als Administrator aufzurufen und der folgende Befehl einzugeben:

    Set-ADObject -Identity “CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Domäne,DC=de” –Partition “CN=Configuration,DC=Domäne,DC=de” –Replace:@{“msDS-DeletedObjectLifetime” = Wert}

     

    Das Attribut tombstoneLifetime lässt sich im Übrigen auch auf die gleiche Weise verändern:

    Set-ADObject -Identity “CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Domäne,DC=de” –Partition “CN=Configuration,DC=Domäne,DC=de” –Replace:@{“tombstoneLifetime” = Wert}


 

 

Aktivieren und nutzen des AD-Papierkorbs in der Active Directory-Powershell

 

Nach Ausführen von Dcpromo steht die Active Directore-Powershell mit 76 AD-Cmdlets auf dem DC zur Verfügung. Mit den beiden AD-Powershell Cmdlets Get-ADObject und Restore-ADObject ist es möglich, gelöschte AD-Objekte anzuzeigen sowie wiederherzustellen. Dabei ruft man mit Get-ADObject das gelöschte Objekt auf und übergibt es durch die Pipeline dem Restore-ADObject Cmdlet.

 

 

Zum Aktivieren des AD-Papierkorbs ist die folgende Vorgehensweise notwendig:

  • Im ersten Schritt muss mit „Organisations-Admin“ Rechten der AD-Papierkorb in der Root-Domäne und zwar für alle Domänen in der Gesamtstruktur aktiviert werden. Der Befehl dazu lautet:

    Enable-ADOptionalFeature „Recycle Bin Feature“ -Scope ForestorConfigurationset -Target “Root-Domäne*” (*DNS- oder NetBIOS-Name der Root-Domäne)

     

    Es folgt eine Warnung die besagt, dass bei Bestätigen der Meldung dieser Vorgang irreversibel ist. Nach dem Aktivieren des AD-Papierkorbs, lässt es sich nicht mehr deaktivieren!




  • Wenn der AD-Papierkorb aktiviert wurde, wird im Attribut msDS-EnabledFeature das sich in den Eigenschaften des Containers "CN=Partitions,CN=Configuration,DC=Root-Domäne" befindet, als Wert "CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne" eingetragen.

  • Der folgende Befehl zeigt detaillierte Informationen über die zur Verfügung stehenden Optional Feature im Active Directory an:
    Get-ADOptionalFeature -Filter * oder Get-ADOptionalFeature -Filter {Name -Like "*"}

  • Wurde ein Benutzerkonto aus Versehen gelöscht, so kann man sich das Konto wenn der sAMAccountName bekannt ist, auf diese Art anzeigen lassen:
    Get-ADObject -Filter {sAMAccountname –eq „Yusuf“} -Includedeletedobjects

     

    Wiederherstellen lässt sich das Benutzerkonto dann mit diesem Befehl:

    Get-ADObject -Filter {sAMAccountname –eq „Yusuf“} –Includedeletedobjects | Restore-ADObject

  • Ist der „Anzeigename“ eines Benutzerkontos bekannt, so lautet die Abfrage wie folgt. Aber Vorsicht, der „Anzeigename“ ist nicht der Name, der in der MMC Active Directory-Benutzer und -Computer in der Spalte „Name“ angezeigt wird. Denn dieser Wert wiederum, wird im Attribut name gespeichert.

    Get-AdObject –Filter {displayname –eq “Yusuf Dikmenoglu”} –Includedeletedobjects

     

    Wiederherstellen lässt sich das Benutzerkonto dann so:

    Get-AdObject –Filter {displayname –eq “Yusuf Dikmenoglu”} –Includedeletedobjects | Restore-ADObject

  • Ein bestimmtes Benutzerkonto wird auf diese Weise angezeigt:

    Get-ADObject -Filter {Name -Like “*Name*”} –Includedeletedobjects

     

    Oder so:
    Get-ADOject -Filter 'Name -Like "Yusuf*"' -Searchscope Subtree -Includedeletedobjects | ft -a

    Wiederherstellen kann man dann das Benutzerkonto so:
    Get-ADObject -Filter {Name -Like “*Name*”} –Includedeletedobjects | Restore-ADObject

  • Dieser Befehl zeigt die gelöschten Objekte im Container "Deleted Objects" an:
    Get-ADObject -ldapFilter:”(msDS-LastKnownRDN=*)" -Includedeletedobjects


    Wiederherstellen kann man ein Benutzerkonto auch wie folgt:
    Get-ADObject -ldapFilter:"(msDS-LastKnownRDN=<Benutzer>)" -Includedeletedobjects | Restore-ADObject


  • Der nachfolgende Befehl zeigt die gelöschten sowie recycelten Objekte mit detailierten Informationen an, die in einer bestimmten OU waren. Mit diesem Befehl können auch die recycelten Objekte angezeigt werden, die vor dem aktivieren des AD-Papierkorbs gelöscht wurden:
    Get-ADObject -Filter {Lastknownparent -eq "OU=<OU>,DC=Domäne,DC=de"} -Searchbase "CN=Deleted Objects,DC=Domäne,DC=de" -includedeletedobjects -properties *

  • Mit dem folgenden Befehl kann man sich alle gelöschten Objekte, egal welcher Klasse, aus dem versteckten Container „Deleted Objects“ der Domänenpartition anzeigen lassen:
    Get-ADObject –Searchbase „CN=Deleted Objects,DC=Domäne,DC=de“ –LdapFilter „(objectclass=*)“ –Includedeletedobjects | Format-List

  • Oder wer die Objekte jeglicher Klassen im schnellen Überblick haben möchte, verwendet diesen Befehl:
    Get-ADObject –Searchbase „CN=Deleted Objects,DC=Domäne,DC=de“ –LdapFilter „(objectclass=*)“ –Includedeletedobjects

  • Die gelöschten AD-Objekte der Klasse „User“ (z.B. Benutzerkonten) lassen sich wie folgt anzeigen:

    Get-ADObject –Searchbase „CN=Deleted Objects,DC=Domäne,DC=de“ –LdapFilter „(objectclass=User)“ –IncludedeletedObjects

  • Wurde ausversehen eine OU mit etlichen Benutzern gelöscht, so muss zuerst die OU wiederhergestellt werden, ehe dann die Benutzer wiederhergestellt werden können. Doch bevor die OU wiederhergestellt werden kann, wird die GUID der gelöschten OU benötigt. Diese erfährt man durch das Attribut lastknownparent eines Benutzers, das sich in der OU befand. Der Befehl würde so aussehen:
    Get-ADOject -filter 'name -like "Yusuf*"' -searchscope subtree -Includedeletedobjects -properties lastknownparent

    Dann kann mit diesem Befehl zuerst die OU wiederhergestellt werden:
    Restore-ADObject -identity <GUID der OU>

    Alle Objekte die sich in der OU befanden, können mit diesem Befehl wiederhergestellt werden:
    Get-ADObject -ldapfilter "(lastknownparent=OU=<OU>,DC=Domäne,DC=TLD)" -Includedeletedobjects | Restore-ADObject


Die AD-Powershell im Windows Server 2008 R2



 

Anzeigen und Wiederherstellen der gelöschten Objekte aus dem AD-Papierkorb mit ADRestore.NET und ADRestore

  • Das Tool ADRestore.NET muss zuerst installiert werden, lässt sich dann aber sehr simpel mit der Maus bedienen und ist vor allem selbsterklärend. Die gelöschten Objekte lassen sich mit einem Mausklick anzeigen und mit einem weiteren wiederherstellen.

    ADRestore.NET

  • Das Kommandozeilentool ADRestore lässt sich nach dem Download ohne eine Installation in einer Kommandozeile ausführen. Auch dieses Tool ist selbsterklärend.

    ADRestore

  • Ein weiteres kostenloses Tool ist das ADRecycleBin. Es zeigt die gelöschten Objekte an und stellt diese wieder her.

    ADRecycleBin



 

Anzeigen und Wiederherstellen der gelöschten Objekte aus dem AD-Papierkorb mit LDP

 

Die gelöschten Objekte im Container Deleted Objects lassen sich ebenfalls mit dem im Betriebssystem integrierten LDAP-Tool LDP anzeigen sowie wiederherstellen lassen.

 

Die Vorgehensweise wäre wie folgt:

  • Zuerst gilt es auf dem DC unter Start-Ausführen-LDP.exe das Tool aufzurufen.

  • Unter Optionen ist dann in den Steuerelementen im Feld Vordefiniert laden die Option Return deleted objects auszuwählen. Wählt man an dieser Stelle stattdessen die Option Return recycled objects aus, kann man sich bei gleicher Vorgehensweise die „recycelten Objekte“ anzeigen lassen.

  • Danach wählt man unter Remotedesktopverbindung den Punkt Gebunden... aus. Grandiose Bezeichnungen. 

  • Anschließend gibt man unter Ansicht-Struktur den Distinguished Name (DN) der entsprechenden (meistens) Domänenpartition an, z.B. DC=blog,DC=dikmenoglu,DC=de

  • Nun erweitert man zuerst auf der linken Seite die entsprechende Verzeichnispartition und erweitert auch den Eintrag Deleted Objects mit einem Doppelklick. Jetzt erscheinen die gelöschten Objekte.

  • Mit einem Rechtsklick auf das wiederzuherstellende Objekt, wählt man den Punkt Ändern aus.

  • Unter Eingabe bearbeiten gibt man im Feld Attribut isDeleted ein.

  • Das Feld Werte bleibt leer.

  • Unter Vorgang wählt man Löschen und klickt auf Eingabe.

  • Jetzt müssen die gleichen Schritte mit dem Attribut distinguishedName durchgeführt werden.

  • Im Feld Werte ist nun der original DN des Objekts einzugeben. Daher ist es stets sinnvoll, eine Liste mit allen Objekten und deren DN zu besitzen.

  • Unter Vorgang wählt man Ersetzen und klickt auf Eingabe.

  • Nach dem aktivieren von Erweitert führt man die Wiederherstellung mit einem Klick auf Ausführen durch.

 


 

Fallbeispiele

  • Wenn z.B. ein Benutzer Mitglied der Gruppe1 ist, beide Objekte nacheinander gelöscht werden, aber nur das Benutzerkonto aus dem AD-Papierkorb wiederhergestellt wird, befindet sich anschließend das Benutzerkonto logischerweise nicht mehr in der Gruppe1. Wird jedoch die Gruppe1 ebenfalls aus dem AD-Papierkorb wiederhergestellt, werden automatisch Forward- und Back-Link wiederhergestellt. Das Benutzerkonto ist wieder Mitglied der Gruppe1.

  • Existiert eine Gruppenverschachtelung, so das also GG1 Mitglied von GG2, diese wiederum Mitglied in GG3 ist und GG2 gelöscht wird, verschwinden ebenfalls die Gruppenzugehörigkeiten. Auch hier werden beim wiederherstellen der GG2 aus dem AD-Papierkorb, die Gruppenzugehörigkeiten und somit das Forward- und Back-Link automatisch wiederhergestellt.

 

Weitere Informationen:

2.175 Attribute msDS-DeletedObjectLifetime
2.109 Attribute isDeleted
2.112 Attribute isRecycled
2.179 Attribute msDS-EnabledFeature

The Active Directory database garbage collection process
Useful shelf life of a system-state backup of Active Directory
Viewing deleted objects in Active Directory

Sunday, February 01, 2009 1:03:55 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | AD-Powershell | Erweiterte Abfragen | Wiederherstellung  | 
 Sunday, January 18, 2009

Microsoft veröffentlicht im Herbst 2009 sein nächstes Serverbetriebssystem namens Windows Server 2008 R2. Das Minor Release wird ausschließlich in der x64-Bit Version und nicht mehr wie bisher in der 32-Bit Version erscheinen.

Ein Highlight-Feature im neuen Serverbetriebssystem stellt der Active Directory-Papierkorb dar, mit dem gelöschte Objekte samt allen Informationen (inklusive der Backlinks, wie z.B. die Gruppenmitgliedschaften eines Benutzers) wiederhergestellt werden können. Somit hat ein versehentliches löschen von Active Directory-Objekten in den Active Directory Domain Services (AD DS) und Active Directory Lightweight Directory Services (AD LDS, ehemals Active Directory Application Mode, kurz ADAM) keine weiteren Folgen. Weder entsteht bei der Wiederherstellung ein Verlust von Informationen, noch muss dafür der DC im Modus Verzeichnisdienstwiederherstellung gestartet werden.

Die Voraussetzung um dieses Feature nutzen zu können, ist der Gesamtstrukturfunktionsmodus Windows Server 2008 R2. Das bedeutet, alle Domänencontroller (DC) in allen Domänen einer Gesamtstruktur müssen unter Windows Server 2008 R2 betrieben werden.

 


 

 

 

Was ist möglich

  • Ein Windows Server 2008 R2 DC kann als zusätzlicher Domänencontroller zu einer Windows 2000 32bit Domäne hinzugefügt werden.

  • Ein Windows Server 2008 R2 DC kann als zusätzlicher Domänencontroller einer Windows Server 2003 bzw. Windows Server 2003 R2 Domäne hinzugefügt werden. Dabei können die bestehenden DCs sowohl unter einem 32bit, 64bit als auch iA64 Serverbetriebssystem betrieben werden.
  • Ein Windows Server 2008 R2 DC kann als zusätzlicher Domänencontroller einer Windows Server 2008 Domäne hinzugefügt werden. Die bereits existierenden DCs können ebenfalls unter 32bit, 64bit oder iA64 laufen.
  • Ein Windows Server 2003 ab SP2 64bit DC oder Windows Server 2003 R2 mit SP2 64bit DC kann per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden.
  • Ein 64bit Windows Server 2008 DC kann per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden.
  • Ein 64bit Windows Server 2008 Core DC kann per Inplace-Update auf einen Windows Server 2008 R2 Core aktualisiert werden.

 

Hinweis 1: Auch wenn die Mindestvoraussetzung für ein Inplace-Update ein Windows Server 2003 SP2 ist, sollte das System natürlich vor dem Update auf dem aktuellen Service Pack- sowie Patch-Stand sein. Wobei es ohnehin ratsam wäre, die Domänenaktualisierung durch einen zusätzlichen DC durchzuführen.

Hinweis 2: Vor einem Inplace-Update muss überprüft werden, ob auf dem DC die installierten Applikationen auch weiterhin unter Windows Server 2008 R2 noch funktionieren. Ein Telefonat mit dem Hersteller der Applikation sollte das schnell klären.


 

Was ist nicht möglich

  • Ein Inplace-Update von Windows NT auf Windows Server 2008 R2 wird nicht unterstützt. Es müsste zuerst ein Inplace-Update des NT-PDCs auf Windows Server 2003 SP1/SP2/2003 R2 und anschließend auf Windows Server 2008 R2 durchgeführt werden. Oder man migriert mit ADMT in eine Windows Server 2008 R2 Domäne.

    Durch die Änderung des Secure Channel (die Option "Secure channel: Require strong (Windows 2000 or later) session key" wurde nun mit Windwos Server 2008 R2 hard coded und lässt sich nicht mehr abschwächen wie es noch unter Windows Server 2008 möglich ist) zugunsten der Sicherheit ist es nicht mal möglich, Windows NT Clients sowie NT Mitgliedsserver in einer Windows Server 2008 R2 Domäne zu betreiben! Des Weiteren kann auch keine Vertrauensstellung zwischen einer Windows Server 2008 R2 und einer Windows NT Domäne erstellt werden.

  • Ein DC älter als ein Windows Server 2003 SP2 x64-System, kann nicht per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden.

  • Ein Inplace-Update von Windows Server 2003 SP1/SP2/2003 R2 x64 oder Windows Server 2008 x64 Vollinstallation (kein Server Core), ist auf den Windows Server 2008 R2 Core nicht möglich.

  • Ein Inplace-Update eines x64 Windows Server 2008 Core DCs kann nicht auf Windows Server 2008 R2 Vollinstallation durchgeführt werden.

    Windows Server 2008 Core

  • Ein Cross-Update von einem x86 auf x64 System wird nicht unterstützt. Ebenso wenig wie von einem iA64 auf x64 System. Das bedeutet, es ist nicht möglich auf einem 32bit Windows Server 2003 SP1/SP2/2003 R2/2008 DC eine Windows Server 2008 R2 DVD einzulegen, um das System per Inplace-Update zu aktualisieren.

  • Ein Cross-Update auf eine andere Betriebssystem-Sprache wird nicht unterstützt. Als Beispiel: Auf einem deutschen Windows Server 2003 SP2 x64 DC wird die englische Windows Server 2008 R2 DVD eingelegt um den DC, auf einen englischen Windows Server 2008 R2 DC zu aktualisieren.


 

Die Voraussetzungen für eine Windows 2000/2003/2003 R2/2008 Gesamtstruktur, damit der erste Windows Server 2008 R2 DC hinzugefügt werden kann

  • Die Domäne in der man den Windows Server 2008 R2 DC hinzufügen möchte, muss sich im einheitlichen Domänenfunktionsmodus (entweder Windows 2000 pur, Windows Server 2003 oder Windows Server 2008) befinden. Denn wenn sich die Domäne nicht im einheitlichen Domänenfunktionsmodus befindet, lässt sich der Befehl Adprep /Domainprep /Gpprep nicht ausführen. In welchem Modus sich der Gesamtstrukturfunktionsmodus befindet, spielt dabei keine Rolle.

  • Ist jedoch der Einsatz eines Windows Server 2008 oder Windows Server 2008 R2 RODCs in der Gesamtstruktur geplant, so ist das erst ab der Gesamtstrukturfunktionsebene Windows Server 2003 möglich. Des Weiteren muss sich bereits ein Windows Server 2008 DC oder Windows Server 2008 R2 DC in der Domäne befinden, in der man den RODC hinzufügen möchte.

  • Alle Domänencontroller in der Gesamtstruktur sollten sich mindestens auf Windows 2000 Server mit Service Pack 4 oder höher befinden.


 

Schritt für Schritt-Anleitung für eine 32bit oder x64 Windows 2000/2003/2003 R2/2008 Gesamtstruktur, damit der erste Windows Server 2008 R2 DC hinzugefügt werden kann

  1. Zuerst muss das Active Directory Preparation Tool (kurz ADPREP), das sich auf der Windows Server 2008 R2 DVD im Verzeichnis <DVD-Laufwerk>:\Support\Adprep befindet, mit dem Parameter /Forestprep auf dem Schema-Master ausgeführt werden. Allerdings befinden sich im Adprep-Verzeichnis zwei ADPREP-Dateien. Eine „Adprep.exe“ für x64-DCs und eine „Adprep32.exe“ für 32bit-DCs. Mit ausführen von Adprep32 /Forestprep auf einem 32bit Schema-Master, wird die Gesamtstruktur auf Windows Server 2008 R2 aktualisiert. Befindet sich der Schema-Master auf einem x64 DC, so lautet der Befehl Adprep /Forestprep.

    Hinweis: Im weiteren Verlauf des Artikels wird die x32Bit Version des Adpreps angegeben, da sicherlich in den meisten Unternehmen noch hauptsächlich 32bit DCs existieren.

    Der Parameter /Forestprep muss und kann nur ein einziges Mal in der Gesamtstruktur ausgeführt werden. Dabei muss das Benutzerkonto mit dem das ADPREP ausgeführt wird, Mitglied der folgenden drei Gruppen sein:

    - Organisations-Admins
    - Schema-Admins
    - Domänen-Admins in der Domäne, in der der Schema-Master Mitglied ist

    Ruft man das Adprep32 /Forestprep nicht auf dem Schema-Master auf, bringt das Tool den Hinweis, dass die Gesamtstrukturaktualisierung nur auf dem Schema-Master durchgeführt werden kann und bricht den Vorgang ab. Microsoft empfiehlt das Verzeichnis „Adprep“ (mit dem kompletten Inhalt!) vorher auf den DC zu kopieren, um z.B. Lesefehler des DVD-Laufwerks während der Ausführung von Adprep zu vermeiden.

    An error occurs when you run the ADPREP/FORESTPREP command on a Windows Server 2003-based or Windows Server 2008-based computer: "An attribute with the same link identifier already exists"


  2. Das Adprep32 /Forestprep aktualisiert die Gesamtstruktur auf Windows Server 2008 R2, in dem neue Attribute sowie Klassen dem Schema hinzugefügt bzw. bestehende (z.B. die Berechtigungen) geändert werden. Nach dem Aufruf von Adprep32 /Forestprep werden abhängig von der Schema-Version die LDF-Dateien, die zur Schema-Aktualisierung benötigt werden, aus dem Verzeichnis „Support\Adprep“ auf dem DC in das Verzeichnis „%windir%\system32“ kopiert.

    In einer Windows 2000 Gesamtstruktur werden die LDF-Dateien ab sch14.ldf, in einer Windows Server 2003 ab sch31.ldf, in einer Windows Server 2003 R2 ab sch32.ldf und in einer Windows Server 2008 Umgebung ab sch45.ldf bis zur sch47.ldf in das Schema importiert. Das Schema wird somit auf die Version 47 aktualisiert.

    Die Schema-Versionen sind (in Dezimal):

    - Schema-Version 13 = Windows 2000 RTM mit allen Service Packs
    - Schema-Version 30 = Windows Server 2003 RTM mit allen Service Packs
    - Schema-Version 31 = Windows Server 2003 R2 RTM mit allen Service Packs
    - Schema-Version 44 = Windows Server 2008 RTM mit allen Service Packs
    - Schema-Version 47 = Windows Server 2008 R2 mit allen Service Packs

    Die Schema-Version kann man sich auf jedem DC in der Gesamtstruktur zum einen in der Registry in dem folgenden Pfad ansehen:

    HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\<Schema Version>

    Zum anderen lässt sich im Attribut objectVersion, das sich in den Eigenschaften der Schema-Partition CN=Schema,CN=Configuration,DC=<Root-Domäne>,DC=<TLD> befindet, die Schemaversion anzeigen (z.B. mit ADSIEdit.msc oder LDP.exe).

    Auch mit Dsquery lässt sich die Schema-Version abfragen. Der Befehl lautet wie folgt:
    dsquery * CN=Schema,CN=Configuration,DC=Root-Domäne -Scope Base -attr objectVersion


  3. Wenn das Adprep32 /Forestprep durchgeführt wurde, wird in der Konfigurationspartition der Container CN=ActiveDirectoryUpdate,CN=ForestUpdates,CN=Configuration,DC=<Root-Domäne> erstellt. Der Container selbst bleibt leer. Das Attribut Revision in den Eigenschaften des Containers CN=ActiveDirectoryUpdate erhält den Wert 5. Danach sollte sichergestellt werden, dass sich dieser Container zuerst auf alle DCs der Gesamtstruktur repliziert, um dann den nächsten Schritt mit Adprep durchzuführen.

    In erster Linie sollten die DC`s der einzelnen Domänen die Aktualisierung empfangen haben, die die FSMO-Rolle des Infrastruktur-Master innehaben. Dazu gilt es den nächsten Punkt zu beachten.


    Hinweis für Windows Server 2008 Umgebungen:
    Falls schon ein Windows Server 2008 DC in der (z.B. Windows 2000 oder Windows Server 2003) Domäne besteht oder es sich um eine reine Windows Server 2008 Umgebung handelt, existiert bereits der Container CN=ActiveDirectoryUpdate. Das Attribut Revision enthält dagegen als Wert 2. Wird nun das Adprep32 /Forestprep von der Windows Server 2008 R2 DVD ausgeführt, wird der Wert auf 5 geändert.


    Hinweis: Im Gegensatz zu Windows Server 2008 Zeiten kann nun auch auf einem deutschen Schemamaster das ADPREP von einer englischen Windows Server 2008 R2 DVD ausgeführt werden. Zu Zeiten Windows Server 2008 gab es an dieser Stelle ein Sprach-Problem und nach dem Ausführen von ADPREP passierte einfach nichts, es erschien noch nicht einmal eine Fehlermeldung. Aber: Existiert ein englischer Schemamaster und man führt das ADPREP von einer deutschen Windows Server 2008 R2 DVD aus, besteht der Fehler weiterhin. Der Cursor blinkt in der nächsten Zeile ohne das irgendetwas passiert. Besteht ein englischer Schemamaster, kann man entweder den Schemamaster auf einen deutschen DC verschieben und danach das ADPREP von einer deutschen DVD ausführen oder man führt das ADPREP gleich von einer englischen DVD aus!

    ADPREP "multi-language"


  4. Im zweiten Schritt muss das Adprep32 mit den Parametern /Domainprep /Gpprep auf dem Infrastruktur-Master in der Domäne, in der man den Windows Server 2008 R2 als DC hinzufügen möchte, ausgeführt werden. Das Benutzerkonto, mit dem dieser Befehl ausgeführt wird, muss Mitglied der Sicherheitsgruppe Domänen-Admins sein. Mit Ausführen von /Domainprep /Gpprep wird die Domäne auf Windows Server 2008 R2 aktualisiert. Der Parameter /Domainprep bewirkt, dass neue Objekte erstellt sowie die ACLs an diversen Objekten in der Domänenpartition geändert werden.  Der Parameter /Gpprep sorgt dafür, dass die Berechtigungen der Gruppenrichtlinienobjekte die sich im Sysvol-Verzeichnis befinden, angepasst werden. Führt man diesen Befehl aus, noch bevor die Gesamtstrukturaktualisierung auf den Infrastruktur-Master repliziert wurde, bricht der Vorgang ab. Dieser bricht auch dann ab, wenn der Befehl nicht auf dem Infrastruktur-Master ausgeführt wird. Durch Ausführen dieses Befehls wird der folgende Container in der Domänenpartition erstellt: CN=ActiveDirectoryUpdate,CN=DomainUpdates,CN=System,DC=<Domäne>

    Auch dieser Container bleibt leer. Das Attribut Revision das sich in den Eigenschaften des Containers CN=ActiveDirectoryUpdate befindet, bekommt ebenfalls den Wert 5. Es ist möglich zuerst das Adprep lediglich mit dem Parameter /Domainprep auszuführen und zu einem späteren Zeitpunkt die Berechtigungen der GPOs, mit Adprep /Domainprep /Gpprep zu aktualisieren. Empfehlenswert ist jedoch, beide Parameter in einem Schritt durchzuführen.


    Hinweis für Windows Server 2008 Umgebungen:
    Wenn sich aber bereits ein Windows Server 2008 DC in der (z.B. Windows 2000 oder Windows Server 2003) Domäne befindet oder es sich um eine reine Windows Server 2008 Umgebung handelt, besteht bereits der Container CN=ActiveDirectoryUpdate in der Domänenpartition. Der Wert im Attribut Revision wird dann von 3 auf 5 geändert. In den Umgebungen wo bereits ein Windows Server 2008 DC existiert, ist es auch nicht notwendig den Parameter /Gpprep auszuführen, da bereits die Berechtigungen der GPOs im Sysvol-Verzeichnis angepasst wurden. Das gilt aber nur für die Umgebungen, in denen bereits beim hinzufügen des zusätzlichen Windows Server 2008 DCs der Parameter /Gpprep mit angegeben wurde. In einer Windows Server 2008 Domäne ist der Parameter /Gpprep ohnehin nicht notwendig. Es ist aber nicht weiter tragisch wenn der Parameter doch mit angegeben werden sollte, denn der Assistent bringt lediglich den Hinweis, dass die Berechtigungen der GPOs bereits angepasst wurden.


  5. Wenn der Einsatz eines Read-Only Domain Controllers (RODC) in irgendeiner Domäne der Gesamtstruktur geplant ist, dann ist das Adprep32 mit dem Parameter /Rodcprep lediglich einmalig aufzurufen.  Der DC, auf dem dieser Befehl ausgeführt wird, muss auch nicht der Träger der FSMO-Rollen sein. Beim Ausführen dieses Befehls werden die einzelnen Infrastruktur-Master der Domänen kontaktiert, um die Berechtigungen (Security Descriptor, SD) der Domänen- sowie Anwendungsverzeichnispartitionen DomainDNSZones und ForestDNSZones zu aktualisieren.

    Es reicht völlig aus, diesen Befehl erst vor dem Hinzufügen des ersten RODC`s in der Gesamtstruktur auszuführen. Das Benutzerkonto, mit dem dieser Befehl ausgeführt wird, muss Mitglied in der Sicherheitsgruppe Organisations-Admins sein. Nach Ausführung von /Rodcprep wird der folgende Container, der ebenfalls leer bleibt, erstellt:
    CN=ActiveDirectoryRodcUpdate,CN=ForestUpdates,CN=Configuration,DC=<Root-Domäne>.

    Das Attribut
    Revision in den Eigenschaften des Containers, erhält als Wert 2.


    Hinweis für Windows Server 2008 Umgebungen:
    Existiert bereits ein Windows Server 2008 DC in der (z.B. Windows 2000 oder Windows Server 2003) Domäne oder handelt es sich um eine reine Windows Server 2008 Umgebung, so kann ein Windows Server 2008 R2 als RODC zur Domäne hinzugefügt werden. Es ist nicht unbedingt notwendig, dass bereits ein Windows Server 2008 R2 DC in der Domäne besteht um einen Windows 2008 R2 als RODC zur Domäne hinzuzufügen. Denn die Voraussetzungen um einen RODC zur Domäne hinzuzufügen sind schließlich, dass sich der Gesamtstrukturfunktionsmodus mindestens auf „Windows Server 2003“ befindet, sich bereits ein Windows Server 2008 DC in der Domäne befindet und das Adprep32 /Rodcprep ausgeführt wurde.

    Read-Only Domain Controller (RODC)
    Die Installation eines RODC


  6. Wird eine neue Gesamtstruktur unter Windows Server 2008 R2 erstellt, so ist das Ausführen von Adprep/Adprep32 keineswegs notwendig. Weder der Parameter /Forestprep, noch /Domainprep /Gpprep oder /Rodcprep müssen angewendet werden.


  7. Es wird bei jedem Ausführen von Adprep im Verzeichnis %Systemroot%\Debug\Adprep\Logs ein Ordner erstellt, dass als Namen das aktuelle Datum sowie die Uhrzeit erhält. Darin befindet sich (neben anderen) das Adprep-Protokoll mit dem Namen ADPrep.log, welches einen detaillierten Bericht zum Vorgang liefert. Wenn Adprep abbrechen oder einen Fehler melden sollte, ist dieses Protokoll bei der Fehlersuche hilfreich.

    Debug Protokollierung


  8. Nach der Domänenaktualisierung auf Windows Server 2008 R2, kann nun der neue Server als "zusätzlicher DC der bestehenden Domäne" hinzugefügt werden. Während dem Heraufstufen zum DC sollte an entsprechender Stelle, dass DNS mit installiert und zusätzlich der globale Katalog aktiviert werden. Anschließend sollten noch die FSMO-Rollen auf den Windows Server 2008 R2 DC verschoben werden.

    Globaler Katalog (Global Catalog – GC)
    Der PDC-Emulator

    Die FSMO-Rollen verschieben



 

Szenario 1

Eine Domänenaktualisierung von Windows 2000 auf Windows Server 2008 R2 durchführen

  1. In einer Windows 2000 Active Directory Umgebung kann die Domänenaktualisierung auf Windows Server 2008 R2 über einen zusätzlichen Windows Server 2008 R2 DC realisiert werden. Dazu ist zuerst die Schritt für Schritt-Anleitung die am Anfang dieses Artikels beschrieben ist durchzuführen. Anschließend kann ein Windows Server 2008 R2 als zusätzlicher Domänencontroller der bereits bestehenden Domäne hinzugefügt werden.

  2. Es ist zuerst ein Inplace-Update von Windows 2000 auf Windows Server 2003 mit mindestens dem Service Pack 2 (besser aktueller) durchzuführen. Erst dann kann per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden, natürlich auch erst nach Ausführung der Schritt für Schritt-Anleitung.


 

Szenario 2

Eine Domänenaktualisierung von Windows Server 2003 auf Windows Server 2008 R2 durchführen

  1. Wie in einer Windows 2000 Gesamtstruktur sollte auch in einer Windows Server 2003 Gesamtstruktur die Domänenaktualisierung über einen zusätzlichen Windows Server 2008 R2 Domänencontroller erfolgen. Selbstverständlich auch nur dann, wenn die Schritt für Schritt-Anleitung durchgeführt wurde.

  2. Ist mindestens das Service Pack 2 für den Windows Server 2003 auf dem DC installiert, so kann mit einem Inplace-Update der Windows Server 2003 DC auf Windows Server 2008 R2 aktualisiert werden. Die Schritt für Schritt-Anleitung die am Anfang dieses Artikels beschrieben wird, ist dabei zuerst durchzuführen.


 

Szenario 3

Eine Domänenaktualisierung von Windows Server 2003 R2 auf Windows Server 2008 R2 durchführen

  1. Da in einem Windows Server 2003 R2 ein Windows Server 2003 mit mindestens dem Service Pack 2 enthalten ist, kann nach vorheriger Ausführung der Schritt für Schritt-Anleitung ein zusätzlicher Windows Server 2008 R2 DC zur bestehenden Domäne hinzugefügt werden.

  2. Des Weiteren kann ein Windows Server 2003 R2 SP2 DC per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden, wenn vorher die Schritt für Schritt-Anleitung durchgeführt wurde.


 

Szenario 4

Eine Domänenaktualisierung von Windows Server 2008 auf Windows Server 2008 R2 durchführen

  1. Eine Domänenaktualisierung kann durch hinzufügen eines zusätzlichen Windows Server 2008 R2 DCs durchgeführt werden. Die Schritt für Schritt-Anleitung am Anfang des Artikels gilt es zuerst durchzuführen. Hier in Kurzform: Zuerst muss auf dem Schema-Master das Adprep32 /Forestprep und auf dem Infrastruktur-Master das Adprep32 /Domainprep ausgeführt werden.

  2. Ein Windows Server 2008 DC kann auch per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden. Vorher muss ebenfalls auf dem Schema-Master das Adprep32 /Forestprep und auf dem Infrastruktur-Master das Adprep32 /Domainprep durchgeführt werden.


 

Szenario 5

Eine Domänenaktualisierung von einem x64Bit Windows Server 2008 Core auf Windows Server 2008 R2 Core durchführen

  1. Die Domänenaktualisierung kann hier ebenfalls durch hinzufügen eines zusätzlichen Windows Server 2008 R2 Core DCs erfolgen. Natürlich muss auch in diesem Fall vorher das ausführen von Adprep32 /Forestprep auf dem Schema-Master und das Adprep32 /Domainprep auf dem Infrastruktur-Master erfolgen.

  2. Der x64Bit Windows Server 2008 Core DC lässt sich per Inplace-Update auf einen Windows Server 2008 R2 Core aktualisieren. Auch hier gilt es im ersten Schritt auf dem Schema-Master das Adprep /Forestprep und im zweiten, auf dem Infrastruktur-Master das Adprep /Domainprep auszuführen.


 

Szenario 6

Eine Windows Server 2008 R2-Subdomäne in einer Windows 2000/2003/2003 R2/2008 Gesamtstruktur erstellen

  1. Soll in einer Gesamtstruktur die erste Windows Server 2008 R2-Domäne und somit der erste Windows Server 2008 R2-DC zur Gesamtstruktur hinzugefügt werden, so muss lediglich auf dem Schema-Master das Adprep /Forestprep ausgeführt werden. Anschließend kann mit dem Windows Server 2008 R2 die Subdomäne erstellt werden.

    Befindet sich in einer Windows 2000 Umgebung die FSMO-Rolle des Domänennamenmasters auf einem Windows 2000 DC, wird das Attribut msDS-BehaviorVersion im entsprechenden crossRef-Objekt nicht aktualisiert, wenn eine Subdomäne bzw. eine neue Domänenstruktur (Tree) unter Windows Server 2008 oder Windows Server 2008 R2 erstellt wird. In diesem Fall kann es bei einigen Anwendungen zu Kompatibilitätsproblemen kommen. Insbesondere wenn mit DCDIAG die AD-Replikation überprüft werden soll, schlägt der Replikationstest fehl. Die Abhilfe dieses Problems ist, die Rolle des Domänennamenmasters entweder auf einen Windows Server 2003, Windows Server 2008 oder Windows Server 2008 R2 DC zu übertragen, bevor eine neue Subdomäne bzw. eine neue Domänenstruktur (Tree) erstellt wird.

 


Weitere Informationen:
Den ersten Windows Server 2008 DC zu einer Windows 2000/2003/R2 Gesamtstruktur hinzufügen
Migration von Windows Server 2000 auf Windows Server 2003 (Inplace-Update)
Schemaupdate beim Windows Server 2003 R2
Einen zusätzlichen DC in die Domäne hinzufügen
Die AD-Powershell im Windows Server 2008 R2

Das Active Directory Preparation Tool – ADPREP 
Domänen- und Gesamtstrukturfunktionsmodus
Windows Server 2008 R2 Upgrade Paths
Upgrading Active Directory Domains to Windows Server 2008 and Windows Server 2008 R2 AD DS Domains

Sunday, January 18, 2009 12:07:24 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Installation | Migration  | 
 Friday, January 09, 2009

Microsoft hat auf 563 Seiten den Active Directory Domain Services Operations Guide veröffentlicht.

Darin erhält man Informationen über die Administration und Verwaltung einer Active Directory Domain Services (AD DS) Umgebung unter Windows Server 2008.


Den Download zum Whitepaper findet ihr hier:

Active Directory Domain Services Operations Guide


Viel Spass beim lesen.

Friday, January 09, 2009 8:48:28 AM (W. Europe Standard Time, UTC+01:00)  #      Active Directory  | 
 Monday, January 05, 2009

So einfach wie die Frage im ersten Moment klingt, so schwierig ist sie zu beantworten. Gleich vorweg, letztendlich lässt sich diese Frage nicht pauschal beantworten, denn es gibt keine Faustformel dazu, die Anzahl der benötigten Domänencontroller (DCs) zu berechnen.

Aber eins kann man mit Gewissheit empfehlen, jede Domäne muss wegen der Ausfallsicherheit und Verfügbarkeit mindestens zwei DCs enthalten!

Damit ist zumindest sichergestellt, dass bei einem DC-Crash der zweite DC die Domäne noch am Leben erhält. In vielen Umgebungen wird die Anzahl der DCs an der Ausfallsicherheit, der Standortverteilung oder der Anzahl der Benutzer pro Standort bestimmt. Die Bandbreitenanbindung bei bestehen von mehreren Standorten ist für die Anzahl an DCs, ebenfalls von elementarer Bedeutung.

Es kommt bei der Ermittlung der genauen Anzahl an DCs immer auf die Umgebung an.

Wie viele DCs in der Domäne benötigt werden, hängt außerdem von den Ansprüchen des Unternehmens ab. Natürlich hat ein großes Unternehmen mit vielen Standorten andere Ansprüche bzgl. der hohen Verfügbarkeit, Fehlertoleranz sowie Redundanz, als kleinere und mittlere Unternehmen (KMU) mit vielleicht nur einem Standort.

Die folgenden Kriterien helfen bei der Definition der Anzahl an DCs pro Domäne:

  • Wie viele AD-Standorte existieren?
  • In wie vielen Ländern?
  • Mit welcher (stabilen?) Bandbreite?
  • Wie viele Benutzer existieren pro Standort?
  • Wie viel Last besteht auf den DCs während der Benutzerauthentifizierungen?
  • Existiert eine Exchange-Umgebung?
  • Existieren Applikationen die vom AD abhängig sind?
  • Gibt es Standorte, die besonders AD-lastig arbeiten?
  • Existieren Standorte, in denen mehr gesamtstrukturweite Abfragen, sprich der globale Katalog überwiegend beansprucht wird?
  • Besteht aktuelle Hardware für die Domänencontroller?


Alle diese Faktoren helfen die Anzahl der DCs innerhalb einer AD-Domäne festzulegen. Jedoch schließt das Installieren von mehreren DCs natürlich keineswegs eine regelmäßige Datensicherung des System-State aus. Diese muss ohnehin durchgeführt werden. Die Sicherung des Systemstatus ist das Mindeste, was auf einem DC gesichert werden muss!

Bei der Hardware der DCs kommt es insbesonders auf die CPU (welcher Prozessor und wie viele existieren?), Festplattenspeicher und vor allem dem Arbeitsspeicher an. Denn idealerweise sollte die Active Directory-Datenbank „NTDS.dit“ in den Arbeitsspeicher geladen werden können. Dabei läuft das Active Directory in dem LSASS Prozess.

Microsoft stellt auf der folgenden Seite seine Tests dar, die sie vor einigen Jahren mit HP-Proliant Servern durchgeführt hatten. Dort gewinnt man ebenfalls einige Anhaltspunkte zu der benötigten Anzahl an DCs.

Determining the Minimum Number of Domain Controllers Required


Weitere Ansätze über die Anzahl und Hardwareausstattung der DCs, liefern diese Seiten:

Step B2: Determine the Number of Domain Controllers
Planning Domain Controller Capacity: Active Directory


Größere Unternehmen mit mehreren Standorten sollten sich dieses Whitepaper durchlesen:

Windows Server 2003 Active Directory Branch Office Guide


Oftmals ist es gerade in kleineren und mittleren Unternehmen so, das die Maschine die als einziger DC fungiert, nicht nur die Funktion eines DCs wahrnimmt. Dieser ist Datei- sowie Applikationsserver und wenn nicht sogar noch Mailserver zugleich (SBS). In diesen Umgebungen kann man sich oftmals keinen dedizierten zweiten DC leisten. Dabei reicht schon eine nicht ganz veraltete Client-Hardware aus, um auf diesem einen weiteren DC zu installieren (natürlich wird eine weitere Server-Lizenz benötigt). Falls dennoch kein zweiter DC installiert werden kann, ist umso mehr auf die regelmäßige und funktionierende System-State Sicherung zu achten.

Wenn es aber auf dem einzigen DC zu Performanceproblemen kommt, sollte eine Auslastungsanalyse über einen längeren Zeitraum durchgeführt werden (z.B. eine Woche). Dabei ist ein besonderes Augenmerk auf den Speicherverbrauch der Lsass.exe zu werfen. Erst nach der Analyse lässt sich ableiten, ob der DC überlastet bzw. die Hardware nicht ausreichend ist. Die Lösung könnte dann z.B. eine aktuelle Hardware, ein x64-DC oder ein weiterer DC sein. Wobei mit Blick auf das nächste Serverbetriebssystem, der Windows Server 2008 R2 ohnehin nur noch als x64-Bit Version ausgeliefert wird.

 

Weitere Informationen:
Memory usage by the Lsass.exe process on domain controllers that are running Windows Server 2003 or Windows 2000 Server

Monday, January 05, 2009 9:38:27 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration | Installation  | 
 Sunday, December 21, 2008
Die Unternehmen entwickeln sich und ihre Produkte weiter. Stetig müssen sich die Firmen an die Marktansprüche und an die Kundenwünsche anpassen, um ihr Business zu betreiben. So wie sich die Unternehmen an die Marktansprüche anpassen müssen, so muss sich auch die IT innerhalb eines Unternehmens anpassen, um den wirtschaftlichen Interessen des Unternehmens auch aus der IT-Sicht gerecht zu werden.

Die Firmen die bereits schon seit längerem eine Active Directory-Umgebung betreiben, denken vielleicht darüber nach ihre Gesamtstruktur zu verändern. Ihre schon in die Jahre gekommene Struktur spiegelt evtl. die heutigen Ansprüche des Unternehmens nicht wieder. Für die damalige Zeit war das gewählte Multidomänenmodell vielleicht notwendig und das richtige Domänenmodell. Aber heute ist das damals gewählte Domänendesign in die Jahre gekommen und genügt evtl. weder den heutigen Ansprüchen, noch ist es zeitgerecht.

Es kann viele Gründe dafür geben, warum eine Umstrukturierung der Gesamtstruktur sinnvoll wäre. Ein weiterer Grund für das Re-Design der Umgebung wäre z.B. der Domänenname. Eine Migration in eine neue Gesamtstruktur ist in vielen Umgebungen sinnvoller, als den Domänennamen zu ändern. Oder wenn Firmen fusionieren und die eine Firma in die andere migriert werden soll.

Ist erst mal die Entscheidung getroffen den Schritt einer Umstrukturierung zu gehen, sei es innerhalb einer Gesamtstruktur (Intra-Forest) oder in eine neue Gesamtstruktur zu migrieren (Inter-Forest, zwischen zwei Gesamtstrukturen), so gilt es als einer der nächsten Schritte das richtige Migrationswerkzeug zu wählen.

Auf der Suche im Internet nach einem Migrationstool stößt man recht schnell auf das kostenlose Werkzeug von Microsoft. Das Tool nennt sich Active Directory Migration Tool - ADMT. Aber neben dem ADMT stolpert man unter anderem über das kommerzielle Werkzeug aus dem Hause Quest. Der Quest Migration Manager for Active Directory (kurz QMMAD) ist das Pendant zu ADMT und kann einiges mehr als das wohlgemerkt kostenlose Tool von Microsoft. Aber neben Quest wäre noch das Migrationswerkzeug von NetIQ zu erwähnen (was hier jedoch nicht berücksichtigt wird).

 

Migrationsmöglichkeiten

Eine Domänenmigration kann auf verschiedene Wege mit verschiedenen Werkzeugen erfolgen. Viele Unternehmen nehmen eine Domänenmigration auch zum Anlass, ihre Daten neu zu organisieren. Denn durch die Jahre entstand auf manchen Fileservern evtl. diverser Daten-Wildwuchs, den es neu zu strukturieren gilt. Die Migration muss natürlich ohne größere Auswirkungen auf die produktiven Einheiten und möglichst unauffällig verlaufen.


1. Die Migration mit Hilfe von Skripten

Einige Unternehmen migrieren ihre Benutzer-, Gruppen- sowie Computerkonten mit ADMT in die neue Domäne. Die File- bzw. Ressourcenserver fügen sie händisch der Ziel-Domäne hinzu und führen anschließend das sogenannte Re-ACLing (=Rechte neu setzen) ihrer Netzwerkressourcen (Dateien, Drucker etc.), mit Skripten durch. Dabei kommt oft ein Computer-Startupskript zum Einsatz.


2. Die Migration mit der SIDHistory

Je nach Größe bzw. Dauer der Migration ist es evtl. notwendig, dass die bereits migrierten Benutzer noch auf die Ressourcen in der Quell-Domäne zugreifen können. Damit während der Migrationsphase die bereits migrierten Benutzer, sei es bei einer Intra- oder Inter-Forest Migration, weiterhin Zugriff auf die Ressourcen der alten Domäne haben, wäre einer der gängigsten Varianten die während einer Migration zum Einsatz kommen, die Migration mit der SIDHistory. Dadurch kann das neue Benutzerkonto aus der neuen Domäne, auf die Ressourcen der alten Domäne zugreifen. Das Attribut SIDHistory ist ein mehrwertiges Attribut in dem eine Liste der SIDs, die zuvor einem Benutzer oder einer Gruppe zugewiesen wurden, eingetragen wird.

Mit den entsprechenden Migrationswerkzeugen, wie z.B. den im weiteren Verlauf vorgestellten Tools, können die Benutzer- und Gruppenkonten mit ihrer SID migriert werden. Dabei wird ein neues Sicherheitsprinzipal (Benutzer- oder Gruppenkonto) in der neuen Domäne erstellt und die SID des alten Sicherheitsprinzipals an das neue Konto der neuen Domäne im Attribut SIDHistory hinzugefügt. Dadurch wäre das neue Benutzerkonto in der Lage, die alte SID als "Ausweis" vorzuzeigen, wenn die neue SID des Benutzerkontos keinen Zugriff bekommt. Möchte also das "neue" Benutzerkonto aus der neuen Domäne, auf die Ressourcen der "alten" Domäne zugreifen, tritt hier die SIDHistory in Aktion.

Wird ein Benutzer von einer Domäne in eine andere migriert, so wird seine SID nicht mit übernommen, denn der mittlere Part der SID ist die Nummer der Domäne. Bei der Benutzer-Migration mit den herkömmlichen Migrationswerkzeugen wird jedesmal ein neues Benutzerkonto mit einer neuen SID in der Ziel-Domäne eingerichtet. Da das neue Benutzerkonto eine neue SID bekommen hat, bekommt das Konto nicht die gleichen Berechtigungen wie es das alte Benutzerkonto hatte, auch wenn der Benutzername gleich lautet. Denn bekanntlich sind Namen in der IT "Schall und Rauch". Dank der SIDHistory aber, müssen die Berechtigungen in der alten Domäne nicht gleich angepasst werden, denn dadurch hat das neue Benutzerkonto Zugriff auf die Ressourcen der alten Domäne.

Die SIDHistory funktioniert sogar wenn die alte Domäne nicht mehr existiert! Wenn die Verbindung zur alten Domäne aufgelöst wurde (Domäne wurde entfernt oder die Verbindung ist getrennt), werden die Berechtigungseinträge auf den Ressourcen nicht mehr im Klartext als Namen angezeigt, sondern es erscheint die SID (S-1-5-21-…). Die Berechtigungen funktionieren aber wie bereits erwähnt weiterhin. Dafür erschwert sich aber die Administration, da man nicht mehr so einfach beurteilen kann, um welches Konto es sich dabei handelt. Wie denn auch, wenn niemand mehr weiß wie die Konten hießen.

Wenn die Migration abgeschlossen ist, wäre es ohnehin empfehlenswert die SIDHistory zu bereinigen. Nach dem bereinigen der SIDHistory kann der Benutzer lediglich mit der "neuen" SID auf die Ressourcen zugreifen. Die ACL-Umsetzung sollte natürlich zu diesem Zeitpunkt bereits abgeschlossen sein.

Denn wenn sich nämlich ein Benutzer anmeldet, bekommt er ein Access-Token in dem seine richtige SID, die SIDs der SIDHistory (samt der SIDHistory aller Gruppen) und die SID's aller Gruppen, denen der Benutzer angehört (direkt oder verschachtelt), enthalten ist. Das Access-Token kann aber max. 1024 Einträge enthalten und von daher, sollte nach einer Migration die SIDHistory stets bereinigt werden. Ansonsten könnte es bei zukünftigen Migrationen zu Problemen kommen.

Zum entfernen der SIDHistory kann dazu das folgende VBSkript verwendet werden.
How To Use Visual Basic Script to Clear SidHistory


Leider ist die Handhabung mit dem Skript eher umständlich, denn die Objekte bei denen die SIDHistory entfernt werden soll, müssen einzeln angegeben werden. Aber mit etwas Skriptingkenntnisse lässt sich das Skript an die eigenen Bedürfnisse anpassen. Alternativ lässt sich die SIDHistory auch mit ADModify entfernen.


3. Die Migration mit Dual-ACL

Neben der Variante mit der SIDHistory, kommt als weitere gängige Migrationsvariante Dual-ACL häufig zum Einsatz. Auch hierbei können während der Migrationsphase die bereits migrierten Benutzer, sei es bei einer Intra- oder Inter-Forest Migration, weiterhin auf die Ressourcen der alten Domäne zugreifen. Dadurch kann das neue Benutzerkonto aus der neuen Domäne, auf die Ressourcen der alten Domäne zugreifen.

Die in diesem Artikel erwähnten Migrationstools können auch die vorhandenen Berechtigungen auf Clients oder Servern bearbeiten. Die bereits migrierten „neuen“ Benutzer- und Gruppenkonten können zusätzlich zu den vorhandenen Berechtigungen eingetragen werden (Dual ACL) oder die alten Berechtigungen auf den Ressourcen ersetzen. Mit ADMT kann das der Assistent zur Computermigration durchführen, während im QMMAD das Ressource Updating dafür zuständig ist.



Weitere hilfreiche Tools für die Migration

Je nachdem welche Migrationsstrategie und welches Migrationswerkzeug man gewählt hat, können im Nachhinein die Tools wie SUBINACL oder SIDWALK dabei helfen, die Berechtigungen zu bereinigen. Auch das ADModify kann bei Massenänderungen, die bei einer Migration notwendig sein könnten, hilfreich sein.



Die SID-Filterung bei der Inter-Forest Migration

Die SID-Filterung ist dazu gedacht, die Benutzer an der Nutzung der im Attribut SIDHistory eingetragenen SIDs daran zu hindern, um auf Ressourcen einer separaten Gesamtstruktur zuzugreifen. Die SID-Filterung zu deaktivieren stellt aber ein gewisses Sicherheitsrisiko dar, denn ein Angreifer mit Administratorrechten könnte administrative SIDs in der vertrauenden Gesamtstruktur dem Attribut SIDHistory eines Sicherheitsprinzipals in der vertrauten Gesamtstruktur hinzufügen. Damit ist es dem Konto möglich, administrativen Zugriff auf die vertraute Gesamtstruktur zu erlangen.

Mit der SID-Filterung kann die Verwendung des Attributs SIDHistory in der gesamten Gesamtstrukturvertrauensstellung bzw. externen Vertrauensstellung blockiert werden. Wenn aber das neue Benutzerkonto auf die Ressourcen der alten Domäne zugreifen möchte, muss bei einer Inter-Forest Migration die SID-Filterung ausgeschaltet sein. Die SID-Filterung sollte aber nur für einen begrenzten Zeitraum deaktiviert werden.

Die SID-Filterung lässt sich mit NETDOM, welches sich in den Windows Support Tools befindet, deaktivieren. Der Befehl lautet wie folgt:
Netdom Trust TrustingDomainName /domain:TrustedDomainName /quarantine:No /userD:Domänen-Administrator /passwordD:Domänen-Admin-Kennwort

Disable SID filter quarantining

Es wäre auch möglich, die auf die Gesamtstrukturvertrauensstellung angewendete Standard-SID-Filterung mit der Option /enablesidhistory:yes abzuschwächen.
Der genaue Befehl lautet folgendermaßen:
Netdom Trust TrustingDomainName /domain:TrustedDomainName /enablesidhistory:Yes /usero:Domänenadministratorkonto /passwordo:Domänenadministratorkennwort

 

Was sind die Voraussetzungen für eine Migration mit ADMT oder dem QMMAD?

  • Natürlich muss zuerst auf IP-Ebene das Routing zwischen der Quell- und Ziel-Domäne funktionieren.

  • Als nächstes muss die Namensauflösung zwischen der Quell- und Ziel-Domäne sichergestellt sein. Dazu könnte man im DNS entweder eine sekundäre Zone der jeweils anderen Domäne einrichten oder ab Windows Server 2003 eine bedingte Weiterleitung einrichten. Neben der DNS-Namensauflösung könnte man zusätzlich noch die NetBIOS-Namensauflösung z.B. durch eine WINS-Replikation sicherstellen.

  • Idealerweise sollte eine (einseitige oder bidirektionale) Vertrauensstellung zwischen der Quell- sowie Ziel-Domäne existieren.

  • Die Ziel-Domäne muss sich sowohl bei einer Intra-Forest als auch Inter-Forest Migration im einheitlichen Modus befinden. Der Grund dafür ist, da das Attribut SIDHistory in Benutzer- sowie Gruppenkonten nur im einheitlichen Modus verfügbar ist. Nur wenn sich die Ziel-Domäne im Domänenfunktionsmodus „Windows 2000 pur“, „Windows Server 2003“ oder „Windows Server 2008“ befindet, kann die SIDHistory mit Werten gefüllt werden. Wobei eine Inter-Forest Migration auch ohne die SIDHistory stattfinden kann, jedoch stellt die SIDHistory eine Art doppelter Boden dar. Denn die Migration an sich ist kompliziert und aufwändig genug, wenn man da nicht an jede Berechtigung denkt erhöht sich der administrative Aufwand im nachhinein unnötig.

 

Die Migration mit dem Active Directory Migration Tool - ADMT

Das ADMT existiert in der Version 2.0, 3.0 sowie 3.1. Die Installation des ADMT v2.0 kann auf Windows 2000 Server oder Windows Server 2003 erfolgen. Wobei das ADMT v3.0 nur auf Windows Server 2003 und die ADMT v3.1 nur auf Windows Server 2008 (aber nicht auf einem RODC oder Server Core) installiert werden kann.

Während der Installation von ADMT wird auch die Microsoft SQL Server Desktop Engine (MSDE) mit installiert. Das Tool kann aber so konfiguriert werden, dass es entweder die MSDE oder einen bereits bestehenden SQL-Server verwendet. Das ADMT besteht aus einer Reihe von Assistenten, die für die Migration der Objekte verwendet werden können.

Nach der Installation steht das Tool als MMC unter Start-Programme-Verwaltung-Active Directory Migration Tool zur Verfügung.

Das Benutzerkonto mit dem das ADMT ausgeführt wird, sollte Administratorrechte in der Quell-sowie Ziel-Domäne haben. Es muss bei der Migration der Computerkonten ein Agent auf den Clients installiert werden und das funktioniert natürlich nur, wenn das Konto lokale Adminrechte hat.

Das ADMT kann für eine Intra-Forest (innerhalb der Gesamtstruktur) oder Inter-Forest (zwischen zwei Gesamtstrukturen) Migration eingesetzt werden. Das Werkzeug kann über die grafische Oberfläche oder als Kommandozeilentool eingesetzt werden. Es stellt auch eine Skriptingschnittstelle bereit.

Bevor es an die produktive Migration mit ADMT geht, gilt es unbedingt vorher das Whitepaper zum Tool zu lesen und idealerweise eine Testmigration in einer Testumgebung durchzuführen.

Active Directory Migration Tool v.2.0
Active Directory Migration Tool v3.0
ADMT v3 Migration Guide
Active Directory Migration Tool version 3.1
ADMT v3.1 Guide: Migrating and Restructuring Active Directory Domains
How to troubleshoot inter-forest sIDHistory migration with ADMTv2
You find that several custom attributes are missing when you use ADMT to migrate users between two forests




Quest Migration Manager for Active Directory - QMMAD

Der Hersteller wirbt mit den Worten Zero Impact für sein Werkzeug und in der Tat fallen einem je nach Migration die Vorteile recht fix ins Auge. Das Tool welches zur Zeit in der Version 8.3 zur Verfügung steht, lässt sich einfach bedienen und es fällt schnell auf das sich vieles bei einer Intra- oder Inter-Forest Migration im Hintergrund bereits migrieren lässt, ohne dass die Benutzer etwas davon merken. Egal welche Migration durchgeführt wird, die Arbeiten können weitestgehend und ohne große Auswirkungen auf die Benutzer, im laufenden Betrieb erfolgen.

Natürlich möchte Quest bei seinen Migrationswerkzeugen sicherstellen, dass ihre Werkzeuge nur von Fachleuten, am liebsten aber (verständlicherweise) von seinen eigenen Consultants oder qualifizierten Partnern eingesetzt wird. Letztenendes aber möchte Quest seine Software schließlich an den Kunden bringen. Daher kommt es auf das Gespräch mit Quest an. Quest verkauft seinen QMMAD auch ohne Dienstleistung, möchte vorher aber vom Kunden schriftlich bestätigt bekommen, dass dieser das Werkzeug ausgiebig getestet hat. Es ist auch möglich, mit dem Hersteller einen privaten interaktiven Webcast über das Werkzeug zu veranstalten.

Damit man das Tool einsetzen kann, wird ein Lizenzfile benötigt. Das Lizenzfile kostet pro zu migrierender Benutzer 13 Euro. Je nach Anzahl sind ca. 10% Rabatt möglich. Es zählen nur die zu migrierenden Benutzerkonten. Gruppen- bzw. Computerkonten sind davon nicht betroffen. Nach einer Registrierung auf der Quest-Webseite kann man sich ein Test-Lizenzfile (begrenzt für einen bestimmten Zeitraum und für eine begrenzte Anzahl an Benutzer) zumailen lassen.

Der QMMAD setzt eine Active Directory Application Mode (ADAM)-Instanz und den IIS für ausführlichere Statistiken voraus. Bei der Standardinstallation wird ADAM gleich mit installiert und konfiguriert. Wird bei der Installation des QMMAD die benutzerdefinierte Variante gewählt, so kann eine bereits bestehende und vorbereitete ADAM-Instanz angegeben werden.

Das Quest-Tool kann sowohl bei einer Intra- als auch Inter-Forest Migration eingesetzt werden. Im Gegensatz zu ADMT kann dieses Werkzeug weitaus mehr Objekte migrieren und ist in der Anwendung komfortabler. Die ohnehin stressige Migration wird dadurch für den Administrator effizienter und flexibler. Bei den einzelnen Migrationsphasen kann ein entsprechendes Benutzerkonto das die benötigten Rechte für die jeweils auszuführende Aufgabe besitzt hinterlegt werden.

Active Directory Migration managed with Active Directory Migration Tools from Quest Software


 

ADMT vs. QMMAD

 

Funktion

ADMT

QMMAD

Bemerkung

Intra- und Inter-Forest Migration

Bei einer Intra-Forest Migration werden die Objekte aus der Quell-Domäne entfernt. Das Objekt existiert nach der Migration nur noch in der Ziel- und nicht zusätzlich in der Quell-Domäne. Bei der Inter-Forest Migration bleiben die Objekte hingegen weiterhin in der Quell-Domäne bestehen, die deaktiviert werden können.

Die Objekte bleiben sowohl bei einer Intra-als auch bei einer Inter-Forest Migration in der Quell-Domäne bestehen. Die Quell-Objekte können hier bei der Intra- sowie Inter-Forest Migration deaktiviert werden.

Bei der Migration mit dem QMMAD ist man flexibler und kann vieles im Hintergrund bereits durchführen.

Migration von Benutzer- und Gruppenkonten

Ist bei einer Intra- sowie Inter-Forest Migration möglich.

Das Quest-Tool kann ebenfalls beide Arten von Konten bei der Intra- als auch Inter-Forest Migration migrieren.

Die Migration von Benutzer- und Gruppenkonten gehört bei beiden Tools zu den grundlegendsten Funktionen.

Gesperrte Benutzerkonten migrieren

Der Zustand eines gesperrten Benutzerkontos wird mit ADMT mit migriert.

Nach der Migration eines gesperrten Benutzerkontos mit dem QMMAD ist das Konto anschließend nicht mehr gesperrt.

Hierbei hat der QMMAD einen klaren Nachteil.

SIDHistory

Bei der Intra-Forest Migration ist die SIDHistory erforderlich und wird automatisch übernommen. Die SIDHistory ist bei der Inter-Forest Migration optional.

Auch der QMMAD kann bei einer Intra- und Inter-Forest Migration mit der SIDHistory migrieren.

Auch diese Funktion gehört zu den grundlegendsten Funktionen beider Tools.

Entfernen der SIDHistory

Das ADMT kann die SIDHistory von den Objekten nicht entfernen.

Mit dem QMMAD kann recht einfach die SIDHistory von den Objekten entfernt werden.

Mit dem QMMAD kann mit wenigen Mausklicks die SIDHistory von den Objekten entfernt werden (durch einen extra Durchlauf).

Das lösen von Konflikten

Mit ADMT ist die Konfliktlösung abhängig ob Intra- oder Inter-Forest Migration sehr beschränkt.

Der QMMAD kann Konflikte z.B. durch hinzufügen eines Präfix lösen.

Bei der Konfliktlösung (z.B. doppelter sAMAccountName) löst der QMMAD gegenüber dem ADMT einen Konflikt eleganter durch hinzufügen eines Präfix.

Migration von Computerkonten

Die Migration von Computerkonten ist bei der Intra- und Inter-Forest Migration möglich.

Auch der QMMAD kann Computerkonten bei einer Intra- und Inter-Forest Migration migrieren.

Auch die Migration von Computerkonten ist bei beiden Tools eines der grundlegendsten Funktionen. Beide Tools können Clients und Mitgliedsserver migrieren, aber KEINE DCs. DCs müssen aus der alten Domäne herunter- und in der neuen Domäne heraufgestuft werden.

Migration der OU Hierarchie

Das ADMT kann die OU Hierarchie aus der Quell-Domäne nicht migrieren. Die OUs müssen in der Ziel-Domäne manuell erstellt werden. Delegierungen müssten neu eingerichtet werden.

Das Quest-Tool kann die OU Hierarchie, optional sogar mit dem Security Descriptor (sprich den Delegierungen), mit migrieren.

Der QMMAD kann an dieser Stelle mehr als das ADMT.

Verändern von Objekteigenschaften während der Migration

ADMT kann während der Migration keine zusätzlichen Daten zu den Objekten einbinden.

Der QMMAD kann während der Migration zusätzliche Daten zu den Objekten einbinden.

Mit dem QMMAD könnten während der Migration zusätzliche Informationen z.B. in die Benutzerkonten eingepflegt werden.

Migration der Active Directory Standort-Topologie

AD-Standorte können mit dem ADMT nicht migriert werden.

Mit dem QMMAD können AD-Standorte, Subnetze sowie Standortverknüpfungen migriert werden.

Auch hier können mit dem Quest Werkzeug mehrere Objekte migriert werden.

Migration der Benutzerkennwörter

Die Kennwörter bleiben automatisch bei der Intra-Forest Migration erhalten, jedoch wird der Benutzer bei der ersten Anmeldung in der neuen Domäne aufgefordert, sein Kennwort zu ändern. Oder das Kennwort wird mit dem Password Export Server (PES) ebenfalls migriert, dann bleibt das alte Kennwort erhalten. Bei einer Inter-Forest Migration können die Kennwörter mit dem Password Export Server optional migriert werden.

Die Benutzerkennwörter können mit dem QMMAD bei einer Intra- oder Inter-Forest Migration einfach migriert werden.

Die Migration der Benutzerkennwörter lässt sich mit dem QMMAD einfacher als mit dem ADMT bzw. PES durchführen.

Benutzerprofile

Die Benutzerprofile bleiben erhalten.

Die Profile der Benutzer bleiben auch hier ebenfalls erhalten.

Die Profile werden bei der Migration der Clients übernommen.

Komfortable Auswahl der Objekte

Mit ADMT ist die Auswahl der Objekte eher eingeschränkt.

Der QMMAD bietet starke Filtermöglichkeiten um die entsprechenden Objekte auszuwählen.

Auch hier spielt das Quest-Werkzeug seine Stärken aus.

Statistiken über Fortschritt

Keine.

Der QMMAD bringt ein Statistikportal mit.

Mit dem QMMAD werden detaillierte Informationen über das Statistikportal geliefert.

Undo Funktion

Das ADMT kann nur den letzten Directory-Lauf rückgängig machen (Migration von AD-Objekten), aber nicht das Ressource Updating (RE-ACLing).

Das Quest-Tool bietet komplette Undo-Funktionen. Jede Aktion kann rückgängig gemacht werden.

Auch hierbei ist das Quest Werkzeug umfangreicher.

Kontinuierliche Synchronisation

Ist mit ADMT so nicht möglich. Höchstens aufwändig und eher umständlich mit Skripten und der ADMT-Skriptingschnittstelle.

Mit dem QMMAD kann eine Synchronisation zwischen dem alten und neuen Objekt eingerichtet werden. Somit kann bei einer lang andauernden Migration ein Abgleich zwischen dem alten und neuen Objekt stattfinden.

Gerade bei längeren Migrationsphasen ist die kontinuierliche automatische Echtzeitsynchronisation bei längeren Koexistenzphasen sehr wichtig.

Konsolidiertes Ressourcen Updating

Nicht möglich.

Ist mit dem QMMAD möglich.

Beim zusammenfügen von mehreren Quell-Domänen benötigt der QMMAD nur einen Durchlauf, während das ADMT pro Domäne einen Durchlauf benötigt.

Client Update

Eingeschränkt.

Der QMMAD aktualisiert sogar die geplanten Tasks und Zertifikate auf dem Client. Zusätzlich wird die default Domäne für die Anmeldung umgestellt (im Anmeldefenster das Feld „Anmelden an“).

Ein weiterer Vorteil bei dem Quest Werkzeug.

Mitgliedsserver Aktualisierung

Das ADMT kann das Ressource Updating für Exchange 5.5 durchführen.

Der QMMAD kann die Berechtigungen von den folgenden Applikationen anpassen: Exchange 5.5/2000/2003. IIS. SQL 6.5/7.0/2000. SMS 2.3/2003. System Center 2007. NAS/SAN. Sharepoint 2003 und 2007.

Das Quest-Tool kann die Berechtigungen von mehreren Applikationen anpassen.

Test-Migration

Seit ADMT 3.0 ist die Testmigration nicht mehr möglich.

Mit dem QMMAD kann man die Migrationseinstellungen vor der produktiven Migration in einem Testlauf testen.

Mit der Testmigration können Konfigurationsfehler aufgedeckt werden. Dies erleichtert die Fehlersuche.

Auswahl von
Objekten

Das ADMT bietet einen Standard Dialogfenster, in dem die Benutzer und Gruppen als flache Liste angezeigt werden. Die Filterung nach deaktivierten, abgelaufenen oder Systemkonten ist nicht möglich.

Der QMMAD bietet erweiterte Filtermöglichkeiten bei der Auswahl der Objekte. Z.B. können deaktivierte und/oder abgelaufene Benutzerkonten von vornherein ausgeblendet werden.

Gerade in größeren Umgebungen gestaltet sich die Auswahl der zu migrierenden Objekte einfacher als mit ADMT.

Berechtigungen anpassen

Das ADMT kann die folgenden Berechtigungen anpassen:
NTFS-Berechtigungen, Freigabeberechtigungen, Drucker, Registry, Profile.

Der QMMAD kann folgende Berechtigungen anpassen:
Lokale Gruppenmitgliedschaften, Benutzer Berechtigungen, Dienste, Geplante Tasks, Registry, lokale und servergespeicherte Profile, Freigaben, Drucker, NTFS-Berechtigungen, DCOM, COM+

Die nötigsten Berechtigungen können beide Werkzeuge anpassen, wobei der QMMAD einiges mehr anpassen kann.

Migration von Vertrauensstellungen

Nicht möglich.

Ist möglich.

Ein weiteres nettes Feature des QMMAD.

Fehler Analyse während der Migration

Mit ADMT kann nach der Migration manuell ein Bericht über Konflikte erstellt werden.

Der QMMAD gibt einen detaillierten Bericht über fehlgeschlagene Objekte, Verzeichnis Fehler, Konflikte, nicht aufgelöst Objekte (z.B. Gruppenmitglieder) sowie abgeschlossene Migrationen und Synchronisationen.

Der detaillierte Bericht beim QMMAD erleichtert im Fehlerfall dem Administrator die Fehlersuche.

 


 

Fazit

Mit dem ADMT lässt sich jede Umgebung, egal wie groß sie ist, sowohl bei einer Intra- als auch Inter-Forest Migration über jeden Zeitraum migrieren. Die einzelnen Migrationsschritte mit ADMT müssen insbesonders bei der Intra-Forest Migration genauer geplant werden. Zwar hat das ADMT gegenüber dem Quest-Werkzeug klar seine Einschränkungen, jedoch ist dafür das ADMT kostenlos! Die Restarbeiten können mit etwas Handarbeit (oder mit Skripten) durchgeführt werden.

Das Quest-Werkzeug bietet gerade in seinem Umfang mehr Vorteile als das ADMT. Es kann weitaus mehr Objekte migrieren als das ADMT und man kann vieles im laufenden Betrieb migrieren, ohne das die Benutzer etwas davon merken. Auch bei länger andauernden Migrationen spielt der QMMAD dank seiner Synchronisation seine Stärken aus. Des Weiteren kann dieses Werkzeug die Berechtigungen von mehreren Applikationen anpassen.

 


Weitere Informationen:
Microsoft Online Migration Toolkit
NetIQ Migration Suite

Sunday, December 21, 2008 4:30:58 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Migration  | 
 Sunday, November 30, 2008

Wenn ein Domänencontroller (DC) ausgetauscht wird, ist darauf zu achten, dass alle Dienste sowie Daten von einem anderen Server bzw. DC übernommen werden. Das trifft auch für die FSMO-Rollen zu. Falls der FSMO-Rolleninhaber ausgetauscht werden sollte, gilt es die FSMO-Rollen entweder durch die grafische Oberfläche oder durch das im Betriebssystem enthaltene Kommandozeilentool NTDSUTIL manuell zu verschieben.

Das händische verschieben der Rollen hat den Vorteil, dass der Administrator bestimmen kann auf welchen DC die Rollen verschoben werden. Somit weiß der Administrator genau, auf welchem DC sich die Rollen befinden. Ein weiterer Vorteil des manuellen Verschiebens wäre, falls ein Unternehmen AD-lastig arbeitet und die FSMO-Rollen somit mehr beansprucht werden, kann der Administrator die Rollen auf eine leistungsfähige Maschine verschieben oder ggf. auf mehrere DCs verteilen.

Die Rollen müssen aber nicht beim Herunterstufen des Rolleninhabers zwingend manuell verschoben werden. Denn die FSMO-Rollen werden mit Ausführen von DCPROMO seit Windows 2000 RTM, also seit der Einführung des Active Directory, während des DCPROMO-Vorgangs automatisch auf einen anderen DC übertragen. Die Rollen können aber nur dann einem anderen DC übergeben werden, wenn das DNS ordnungsgemäß funktioniert, sowie der Rolleninhaber Verbindung zur Domäne und somit zu seinen Replikationspartnern hat. Dabei geht der Rolleninhaber folgendermaßen vor:

  • Wurden die FSMO-Rollen vor dem herunterstufen nicht manuell verschoben, wird das „Operational Attribute“ GiveAwayAllFsmoRoles gesetzt. Das veranlasst den Rolleninhaber dazu, andere DCs ausfindig zu machen damit die Rollen die er trägt, auf einen anderen DC übertragen werden können.
  • Für die Wahl des zukünftigen Rolleninhabers werden die folgenden Regeln angewendet:

    - Bevorzugt wird ein DC am gleichen Standort ausgewählt.
    - Es wird ein DC zu dem eine RPC-Verbindung besteht gesucht.
    - Es wird ein Server verwendet, zu dem eine asynchrone Verbindung (z.B. über das SMTP-Protokoll) existiert.

  • Natürlich können dabei die drei domänenspezifischen Rollen RID-Master, PDC-Emulator sowie Infrastrukturmaster nur innerhalb der Domäne verschoben werden.

  • Die beiden gesamtstrukturweiten Rollen Schemamaster sowie Domänennamenmaster können auf jeden DC in der Gesamtstruktur verschoben werden. Dabei spielt es keine Rolle, in welcher Domäne sie sich befinden.


Erreicht der Rolleninhaber während des Herunterstufens keinen weiteren DC, so schlägt zum einen das automatische Verschieben der Rollen und zum anderen das Herunterstufen fehl.

Wird der Rolleninhaber durch die erzwungene Herabstufung mit DCPROMO /Forceremoval heruntergestuft, so erhält der Administrator ab Windows Server 2003 SP1 für jede Rolle die der DC inne hat, eine Warnmeldung. Diese Rollen müssen dann im Nachhinein auf einem anderen DC offline übertragen werden.

Der Nachteil des automatischen Verschiebens der Rollen ist die nicht Vorhersagbarkeit der Ziel-DCs auf die die FSMO-Rollen verschoben werden (Ausnahme es existieren nur genau zwei DCs).


Doch auch bei dieser Variante müssen die Infrastrukturmasterrollen der Anwendungsverzeichnispartitionen ab Windows Server 2003 (wie z.B. ForestDNSZones und DomainDNSZones) manuell auf einen anderen DC verschoben werden. Diese werden nicht automatisch auf einen anderen DC übertragen. Näheres dazu erläutert der folgende Artikel:

Die Infrastrukturmaster der Anwendungsverzeichnispartitionen



Weitere Informationen:
Die FSMO-Rollen verschieben
How Operations Masters Work: Active Directory
 
Flexible Single Master Operation Transfer and Seizure Process

Sunday, November 30, 2008 9:12:42 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Administration  | 
 Sunday, November 16, 2008

Es gab einmal ein 32Bit Serverbetriebssystem…

Im Herbst 2009 erscheint das nächste Serverbetriebssystem (Codename Windows Server 7) aus dem Hause Microsoft Namens Windows Server 2008 R2. Somit bleibt Microsoft seiner Roadmap treu und veröffentlicht alle vier Jahre ein Major Release sowie dazwischen nach zwei Jahren ein Minor Release. Dabei wurden die R2-Versionen erstmals mit Windows Server 2003 R2 eingeführt, wobei damals das R2 auf zwei CDs ausgeliefert wurde und es im nächsten Serverbetriebssystem eine DVD ist.

Wie bereits im Vorfeld angekündigt, setzt Microsoft seine Ankündigung nun um. Es heißt: Ade 32Bit Serverbetriebssystem.
Das nächste Serverbetriebssystem Windows Server 2008 R2 wird es ausschließlich nur in der x64Bit Version geben. Die Administratoren müssen sich dabei aber keine großen Gedanken machen, denn die Hardware der letzten drei bis vier Jahre ist x64bittig.



Was sind die Active Directory-Neuerungen im Windows Server 2008 R2?

  • Das Active Directory-Schema wird auf die Version 47 aktualisiert.
  • Es kommt ein weiterer Domänen- sowie Gesamtstrukturfunktionsmodus hinzu.
  • Ein Highlight: Im Gesamtstrukturfunktionsmodus „Windows Server 2008 R2“ wird es einen AD-Papierkorb geben, um ausversehen gelöschte Objekte mit allen Attributen (auch Backlinks wie z.B. Gruppenzugehörigkeiten) wiederherzustellen. Dieser muss in der Powershell zuerst aktiviert werden. Genaueres zu diesem Feature wird in einem eigenen Artikel veröffentlicht, sobald die offizielle Beta Version erscheint.

    Der Active Directory-Papierkorb im Windows Server 2008 R2

  • Endlich wird es auch einen Active Directory-Best Practice Analyzer (AD-BPA) geben, der im Server-Manager (der ebenfalls erweitert wurde) zu finden ist. Auch hierzu wird es einen eigenen Artikel geben.

    Der Active Directory Best Practice Analyzer

  • Mit der Powershell 2.0 werden ca. 76 Cmdlets Out-of-the-Box für AD DS sowie AD LDS (ehemals ADAM) im Betriebssystem integriert sein. Damit lassen sich dann administrative Aufgaben sowie Konfigurationen im Active Directory auch über die Powershell realisieren. Die Powershell Cmdlets sowie der Active Directory Administrative Center verwenden die „AD Web Services“ sowie die „Windows Communication Foundation (WCF)“ anstatt der RPC oder LDAP-Schnittstellen.

    Die AD-Powershell im Windows Server 2008 R2
    AD-PowerShell Befehle

  • Im Windows Server 2008 R2 werden auch neue Management-Tools integriert sein. Eine davon ist die neue Managementkonsole Active Directory Administrative Center (kurz ADAC und nein, damit sind nicht die gelben Engel gemeint ;-)), die auf den neuen Powershell 2.0 Cmdlets basiert. Diese MMC stellt im Prinzip eine grafische Shell für die Powershell dar. Nach dem die auszuführende Aufgabe in der MMC ausgewählt wurde, führt ADAC die entsprechenden Cmdlets aus. Mit dieser neuen aufgabenbasierten Konsole, beginnt im neuen Betriebssystem die MMC 4 Ära. Der „AD Administrative Center (dsac.exe)“ ist der Nachfolger der MMC Active Directory Benutzer und Computer (dsa.msc). Das neue Werkzeug verringert dabei den allgemeinen administrativen Aufwand, der in einer AD-Umgebung täglich zu bewältigen ist.

    Das Active Directory-Verwaltungscenter

  • Die Powershell 2.0 sowie die AD-Cmdlets werden auch auf dem Server Core 2008 R2 zur Verfügung stehen, nicht aber auf dem Server Core 2008.

  • Clients können jetzt auch dann zur Domäne hinzugefügt werden, wenn keine Verbindung zur Domäne besteht. Gerade für Deployment-Szenarien ist diese Funktion sicherlich mehr als hilfreich. Auf einem Windows Server 2008 R2 kann in der Kommandozeile CMD (und nicht etwa in der Powershell) mit dem Tool djoin zum einen das Computerobjekt im AD und zum anderen, eine Datei für den Client erstellt werden. Mit dieser Datei kann dann der Windows 7 Client offline zur Domäne hinzugefügt werden.

    Offline zur Domäne beitreten

  • Mit den Managed Service Accounts wurde die Verwaltung von Dienstkonten vereinfacht. Wurde nämlich das Kennwort eines solchen Dienstkontos geändert, was schließlich nichts anderes als ein Benutzerkonto ist, so musste dieses Kennwort bei den entsprechenden Diensten die dieses Konto enthielten, ebenfalls aktualisiert werden. Im Windows Server 2008 R2 aktualisiert dieses Feature automatisch das Kennwort der Dienste, sobald sich das Kennwort für das Dienstkonto ändert. Ähnlich wie bei Computerkonten wird das Kennwort automatisch durch den NETLOGON-Prozess generiert. Somit können keine Dienste mehr wegen eines geänderten Kennworts fehlschlagen.

    Der Nachteil ist, dass ein solches Dienstkonto nur auf einem Server, dafür aber für mehrere Dienste verwendet werden kann. Dieses Feature kann momentan auch nicht für die Geplanten Tasks eingesetzt werden.
     
  • Im Windows Server 2008 R2 wird in den Active Directory Federated Services (kurz ADFS) die neue Funktion „Authentication Assurance“ enthalten sein. Diese Neuerung erlaubt es Administratoren, Authentifizierungsvorgaben für Konten aus den federated Domänen zu treffen. Dadurch ermöglichen sich eine Reihe von erweiterten Authentifizierungsverfahren (wie z.B. Smart Cards etc.).


Welche Neuerungen es im Allgemeinen bisher im Windows Server 2008 R2 geben wird, kann bereits hier nachgelesen werden.
Windows Server 2008 R2 Reviewers Guide

 

Weitere Informationen:
Windows Server 2008: R2
Windows Server 2008 R2 Active Directory: What's Coming Up?

Sunday, November 16, 2008 10:28:34 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory  | 
 Sunday, October 19, 2008

Mit der Tombstone Lifetime (zu Deutsch Grabstein Lebenszeit) wird bestimmt, wie lange ein gelöschtes Objekt noch in der Active Directory-Datenbank (NTDS.dit) gespeichert wird. Wenn ein Objekt gelöscht wird, verschwindet es nicht sofort aus der AD-Datenbank. Stattdessen wird das Objekt als gelöscht markiert, in dem das Attribut is-Deleted auf True gesetzt wird. Des Weiteren werden die meisten Attribute entfernt und das Objekt wird wie folgt umbenannt:
CN=<alter RDN>\0ADEL:<Object-GUID>.

Nach dem umbenennen wird das Objekt in den versteckten Container Deleted Objects der entsprechenden Verzeichnispartition verschoben. Ab diesem Zeitpunkt wird das gelöschte Objekt als Tombstone (Grabstein) bezeichnet. Anschließend werden diese Änderungen auf alle anderen Domänencontroller (DC) repliziert. Erst wenn die Tombstone Lifetime (TSL) überschritten wurde, wird das Objekt endgültig aus der AD-Datenbank entfernt.

Dieser Prozess ist deshalb notwendig, damit sichergestellt ist das auch jeder DC bei einer aufwändigen (weltweiten) Replikationstopologie, von dieser Löschung informiert wird. Endgültig gelöscht wird das Objekt dann nach Ablauf der TSL von dem Garbage Collection Prozess, der standardmäßig auf allen Domänencontrollern (DC) alle 12 Stunden läuft. Diese Zeit kann zwar verändert werden, jedoch besteht in der Praxis i.d.R. kein Bedarf dies zu tun.

Weiterhin bestimmt die TSL auch, wann sich spätestens ein DC einmal mit seinen Replikationspartnern repliziert haben muss, ehe Replikationsprobleme entstehen.

 

Wann wird die Tombstone Lifetime festgelegt?

Die TSL wird mit dem Installieren des ersten DCs in einer Gesamtstruktur und zwar für alle Domänen festgelegt. Die TSL kann nicht pro Domäne konfiguriert werden. Der Wert der TSL kann aber jederzeit manuell verändert werden (wozu Organisations-Admins Rechte benötigt werden), was jedoch begründet sein sollte. Dabei spielt weder der Domänenfunktionsmodus, noch der Gesamtstrukturfunktionsmodus eine Rolle.

Der Active Directory-Installationsassistent DCPROMO erzeugt aus der Datei schema.ini die TSL für die Gesamtstruktur. Unter Windows 2000 sowie Windows Server 2003 befindet sich diese Datei im Verzeichnis %systemroot%\system32 und unter Windows Server 2008 im Verzeichnis
%systemroot%\winsxs\x86_microsoft-windows-d..rvices-domain-files_31bf3856ad364e35_6.0.6001.18000_none_9b0b0e3a43600e0c
Der DCPROMO-Assistent nutzt diese Datei als Vorlage und entnimmt daraus seine Angaben, um das Basisschema entsprechend dem Serverbetriebssystem zu erstellen.

Vor dem Heraufstufen des ersten DCs, kann man die TSL in der schema.ini kontrollieren. Der Eintrag in der Datei lautet: tombstoneLifetime=<Wert in Tagen>.

Die TSL beträgt unter:

  • Windows 2000 (mit allen SPs) = 60 Tage
  • Windows Server 2003 ohne SP = 60 Tage
  • Windows Server 2003 mit Service Pack 1 = 180 Tage
  • Windows Server 2003 R2 mit Service Pack 1, installiert mit beiden R2-CDs = 60 Tage
  • Windows Server 2003 R2 mit Service Pack 1, installiert nur mit der ersten R2-CD = 180 Tage
  • Windows Server 2003 mit Service Pack 2 = 180 Tage
  • Windows Server 2003 R2 mit Service Pack 2 = 180 Tage
  • Windows Server 2008 = 180 Tage
  • Windows Server 2008 R2 = 180 Tage

 


Überprüfen und Bearbeiten der Tombstone Lifetime

Kontrollieren kann man das Attribut tombstoneLifeTime mit Dsquery wie folgt. Der Befehl lautet:

Dsquery * "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne" -attr tombstoneLifetime

Falls kein Wert angezeigt wird, dann gilt der Standardwert von 60 Tagen. Ansonsten gilt der angezeigte Wert in Tagen.


Die TSL lässt sich auch mit ADSIEdit überprüfen und bearbeiten. Dazu gilt es, zuerst zum folgenden Container zu navigieren:

CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne

Dort befindet sich in den Eigenschaften des Containers das Attribut tombstoneLifetime. Ist dort ein Wert gesetzt, beträgt die TSL den eingetragenen Wert in Tagen. Steht im Attribut als Wert hingegen <Not Set>, so beträgt die TSL den Standardwert von 60 Tagen.


Mit der AD-PowerShell kann man die TSL folgendermaßen überprüfen:

Get-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne" -Properties tombstoneLifetime | Select tombstoneLifetime | FL


Mit diesem Befehl lässt sich die TSL in der AD-PowerShell bearbeiten:

Set-ADObject -Identity “CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Domäne,DC=de” –Partition “CN=Configuration,DC=Domäne,DC=de” –Replace:@{“tombstoneLifetime” = Wert}



Hinweis: Das installieren eines Service Packs oder das Aktualisieren des Serverbetriebssystems verändert niemals den Wert der Tombstone Lifetime!


 

Auf was ist zu achten?

  • Die TSL darf keinen niedrigeren Wert enthalten, als die Replikation benötigt um alle DCs über einen Löschvorgang zu informieren. Ansonsten entfernt der Garbage Collection Prozess das gelöschte Objekt endgültig aus der AD-Datenbank, bevor alle Replikationspartner von der Löschung informiert wurden. Dies würde zu Inkonsistenzen in der AD-Datenbank führen.
  • Eine System State-Sicherung die älter als die TSL ist, darf nicht mehr verwendet werden. Die TSL gibt das maximale Alter einer Systemstatus-Sicherung an.

    Wird ein DC während der TSL mit einer Systemstatus-Sicherung die das Benutzerobjekt Yusuf enthält wiederhergestellt, nachdem das Objekt Yusuf gelöscht wurde, so würde der gelöschte Status von dem Objekt Yusuf auf den wiederhergestellten DC repliziert werden. Das Benutzerobjekt Yusuf wäre weiterhin nicht vorhanden, da die Wiederherstellung während der TSL durchgeführt wurde. Falls der DC nach der TSL wiederhergestellt werden würde, wäre das Benutzerobjekt Yusuf jedoch vorhanden. Denn auf den anderen DCs wäre das Objekt bereits aus der AD-Datenbank vom Garbage Collection Prozess entfernt worden. Das Benutzerkonto würde aber nur auf dem wiederhergestellten DC existieren. Dieser Zustand führt zu Inkonsistenzen in der AD-Datenbank und das Benutzerobjekt Yusuf wäre ein Lingering Object (herumlungerndes Objekt).
  • Ein DC darf nicht länger als die TSL offline sein. Wenn dies der Fall sein sollte, bekommt der nicht erreichbare DC von den mittlerweile gelöschten Objekten nichts mit und so kommt es dann zu Lingering Objects.

 


Welche Auswirkung hat das Erhöhen der Tombstone Lifetime?

  • Eine Systemstatus-Sicherung hat eine längere Nutzungsdauer.
  • Das Heraufstufen eines Servers durch die IFM-Funktion (Install from Media) zu einem DC hat durch das erhöhen der TSL, ebenfalls eine höhere Nutzungsdauer.
  • Ein DC kann länger offline bleiben und kann dadurch, nach einer längeren Offlinezeit wieder erfolgreich zur Domäne hinzugefügt werden.
  • Die gelöschten Objekte (Tombstones) bleiben länger auf den DCs erhalten und können dadurch ab Windows Server 2003, länger wiederhergestellt werden. Dadurch erhöht sich aber auch die Größe der AD-Datenbank.

 


Fazit: Die TSL sollte wenn möglich nicht verändert werden. Falls ein triftiger Grund besteht die TSL doch zu ändern, sollte der Wert nicht allzu groß gewählt werden.

 


Weitere Informationen:
The default tombstone lifetime (TSL) value remains at 60 days instead of increasing to 180 days in Windows Server 2003 R2
The Active Directory database garbage collection process

Sunday, October 19, 2008 6:05:36 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory  | 
 Sunday, October 05, 2008

Es ist empfehlenswert, dass jedes Unternehmen eine Kennwortrichtlinie einsetzt, die entsprechend konfiguriert ist
(Komplexität, Kennwortchronik, Kennwortlänge, Kennwortalter etc.).


Kennwortrichtlinien, die für Domänen-Benutzer gelten sollen, müssen auf Domänenebene
verlinkt werden. Wenn eine Kennwortrichtlinie auf einer Organisationseinheit (OU) verlinkt wird, betrifft das lediglich die lokalen Benutzerkonten auf den Clients. Bis Windows Server 2003 kann es dabei pro Domäne nur eine Kennwortrichtlinie geben. Besteht der Bedarf für einen Standort eine eigene Kennwortrichtlinie zu definieren, so musste  für diesen Standort eine Sub-Domäne erstellt werden. Anders war dieses Ziel mit Bordmitteln nicht lösbar. Erst ab Windows Server 2008 lassen sich mehrere Kennwortrichtlinien pro Domäne mit Bordmitteln einrichten und nennen sich dort "Password Settings Objects" kurz PSO. In einer Windows Server 2003 Umgebung kann man mehrere Kennwortrichtlinien pro Domäne nur mit Dritt-Anbieter Tools realisieren, wie z.B. Specops Password Policy oder nFront Password Filter
.

Möchte ein Unternehmen das bisher keine Kennwortrichtlinie im Einsatz hatte, dieses nun nachholen, sollte die Einführung einer Kennwortrichtlinie sorgfältig geplant und die Benutzer ausführlich informiert werden. Es ist ratsam nach der Konfiguration der Kennwortrichtlinie, im Reiter Konto die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ in allen Benutzerkonten zu aktivieren. Denn schließlich existierte bisher keine Sicherheitsanforderung bei der Kennwortwahl, so dass es höchste Zeit wird dieses schnellstmöglich zu aktivieren.

Ist allerdings eines der Flags im userAccountControl Attribut, nämlich die Option „Kennwort läuft nie ab“ aktiviert, so ist ein zusätzliches aktivieren der Option Benutzer muss Kennwort bei der nächsten Anmeldung ändern nicht möglich. Es dürfte jedem klar sein, dass sich diese beiden Optionen widersprechen. Wird die Option „Kennwort läuft nie ab“ aktiviert, so wird mit einem Hinweis die evtl. bereits aktivierte Option „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ deaktiviert.

 

Wird in den Kennwortrichtlinien die Einstellung „Maximales Kennwortalter“ konfiguriert, so kann es passieren, dass die Benutzer bei ihrer nächsten Anmeldung aufgefordert werden ihr Kennwort zu ändern, ohne dass die Option „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ gesetzt ist. Denn angenommen ein Benutzer verwendet sein Kennwort, das bereits 200 Tage alt ist und es wird ein maximales Kennwortalter von 180 Tagen definiert, so erhält dieser Benutzer bei seiner nächsten Domänenanmeldung die Aufforderung sein Kennwort zu ändern. Das Alter des Kennworts wird vom Attribut Pwd-Last-Set errechnet. In dem Attribut wird ein 64Bit Integer Wert des Zeitpunkts der letzten Kennwortänderung gespeichert. Umrechnen lässt sich dieser Wert mit dem Befehl: w32tm /ntte <Wert>.

 

Es gibt aber eine Option, die verhindert, dass nach der Konfiguration eines maximalen Kennwortalters die Benutzer mit einem älteren Kennwort dies nicht bei der nächsten Domänenanmeldung ändern müssen.
Dazu ist folgendes zu tun:

  • In den Benutzerkonten ist zuerst die Kontooption Benutzer muss Kennwort bei der nächsten Anmeldung ändern zu aktivieren.

  • Danach gilt es die gewählte Option mit Übernehmen zu bestätigen.

  • Anschließend muss die soeben aktivierte Kontooption erneut deaktiviert und mit Übernehmen oder OK bestätigt werden.

 

Wird in den Eigenschaften eines Benutzerkontos im Reiter Konto die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ gesetzt, so erhält das Attribut pwdLastSet im entsprechenden Benutzerobjekt den Wert „0“. Wenn anschließend der Haken wieder entfernt wird, erhält das Attribut als Wert, dass Datum sowie die Uhrzeit von dem Moment, in dem diese Einstellung durchgeführt wurde.

 

In den Benutzerobjekten lässt sich die Kontooption z.B. durch ein Skript aktivieren oder deaktivieren. Eine andere Variante wäre zuerst die Benutzer mit STRG auszuwählen, dann mit einem Rechtsklick auf die Benutzerobjekte die Eigenschaften aufzurufen, um danach im Reiter Konto die entsprechende Option auszuwählen bzw. zu deaktivieren.

 

Verifizieren kann man das durch Überprüfen des Attributs pwdLastSet im Benutzerobjekt, mit dem Befehl: w32tm /ntte <Wert aus pwdLastSet>.
Dort sollte dann das aktuelle Datum stehen.

 

Wann das Kennwort zuletzt gesetzt wurde, kann man auch wie folgt kontrollieren: Net User <username> /Domain.


Oder mit der Account Info DLL (kurz Acctinfo.dll).

Sunday, October 05, 2008 8:44:31 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Gruppenrichtlinien  | 
 Wednesday, September 24, 2008

Die Active Directory-Replikation ist ein komplexer Vorgang, die regelmäßig (um nicht zu sagen ständig) kontrolliert werden sollte.
Falls es zwischen Domänencontrollern zu Replikationsproblemen kommt, helfen neben der Ereignisanzeige in erster Linie die beiden
Tools REPADMIN sowie REPLMON bei der Suche nach der Fehlerquelle.

Gerade das Kommandozeilentool REPADMIN, das sich unter Windows 2000 sowie Windows Server 2003 in den Windows Support Tools
und im Windows Server 2008 bereits im Betriebssystem befindet, ist ein mächtiges Tool das mit vielen Parametern ausgestattet ist.
Nun hat Microsoft speziell für dieses Tool ein Whitepaper veröffentlicht, in dem das Tool mit all seinen Parametern erläutert wird.
Weiterhin werden auch Szenarien beschrieben, in denen REPADMIN helfen kann.

Hier kann das Whitepaper heruntergeladen werden:

Troubleshooting replication with Repadmin

 

Weitere Informationen:
Windows 2000 Service Pack 4 Support Tools
Windows Server 2003 Service Pack 2 32-bit Support Tools

Wednesday, September 24, 2008 5:42:03 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Replikation  | 
 Sunday, September 14, 2008

Standardmäßig werden in der MMC Active Directory-Benutzer und -Computer (ADBuC) die drei Spalten Name, Typ und Beschreibung angezeigt.
In der MMC lassen sich unter Ansicht - Spalten hinzufügen/entfernen… in Windows 2000 sowie Windows Server 2003 weitere 22 und unter
Windows Server 2008 weitere 27 Spalten einblenden.

Nun ist es seit Windows Server 2003 möglich eigene Spalten in der MMC dsa.msc zu integrieren. Dafür ist ein Windows Server 2003
oder Windows Server 2008 Schema notwendig. Somit hat man dann die Möglichkeit die in keinem Feld angezeigten, jedoch im Schema
existierenden Attribute (wie z.B. employeeID) doch in einer Spalte zum Vorschein zu bringen. Natürlich können dabei auch eigene Attribute
die durch eine Schemaerweiterung hinzugefügt wurden, in der MMC angezeigt werden. Die Werte in den Attributen sind allerdings auf einem
anderen Weg einzutragen.
Entweder skriptbasiert oder manuell (z.B. mit ADSIEdit). Im Fall der Personalnummer lässt sich das durch die in dem
folgenden Artikel gezeigte Vorgehensweise erledigen.

Personalnummer im AD eintragen

Weitere Reiter oder Datenfelder können in die Verwaltungstools nur mühselig und mit viel Aufwand (z.B. durch die COM-Programmierung
mit C++, VB oder durch Dritt-Anbieter) eingefügt werden. Leichter ist es hingegen, sich die Informationen skriptbasiert über das Kontextmenü
anzeigen zu lassen (siehe o.g. Artikel). Diese Variante der Anzeige hat den Vorteil, dass es sich recht einfach und schnell implementieren lässt.
Denn im Active Directory-Schema existieren weitaus mehr Attribute, als in den MMCs angezeigt werden. Daher sollte stets vor einer
Schemaerweiterung das Schema kontrolliert werden, ob nicht doch ein passendes Attribut bereits existiert, jedoch nirgendwo angezeigt wird.

Das modifizieren der Spalten ist dank der Display-Specifier Klasse möglich. In Windows Server 2003 sowie Windows Server 2008
existieren standardmäßig 55 Display-Specifier Objekte. Die Klasse Display-Specifier beschreibt das Kontextmenü und die Eigenschaften
von Active Directory-Objekten. Durch das Bearbeiten der Display-Specifier lassen sich recht simpel die grafischen Active Directory-
Verwaltungswerkzeuge anpassen. Jede Objektklasse die in der grafischen Oberfläche erscheint, besitzt ein Display-Specifier Objekt
in der die Elemente die angezeigt werden definiert sind. Denn die AD-Verwaltungswerkzeuge (wie dsa.msc oder dssite.msc) rufen ihre
Konfigurationen aus den Display-Specifiern ab.

Zu finden sind die Display-Specifier in der Konfigurationspartition, im Container:
CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne>.
Dort befinden sich weitere durchnummerierte Container, wobei jeder Container jeweils einer bestimmten Sprachversion entspricht.
Der für das deutsche Gebietsschema zuständige Container lautet CN=407. Demnach müssen auf einem deutschen Server die Änderungen
mit Organisations-Admin Rechten im Container
CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne>
durchgeführt werden. Auf einer englischen Serverversion müssen die Display-Specifier im Container CN=409 bearbeitet werden.
E
ntsprechendes gilt natürlich für die anderen Sprachen.

Locale Identifier Constants and Strings

 

Wo kann man eigene Spalten definieren?

Eigene Spalten können im mehrwertigen Attribut Extra-Columnsdes jeweiligen Display-Specifier Objekts definiert werden. Dies kann
getrennt entweder für Container wie z.B. dem Standard-Container Users bzw. Computers oder für Organisationseinheiten (OUs)
festgelegt werden. Die zusätzlichen Spalten die standardmäßig im dsa.msc zur Verfügung stehen, sind im Attribut extraColumns
das sich im Objekt
CN=default-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne> befindet, definiert.

 

Die technische Umsetzung

Wenn man nun z.B. die Personalnummer statt aus dem Kontextmenü heraus, direkt in einer Spalte angezeigt haben möchte,
so ist das folgendermaßen möglich:

  • Zuerst gilt es mit ADSIEdit oder LDP, welche sich unter Windows Server 2003 in den Support Tools befinden und unter
    Windows Server 2008 bereits im Betriebssystem integriert ist, zu dem für Container zuständigen Display-Specifier Objekt
    zu navigieren. Der Pfad lautet:

    container-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne>

    Anschließend ruft man durch einen Doppelklick auf das Objekt container-Display die Eigenschaften auf. Mit dem Objekt
    container-Display hat man Einfluss auf die Spalten in Containern, wie es die beiden Standard-Container Computers oder Users darstellen.
  • Möchte man stattdessen eigene Spalten in Organisationseinheiten (OU) integrieren, so navigiert man zu diesem Pfad:

    organizationalUnit-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne>

  • Eine weitere Möglichkeit wäre die "eigenen" Spalten lediglich in den gespeicherten Abfragen anzuzeigen.
    Das hat den Vorteil, dass dadurch die selbst hinzugefügten Spalten mit den bereits bestehenden Spalten
    zusammengefügt werden. Somit bleibt die Anzeige der Spalten in den Standardcontainern Users und Computers
    sowie in den OUs unverändert.

    Damit neben den bereits existierenden Spalten die eigenen Spalten bei einer gespeicherten Abfrage
    angezeigt werden, gilt es zuerst die Eigenschaften des folgenden Containers aufzurufen:

    default-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne>

  • Als nächstes ist in den Eigenschaften des entsprechenden Objekts, dass mehrwertige Attribut extraColumns zu bearbeiten.
    Die Syntax wäre wie folgt:
    <Ldap-Display-Name>,<Spaltenbezeichnung>,<Default Visibility>,<Spaltenbreite>,<Reserviert/unbenutzt>

    Die Werte bedeuten:

    <Ldap-Display-Name>= Zuerst muss der LDAP-Display Name des gewünschten Attributs angegeben werden.
    <Spaltenbezeichnung>= Der angezeigte Name der im Spaltenkopf der MMC erscheint.
    <Default Visibility>= Wenn die eigene Spalte standardmäßig angezeigt werden soll, ist als Wert 1 einzutragen.
    Soll hingegen die Spalte unter Ansicht - Spalten hinzufügen/entfernen… manuell hinzugefügt werden, so ist als Wert
    0 einzutragen.
    <Spaltenbreite>= Mit diesem Wert wird die Breite der Spalte in Pixels angegeben. Der Wert -1 gibt an,
    das sich die Breite der Spalte nach der Spaltenbezeichnung richtet.
    <Reserviert/Unbenutzt>= Hier ist als Wert 0 einzutragen.

Die einzelnen Werte sollten fortlaufend ohne Leerzeichen und jeweils durch ein Komma getrennt angegeben werden.

Im Falle der Personalnummer sähe die Syntax so aus:
employeeID,Personalnummer,1,150,0 oder employeeID,Personalnummer,1,-1,0



 

Was ist der Nachteil an dieser Vorgehensweise?

  1. Werden im Objekt container-Display und/oder organizationalUnit-Display eigene Spalten integriert, erscheinen neben den
    drei standardmäßig angezeigten Spalten (Name, Typ, Beschreibung) nur noch die selbst hinzugefügten Spalten.
    Danach werden die zusätzlichen 22 bzw. 27 Spalten unter Windows Server 2003/2008 vollständig durch die eigenen Spalten
    ersetzt und nicht zusammengefügt.

    Stattdessen werden die eigenen Spalten die im Objekt default-Display definiert wurden, neben den Standard-Spalten bei
    einer gespeicherten Abfrage angezeigt.

  2. Wird lediglich das Objekt container-Display bearbeitet, stehen jedoch die zusätzlichen Spalten für OUs weiterhin zur Verfügung.
    Das gleiche gilt auch vice-versa. Werden eigene Spalten nur für OUs hinzugefügt, stehen für die Standard-Container
    Computers/Users weiterhin die zusätzlichen Spalten aus dem Objekt default-Display zur Verfügung.

    Das Hinzufügen der eigenen Spalten im Attribut extraColumns das sich im Objekt default-Display befindet,
    bringt in diesem Fall auch nicht den gewünschten Erfolg.

    Möchte man aber neben den eigenen auch die vom System vorgegebenen Spalten weiter nutzen, können die Einträge aus
    dem Objekt default-Display kopiert und in das gewünschte Container-Objekt (container-Display oder organizationaUnit-Display)
    hinzugefügt werden.

  3. Ein weiterer Haken an dieser Vorgehensweise wäre, dass die Änderungen in der Konfigurationspartition durchgeführt werden.
    Diese Verzeichnispartition wird auf jeden DC in der Gesamtstruktur repliziert. Folglich wären alle Domänen in der Gesamtstruktur
    von dieser Änderung betroffen.

 

Weitere Informationen:
Extending the User Interface for Directory Objects
Display Specifiers
About MMC 2.0
Microsoft Management Console 3.0

Sunday, September 14, 2008 10:01:50 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Schema  | 
 Monday, September 01, 2008

In der heutigen Zeit ist es üblich das Firmen fusionieren, übernommen werden, komplett oder bloß ein Firmenteil verkauft
bzw. selbstständig wird. Wenn Firmen fusionieren ist es meistens erforderlich, eine Verbindung zwischen den Strukturen herzustellen.
Das kann eine Vertrauensstellung oder aber auch eine Migration bedeuten, je nachdem welche Anforderungen erfüllt werden müssen.
Soll sich aber ein Firmenteil eigenständig machen, steht dem Administrator eine Migration bevor. Oder etwa doch nicht?

Der gestresste Administrator der ohnehin mit seinen täglichen Aufgaben mehr als genug zu tun hat, möchte sich die Arbeit
der Firmenteilung gering halten. Er stellt sich dabei vor, weitere DCs in der Root-Domäne der Muttergesellschaft zu installieren
und die AD/DNS-Replikation abzuwarten. Anschließend stellt er diese DCs in einem isolierten Netzwerk, das keine Verbindung
zur Gesamtstruktur der Muttergesellschaft hat an ihren Zielort auf. Die überflüssigen AD-Objekte (Benutzer- und Computerkonten,
OUs, AD-Standorte, DC-Objekte, Sub-Domänen etc.) werden auf den verschobenen DCs entfernt. Ebenso werden auf den DCs
der Muttergesellschaft die verschobenen Objekte entfernt.

Weitere Details werden an dieser Stelle mit Absicht nicht genannt!


Wenn die DCs an ihrem Zielort stehen hat man als Ergebnis nun zwei völlig unabhängige Gesamtstrukturen,
was sogar mit dem minimalsten Aufwand erreicht wurde, nicht wahr? Weiterhin denkt sich der scheinbar clevere Administrator,
dass dieser Domänensplitt keine Sicherheitsrisiken für beide Gesamtstrukturen mit sich bringt.

Das nach dem Splitt beide Gesamtstrukturen den gleichen internen NetBIOS- sowie DNS-Domänennamen haben stört
den Administrator nicht, da es sich schließlich um interne Domänennamen handelt. Diese können bekanntermaßen auch
mühevoll unter Windows Server  2003/2008 geändert werden. Aber ob dies am Ende vollständig von Erfolg gekrönt ist,
steht auf einem anderen Blatt.

Außerdem ist der ganz schlaue Administrator der Meinung, dass solch ein Domänensplitt auch einen Vorteil hätte.
Denn falls das unternehmerische Vorhaben der Firmenteilung scheitern und beide Firmenteile sich erneut zusammenschließen würden,
könnte er einfach die verschobenen DCs zurück zur Domäne der Muttergesellschaft stecken. Nur was würde das bringen,
wenn auf beiden Seiten die DC-Objekte der jeweils anderen Seite gelöscht wurden.

Kommen wir zu dem Punkt des Sicherheitsfaktors.
Unterliegen nach einem Domänensplitt beide Gesamtstrukturen wirklich keinem Sicherheitsrisiko?
Die Antwort lautet: In beiden Gesamtstrukturen wäre die Sicherheit so löchrig wie ein Schweizer Käse!

 

Wird eine Root-Domäne geteilt, sind in beiden Firmenteilen unter anderem die folgenden Punkte identisch:

  • Beide Seiten enthalten das vordefinierte Administratorkonto mit dem gleichen Kennwort.
  • Alle vordefinierten Sicherheitsgruppen, in erster Linie die Sicherheitsgruppe Organisations-Admins wären auf beiden Seiten identisch.
  • Auf beiden Seiten ist die Domäne als Root-Domäne deklariert, mit derselben SID.

  • Durch den globalen Katalog existieren auch auf den verschobenen DCs alle Objekte aus der Gesamtstruktur der Muttergesellschaft.


Diese Situation stellt für beide Seiten ein echtes Sicherheitsrisiko dar.
In den richtigen Händen ist keines der Domänen vor einer Kompromittierung sicher.


Weitere Risiken wären:

  • Auf den verschobenen DCs wären ebenfalls die Tombstones der Muttergesellschaft enthalten
    die wiederbelebt werden könnten. Tombstones sind bereits gelöschte Objekte die aber noch in der AD-Datenbank existieren,
    solange noch nicht die Tombstone Lifetime abgelaufen ist.

  • Wenn Applikationen in der Muttergesellschaft eingesetzt werden die sensible Informationen im Active Directory speichern,
    wandern diese Daten ebenfalls auf den verschobenen DCs mit.

  • Sind Applikationen vorhanden die sich ins Active Directory verankern (wie z.B. Exchange), wandern diese Informationen ebenfalls mit.


Daher kann ich nur an jeden appellieren, auch wenn der Kunde König ist:

Finger weg von einem Domänensplitt!


Diese Art der Migration wird seitens Microsoft nicht supportet!
Wer einen Domänensplitt durchführt, der sollte sich ernsthaft überlegen ob er den richtigen Job ausübt.


Findet eine Firmenteilung statt, ist stets eine Migration durchzuführen.
Nur eine Migration wird seitens Microsoft unterstützt und ist auch reichlich sowie ausführlich auf den Microsoft-Seiten dokumentiert.
Eine Migration durchzuführen benötigt Zeit, Know-How und kann mehr oder weniger je nach Größe der Umgebung kompliziert sein.
Doch trotzdem rechtfertigt dies nicht einen Domänensplitt durchzuführen. Wer einer Migration nicht gewachsen ist,
der sollte sich statt einen Domänensplitt durchzuführen, besser einen erfahrenen Dienstleister zur Seite holen.

Ein Tool welches bei einer Migration nie fehlen darf, ist das Active Directory Migration Tool - ADMT.


Weitere Informationen:
Eine Domänenmigration durchführen
ADMT Version 3.1
Forest Recovery

Sunday, August 31, 2008 11:29:46 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Migration  | 
 Sunday, August 10, 2008

Ein Domänencontroller der aus der Domäne entfernt werden soll, wird ordnungsgemäß mit Ausführen von DCPROMO
(Start - Ausführen - DCPROMO) zu einem Mitgliedsserver heruntergestuft. Ordnungsgemäß heißt, dass aus den Metadaten des
Active Directory (AD) die Informationen bzgl. des Domänencontrollers (DC) automatisch während dem DCPROMO-Vorgang entfernt werden.
Dazu muss natürlich der DC funktionstüchtig sein und Verbindung zur Gesamtstruktur haben.

Beim Herunterstufen eines DCs werden während des normalen DCPROMO-Vorgangs, folgende Änderungen durchgeführt:

  • Falls der DC der Träger der FSMO-Rollen sein sollte, werden diese auf einen anderen DC verschoben.
  • Das NTDS Settings Objekt wird samt Querverweisen entfernt.
  • Das Verzeichnis ...\NTDS in der sich die Verzeichnisdatenbank (Ntds.dit) samt Logs befinden, wird vom DC entfernt.
  • Abhängige Dienste des AD werden auf dem DC deinstalliert, wie z.B. der „Kerberos-Schlüsselverteilungscenter“
    oder der „Standortübergreifender Messagingdienst“.
  • Das SYSVOL-Verzeichnis wird samt Inhalt vom DC entfernt.
  • Die lokale SAM-Datenbank wird auf dem Server erstellt.
  • Der Typ des Computerkontos wird von Domänencontroller zu Mitgliedsserver geändert. Dabei ändert sich der Wert
    im Attribut userAccountControl, das sich in den Eigenschaften des Computerkontos befindet, von Hex=0x82000 (Dezimal=532480)
    zu Hex=1000 (Dezimal=4096).
  • Das Computerkonto wird von der OU Domain Controllers in den Container Computers verschoben.
  • Das DNS wird weitestgehend bereinigt, in dem die SRV- sowie CNAME-Records des DCs entfernt werden.


Die Deinstallation der beiden Serverrollen Active Directory-Domänendienste und DNS-Server (falls installiert) unter Windows Server 2008,
muss der Administrator noch nachträglich im Server-Manager manuell durchführen.

Wenn man den DC einfach abschalten und neu installieren würde, wären in den Metadaten des Active Directory noch alle
Informationen des DCs enthalten. Die Daten des DCs wären weiterhin im AD gespeichert, falls dieser ausfallen (z.B. bei einem Hardwarecrash)
oder erzwungen aus dem AD entfernt werden sollte. Die unnötigen Daten des DCs die im Active Directory bestehen bleiben, sind z.B.
das DC-Objekt, das NTDS Settings Objekt, das FRS-Mitgliedsobjekt, die Verbindungsobjekte und die DNS-Informationen
(bei AD-integrierter Forward Lookup Zone).

Bevor jedoch ein anderer Server mit demselben Computernamen zum DC heraufgestuft werden kann, muss sichergestellt sein,
dass die Daten des DCs vollständig aus dem AD entfernt wurden. Abgesehen davon würden die Replikationspartner des ausgeschalteten
oder defekten DCs Warnungen im Verzeichnisdienstprotokoll und im Dateireplikationsdienstprotokoll (bei der SYSVOL-FRS Replikation) melden,
da sie mit ihm keine AD- bzw. SYSVOL-Replikation durchführen konnten. Daher sollten stets die Informationen eines nicht mehr existierenden
DCs aus dem AD entfernt werden.



Die erzwungene Herabstufung eines Domänencontrollers

Befindet sich ein DC an einem entfernten Standort der temporär keine WAN/VPN-Verbindung zur Zentrale und somit zur Gesamtstruktur hat,
ist das Herunterstufen eines DCs durch die erzwungene Herabstufung trotzdem möglich. Andere Ursachen die das herkömmliche Entfernen
eines DCs nicht zulassen könnten, wären z.B. Probleme mit der Konnektivität, Namensauflösung (DNS), Authentifizierung,
AD-Replikation (Stichwort: Tombstone Lifetime) oder ein Hardwaredefekt. Auch in solchen Situationen ist das herunterstufen eines DCs möglich,
dabei aber nicht so komfortabel wie sonst üblich. Die AD-Informationen können dann zum einen auf dem DC selbst entfernt werden und zum anderen,
müssen die Metadaten des ADs bereinigt werden. Diese Vorgehensweise besteht bereits seit Windows 2000.

Im ersten Schritt kann das erzwungene Herabstufen eines DCs mit dem Befehl DCPROMO /Forceremoval durchgeführt werden.
Dazu müssen die DCs die unter Windows 2000 und Windows Server 2003 betrieben werden, im normalen Modus gestartet sein!

Der Vorgang bei einer erzwungenen Herabstufung eines DCs ist die gleiche, als wenn der letzte DC einer Domäne deinstalliert werden würde.
Die Änderungen die lokal auf dem DC durchgeführt werden, sind die gleichen wie bei einem herkömmlichen DCPROMO-Vorgang. Das bedeutet,
nach dem Ausführen von DCPROMO /Forceremoval werden auf dem DC die Änderungen die zu Beginn dieses Artikels aufgezählt wurden durchgeführt.
Jedoch ist der DC nach der erzwungenen Herabstufung nicht mehr ein Mitgliedsserver der Domäne, sondern ist nun Mitglied einer Arbeitsgruppe.

Die Rolle AD-DS befindet sich (neben der Rolle des DNS-Servers) auch nach diesem Vorgang auf dem Server und kann nachträglich
manuell deinstalliert werden. Im Systemprotokoll des Servers wird unter Windows 2000 die EventID 29234 und unter Windows Server 2003
sowie Windows Server 2008 die EventID 29239 protokolliert.


 

Eine Neuheit ab Windows Server 2008 wäre, das sich die erzwungene Herabstufung sogar im Modus Verzeichnisdienste wiederherstellen
durchführen lässt. So können auch dann die AD-Informationen lokal vom DC entfernt werden, falls der DC nicht normal starten sollte.
Dies war unter den früheren Serverversionen nicht möglich! Die erzwungene Herabstufung funktioniert auch wenn der Dienst
Active Directory-Domänendienste gestoppt ist. Natürlich spielt es dabei keine Rolle, ob es sich um einen beschreibbaren
oder Windows Server 2008 RODC handelt.

Wenn der DC unter Windows 2000 und Windows Server 2003 nicht im normalen Modus startet, so gibt es noch eine weitere Möglichkeit
die AD-Informationen lokal vom DC zu entfernen. Das sei der Vollständigkeitshalbe erwähnt. Wie das funktioniert, wird in diesem Artikel erläutert:

Das Active Directory gewaltsam vom DC entfernen

 

Die Vorgehensweise bei einer erzwungenen Herabstufung eines DCs sieht folgendermaßen aus:

  1. In einer Kommandozeile oder unter Start-Ausführen gilt es die erzwungene Herabstufung, mit dem Befehl DCPROMO /Forceremoval einzuleiten.
  2. Seit Windows Server 2003 SP1 erhält dabei der Administrator nach Ausführen des Befehls für die folgenden Funktionen Warnhinweise. Jedoch können die Warnmeldungen bzgl. der FSMO-Rollen unterdrückt werden, wenn der Parameter /demotefsmo:yes angegeben wird.

    - Wenn auf dem herunterzustufenden DC einer der FSMO-Rollen (oder alle) liegen sollte, erhält der Administrator für jede Rolle einen Warnhinweis.

     


    - Ist das DNS auf dem DC installiert, wird ebenfalls ein Warnhinweis angezeigt.
    - Auch wenn der globale Katalog (GC) auf dem DC aktiviert ist, erscheint ein weiterer Warnhinweis.

    Alle diese Warnungen müssen mit Ja bestätigt werden. Andernfalls bricht der Vorgang ab. Mit den Warnungen wird der
    Administrator darauf hingewiesen, diese Funktionen auf anderen DCs in der Gesamtstruktur sicherzustellen.
  3. Es folgt die Willkommensseite des DCPROMO-Assistenten.
  4. Im nächsten Schritt werden dem Administrator Informationen über die erzwungene Herabstufung und der Hinweis,
    dass die Metadaten der Gesamtstruktur nicht aktualisiert werden angezeigt.
  5. Ist der DNS-Server auf dem DC installiert, erscheint ein weiterer Hinweis.
  6. Im nächsten Fenster muss das lokale Administratorkennwort vergeben werden.
  7. Anschließend folgt die Zusammenfassung und mit einem letzten Klick auf Weiter beginnt nun das Herabstufen des DCs.
  8. Ist der Vorgang abgeschlossen, verlangt der Assistent einen Neustart. Anschließend befindet sich der Server in einer Arbeitsgruppe
  9. Das primäre DNS-Suffix der Domäne hat der Server nach diesem Vorgang noch weiterhin gespeichert,
    was natürlich geändert werden kann.
     


Domain controllers do not demote gracefully when you use the Active Directory Installation Wizard to force demotion in Windows Server 2003 and in Windows 2000 Server


 

Mit NTDSUTIL die Gesamtstrukturmetadaten bereinigen

Im zweiten Schritt müssen die Metadaten des Active Directory bereinigt und somit die Daten des nicht mehr existierenden DCs
aus dem AD entfernt werden. Das bereinigen der Metadaten kann seit Windows 2000 mit NTDSUTIL oder ADSIEdit durchgeführt werden.
Die NTDSUTIL Version die ab Windows Server 2003 SP1 enthalten ist, führt dabei weiterreichende Aufgaben durch,
wie z.B. das seizen der FSMO-Rollen falls der zu entfernende DC der Rolleninhaber war. Im Anschluss daran bleibt noch das DNS zu bereinigen.

Die Metadaten werden mit NTDSUTIL ab dem Windows Server 2003 SP1 und somit auch unter Windows Server 2008 wie folgt bereinigt,
wozu Domänen-Administratoren Rechte notwendig sind:

Hinweis: Die Vorgehensweise mit NTDSUTIL unter Windows 2000 und Windows Server 2003 RTM sind identisch.
Jedoch weichen die Nacharbeiten unter Windows 2000 etwas ab.

  1. Zuerst gilt es in einer Kommandozeile oder unter Start-Ausführen NTDSUTIL aufzurufen.
  2. Als nächstes gibt man den Befehl Metadata cleanup ein.
  3. Nun ist der Befehl Connections einzugeben.
  4. Jetzt ist der Befehl Connect to Server <Servername> einzugeben. Einige machen an dieser Stelle den Fehler und versuchen sich
    auf den nicht mehr existierenden DC zu verbinden, was natürlich fehlschlägt. Es muss ein DC ausgewählt werden,
    der online und erreichbar ist.
  5. Im fünften Schritt muss man mit dem Befehl Quit zum Menü Metadata cleanup zurückkehren.
  6. Es folgt die Eingabe Select operation target.
  7. Mit der Eingabe von List domains werden alle Domänen der Gesamtstruktur angezeigt.
  8. Daraufhin ist mit dem Befehl Select domain <Domänennummer> die Domäne auszuwählen, aus der der DC entfernt werden soll.
  9. Danach lässt man sich mit List sites alle AD-Standort der Gesamtstruktur anzeigen.
  10. Mit dem Befehl Select site <Standortnummer> wählt man den Standort, aus dem der DC entfernt werden soll.
  11. Dann lässt man sich mit dem Befehl List servers in site alle DCs des ausgewählten Standorts anzeigen.
  12. Anschließend muss mit der Eingabe des Befehls Select server <DC-Nummer> der DC angegeben werden,
    der aus dem AD entfernt werden soll.
  13. Mit der Eingabe von Quit muss man erneut in die Ebene Metadata cleanup zurückkehren.
  14. Zu guter letzt wird mit der Eingabe von Remove selected server der DC nun endlich aus den Metadaten des AD entfernt.
  15. Es folgt eine Sicherheitsabfrage ob der DC tatsächlich entfernt werden soll.




  16. Falls der zu entfernende DC der Rolleninhaber einer der FSMO-Rollen sein sollte, wird für jede Rolle das Popup
    Bestätigung der Funktionenübernahme mit der entsprechenden Rolle angezeigt. Mit Ja oder Nein kann bestimmt werden,
    ob der angezeigte DC die Rollen übertragen bekommen soll.




  17. Mit einem genauen Blick auf die Anzeige sollte sichergestellt werden, dass - falls FSMO-Rollen zu übertragen sind -
    auch tatsächlich alle Rollen übertragen wurde.
  18. Wenn dem Administrator bei dem übertragen der FSMO-Rollen ein Fehler unterlaufen ist und dieser aus Versehen auf Nein geklickt hat,
    kann jederzeit im Nachgang die FSMO-Rolle wie gewohnt entweder durch die GUI (ausgeschlossen ist hier der RID-Master,
    dieser muss durch NTDSUTIL geseized werden) oder durch NTDSUTIL - seize auf einen anderen DC übertragen werden.

    Die FSMO-Rollen verschieben
  19. Mit Quit kann man nun NTDSUTIL beenden.
  20. Weiterhin ist noch das DC-Objekt aus dem Snap-In Active Directory-Standorte und -Dienste (dssite.msc) zu entfernen.
    Dieses DC-Objekt bleibt auch beim normalen herunterstufen bestehen und muss zusätzlich noch entfernt werden.
    Unterhalb des DC-Objekts wurde bereits das NTDS Settings-Objekt entfernt, es existiert aber weiterhin noch das DC-Objekt.
    Nach dem entfernen des DC-Objekts verschwinden auch evtl. bestehende Verbindungsobjekte bei den Replikationspartnern.
  21. Nach dem bereinigen der Metadaten sind noch die Einträge aus dem DNS zu löschen. Dabei sind die SRV-Einträge sowie
    der CNAME-Eintrag des DCs aus der Forward Lookup Zone der Domäne und aus der Zone “_msdcs.Root-Domäne“ zu entfernen.
    Falls eine Reverse-Lookup Zone existiert, dann sind auch dort die Einträge des DCs zu entfernen. Zusätzlich sollte der DC aus
    dem Reiter Namenserver, welches in den Eigenschaften der Forward Lookup Zone zu finden ist, entfernt werden.
     

    Die Einträge im DNS können auch mit Hilfe von NLTEST entfernt werden. Das Tool befindet sich unter Windows 2000 sowie
    Windows Server 2003/2003 R2 in den Windows Support Tools und ist im Windows Server 2008 "on Bord". Die DC-spezifischen
    SRV-Einträge werden mit dem Befehl nltest /DSDEREGDNS:DomCon01.Domäne.TLD entfernt. Damit auch d
    ie GUID-Einträge des DCs
    entfernt werden, sind die Parameter /DOMGUID sowie /DSAGUID hilfreich.



Eine weitere und kürzere Variante mit NTDSUTIL die Metadaten zu bereinigen,
die aber erst ab dem Windows Server 2003 SP1 zur Verfügung steht, wäre die folgende:

  1. Es gilt zuerst das NTDSUTIL in der Befehlszeile oder unter Start-Ausführen zu starten.
  2. Dann muss in die Ebene Metadata cleanup gewechselt werden.
  3. Nun muss der Befehl remove selected server <DN des DCs aus der Konfigurationspartition> eingegeben werden.
    Der Befehl würde so aussehen:
    remove selected server CN=<DC-Name>,CN=Servers,CN=<Standortname>,CN=Sites,CN=Configuration,DC=<Root-Domäne>.

    Wenn sich der DC mit dem Namen MZDCON01 im AD-Standort Mainz befindet und der FQDN der Root-Domäne „intra.dikmenoglu.de“ lautet,
    würde der Befehl zum entfernen so aussehen:
    remove selected server CN=MZDCON01,CN=Servers,CN=Mainz,CN=Sites,CN=Configuration,DC=intra,DC=dikmenoglu,DC=de.
  4. Die Sicherheitsabfrage Bestätigung des Entfernens des Servers erscheint, die mit Ja zu bestätigen ist.
  5. Befinden sich FSMO-Rollen auf dem zu entfernenden DC, wird für jede Rolle die Sicherheitsfrage
    Bestätigung der Funktionenübernahme gestellt. Es muss dann mit
    Ja oder Nein bestätigt werden,
    ob die entsprechende Rolle übertragen werden soll.
  6. Die FSMO-Rollen können auch zu einem späteren Zeitpunkt in gewohnter Weise, mit NTDSUTIL - seize oder durch die GUI
    (bis auf den RID-Master) auf einen anderen DC übertragen werden.
  7. Danach muss noch das DC-Objekt aus dem Snap-In Active Directory-Standorte und -Dienste entfernt werden.
  8. Die SRV- sowie CNAME-Einträge aus den beiden Forward Lookup Zonen <Domäne> und <_msdcs.Root-Domäne>,
    sind ebenfalls noch zu löschen. Deise können manuell oder einfacher mit NLTEST entfernt werden. Der Befehl
    dazu lautet: nltest /DSDEREGDNS:DomCon01.Domäne.TLD. Zum entfernen der DC-GUID Einträge im DNS
    helfen die Parameter /DOMGUID sowie /DSAGUID.


Die genaue Vorgehensweise für ältere Server-Versionen wird in diesem Artikel erläutert:
How to remove data in Active Directory after an unsuccessful domain controller demotion


War das der letzte DC einer Domäne, muss noch die Domäne aus den Metadaten entfernt werden.
How to remove orphaned domains from Active Directory


 

Das bereinigen der Metadaten nach einer erzwungenen Herabstufung oder eines defekten
beschreibbaren Windows Server 2008 DCs

Unter Windows Server 2008 wurde wie vieles andere, auch das bereinigen der Metadaten verbessert und für den Administrator erleichtert.
Nun kann man das bereinigen der Metadaten, neben NTDSUTIL und ADSIEdit, zusätzlich in der MMC Active Directory-Benutzer und -Computer
oder Active Directory-Standorte und -Dienste durchführen. Das bereinigen der Metadaten kann nun alleine
durch die grafische Oberfläche durchgeführt werden.

Dazu sind in der MMC Active Directory-Benutzer und -Computer (ADBuC) die folgenden Schritte durchzuführen:

  1. Im ersten Schritt ruft man das Snap-In ADBuC, entweder unter Start-Programme-Verwaltung oder durch Start-Ausführen-dsa.msc auf.
  2. Danach wählt man in der OU Domain Controllers, worin sich standardmäßig die DCs befinden, den entsprechenden DC aus.
  3. Mit einem Rechtsklick auf das Icon des DC-Objekts wählt man nun aus dem Kontextmenü die Option Löschen aus.
    Zum Löschen kann auch das rote „X“ auf der Symbolleiste gewählt werden.
  4. Wie üblich unter Windows folgt eine Sicherheitsabfrage die es zu bestätigen gilt.




  5. Im nächsten Schritt folgt erneut ein Warnhinweis. Der Administrator wird darauf hingewiesen, dass er versucht einen DC aus
    dem AD zu löschen, obwohl das DCPROMO für das ordnungsgemäße Herunterstufen noch nicht ausgeführt wurde. Für das
    ordnungsgemäße Herunterstufen solle man das DCPROMO auf dem DC ausführen.

    Da z.B. bei einem Hardwarecrash des DCs das DCPROMO eben nicht ausgeführt werden kann, muss an dieser Stelle der Haken
    bei der folgenden Option gesetzt werden:
    Dieser Domänencontroller ist ständig offline und kann nicht mehr mit dem Installations-Assistenten für
    die Active Directory-Domänendienste (DCPROMO) herabgestuft werden
    .

    Anschließend ist auf die Schaltfläche Löschen zu klicken.




  6. Wenn auf dem zu löschenden DC der globale Katalog (GC) aktiviert sein sollte, erscheint ein weiterer Hinweis.
    Es sollte natürlich sichergestellt werden, dass die Funktion des GC weiterhin in der Gesamtstruktur zur Verfügung steht.




  7. Falls der zu entfernende DC der Träger einer der FSMO-Rollen sein sollte, erscheint ein weiterer Hinweis mit der Frage,
    ob die Rollen auf den neuen DC übertragen werden sollen. Mit einem Klick auf OK werden die Rollen dann übertragen.




  8. Des Weiteren ist noch das DC-Objekt aus der MMC Active Directory-Standorte und -Dienste zu entfernen.
    Spätestens danach verschwinden bestehende Verbindungsobjekte bei den Replikationspartnern.


Somit wurden endgültig die Metadaten des AD bereinigt.
Leider erscheint bei dieser Vorgehensweise zum bereinigen der Metadaten am Ende kein Hinweis, dass der Vorgang abgeschlossen wurde.

Zum Schluss sollten noch die Informationen des DCs aus dem DNS entfernt werden. Das wären die SRV-Einträge sowie der CNAME Eintrag
aus der Domänen-Forward Lookup Zone und aus der Zone „_msdcs.Root-Domäne“. Aus dem Reiter Namenserver in den Eigenschaften der
Forward Lookup Zone ist der DC ebenfalls noch zu löschen. Mit NLTEST können die Einträge einfach entfernt werden:
nltest /DSDEREGDNS:DomCon01.Domäne.TLD. Zum entfernen der DC-GUID Einträge im DNS helfen die Parameter /DOMGUID sowie /DSAGUID.


Hinweis für Windows Server 2008 DCs (und höher): Beim Bereinigen der AD-Metadaten durch den Domänen-Admin kann es unter Umständen
vorkommen, dass man die Fehlermeldung Zugriff verweigert erhält. Die Ursache in den meisten Fällen ist, dass das NTDS Settings- und/oder DC-Objekt
vor dem zufälligen Löschen geschützt ist! Entfernt man anschließend in der MMC Active Directory-Standorte und -Dienste diesen Schutz,
können anschließend die Metadaten erfolgreich bereinigt werden.

Siehe auch: Wer hat das Objekt gelöscht?


 

Das bereinigen der Metadaten nach einer erzwungenen Herabstufung oder eines defekten
Windows Server 2008 Read-Only Domänencontroller

Die Daten eines Read-Only Domänencontrollers (RODC) werden aus dem AD, auf ähnliche Weise wie ein beschreibbarer
Windows Server 2008 entfernt. Das Verfahren durch die MMC Active Directory-Benutzer und -Computer (dsa.msc) sieht folgendermaßen aus:

  1. Nach dem öffnen der MMC dsa.msc gilt es das RODC-Objekt in der OU Domain Controllers mit einem Rechtklick auszuwählen und aus dem
    Kontextmenü die Option Löschen zu wählen. In der Symbolleiste kann auch das rote „X“ zu löschen des RODC-Objekts gewählt werden.
  2. Es folgt eine Sicherheitsabfrage, ob der ausgewählte RODC gelöscht werden soll.
  3. Als nächstes hat man die Möglichkeit auszuwählen, ob die Kennwörter der Benutzer- und/oder Computerkonten die auf dem
    RODC gespeichert wurden, zurückgesetzt werden sollen. Im Fall der Computerkonten müssen nach dem zurücksetzen
    der Computerkontokennwörter die Clients erneut zur Domäne hinzugefügt werden. Zusätzlich wird die Option angeboten,
    die Konten die auf dem RODC gespeichert wurden (sei es Benutzer- oder Computerkonten) sich anzeigen oder in eine Datei exportieren zu lassen.

    Diese Optionen werden beim Entfernen eines RODCs durch NTDSUTIL nicht angeboten!
    Dem Administrator stehen diese Optionen ausschließlich beim entfernen eines RODCs über die grafische Oberfläche (dsa.msc und dssite.msc) zur Verfügung.




  4. Es folgt eine Übersicht über die im vorherigen Schritt gewählten Optionen.




  5. Ist der GC auf dem RODC aktiviert, erscheint ein weiterer Hinweis mit der Frage, ob der Löschvorgang fortgesetzt werden soll.




  6. Zum Schluss muss noch das RODC-Objekt aus dem Snap-In Active Directory-Standorte und -Dienste entfernt werden.


Anschließend muss im DNS nichts durchgeführt werden. Die Einträge in der Domänen-Forward Lookup Zone
sowie „_msdcs.Root-Domäne“ sind automatisch gelöscht.


 

Einen beschreibbaren Windows Server 2008 DC oder RODC aus
Active Directory-Standorte und -Dienste entfernen

Neben der MMC Active Directory-Benutzer und -Computer können die Daten eines beschreibbaren Windows Server 2008 DC
oder RODC auch durch die MMC Active Directory-Standorte und -Dienste entfernt werden. Die Vorgehensweise ist die gleiche
wie in der MMC ADBuC. Allerdings muss das NTDS Settings Objekt gelöscht werden und nicht etwa das DC-Objekt!

Der Versuch direkt das DC-Objekt in dssite.msc zu löschen schlägt fehl,
solange nicht zuerst das NTDS Settings Objekt unterhalb des DC-Objekts gelöscht wurde.


 

Weitere Informationen:
How to use the UserAccountControl flags to manipulate user account properties
Active Directory-Domänendienste (AD-DS)

Sunday, August 10, 2008 2:13:54 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory  | 
 Sunday, July 20, 2008

Wenn ein zusätzlicher Domänencontroller (DC) z.B. durch die Install from Media-Funktion (kurz IFM) bereitgestellt wird, kann es je nach
Umgebung eine Weile dauern bis die Replikation vollständig abgeschlossen wurde. Die Dauer der Replikation hängt von der Größe der
Active Directory-Datenbank (Ntds.dit), von der zur Verfügung stehenden Badbreite und von dem Replikationszeitplan ab. Wobei die zur
Verfügung stehende Bandbreite sowie der Replikationszeitplan bei der standortübergreifenden, der sogenannten Inter-Site Replikation
eher eine Rolle spielt.

In vielen Umgebungen in denen vielleicht nur ein AD-Standort existiert reicht meistens ein Blick in die einzelnen MMCs aus. Diese wären
z.B. das Active Directory-Benutzer und –Computer Snap-In, das DNS-Snap-In (bei AD-integrierter FLZ) oder dem Verzeichnisdienstprotokoll,
um festzustellen ob bereits die Active Directory-Replikation stattgefunden hat oder evtl. ein Problem mit der AD-Replikation besteht.
Wer es aber genau wissen möchte hat die Möglichkeit, sich im laufenden Betrieb einen Überblick über die Replikation zu verschaffen,
ob auch tatsächlich die Repliken auf den verschiedenen DCs identisch sind. Ohnehin sollte ein Administrator die AD-Replikation stets überprüfen.

Mit den beiden Kommandozeilentools DSASTAT und REPADMIN lässt sich zum einen der Inhalt einer Verzeichnispartition auf zwei DCs
vergleichen und zum anderen, eine statistische Auswertung der Verzeichnispartition durchführen. So lassen sich Unstimmigkeiten innerhalb
einer Active Directory-Partition zwischen zwei DCs aufdecken. Auch lässt sich das ganze über die grafische Oberfläche mit REPLMON überprüfen.

Alle drei genannten Tools befinden sich unter Windows 2000 sowie Windows Server 2003 in den Windows Support Tools, die auf der
Windows 2000 sowie Windows Server 2003 CD im Verzeichnis Support/Tools zu finden sind. Für beide Server-Versionen können die
Support Tools auch von den Microsoft-Seiten heruntergeladen werden (siehe unter Weitere Informationen). Die beiden Tools
DSASTAT und REPLMON existieren unter Windows Server 2008 nicht. Aber auch unter Windows Server 2008 lassen sich die
Windows Server 2003 SP2 Support Tools installieren. Direkt nach dem Starten der Installation meldet der Assistent zwar bekannte
Kompatibilitätsprobleme, aber dennoch lassen sich die Support Tools ohne weiteres installieren und im Fall von DSASTAT sowie REPLMON,
auch ohne Funktionsverlust verwenden. Andererseits ist im Windows Server 2008 das REPADMIN bereits im Betriebssystem integriert.

 

DSASTAT

Das DSASTAT kann eine Verzeichnispartition zwischen zwei DCs der gleichen Domäne oder im Falle des globalen Katalogs,
zwischen verschiedenen Domänen überprüfen. Dabei werden im ersten Schritt die Informationen wie
Megabyte pro Server,
Objekte pro Server und Megabyte pro Objektklasse ausgelesen. Im zweiten Schritt werden dann die Attribute der replizierten Objekte
miteinander verglichen. So kann überprüft werden, ob die Verzeichnispartition auf beiden DCs exakt übereinstimmt.
Die Hilfe zu DSASTAT lässt sich wie gewohnt in der Kommandozeile mit dem Befehl
dsastat /? aufrufen,
in der die wenigen Parameter erläutert werden.

Die Verzeichnisinformationen aller DCs in der Domäne, werden mit diesem Befehl vergliechen:
Dsastat –loglevel:debug –output:both


Dieser Befehl vergleicht die Verzeichnisinformationen der angegebenen DCs:
Dsastat -s:<DC01>;<DC02>;<DC03>


Eine ausführlichere Überprüfung wird mit diesem Befehl durchgeführt:

dsastat –s:DomainS1;DomainS2 –b:DC=Domain,DC=com –gcattrs:all –sort:true –t:false –p:100


Um z.B. den Standard-Container Users zwischen zwei DCs zu vergleichen, muss der folgende Befehl eingegeben werden (alles in einer Zeile):
dsastat -s:DC01;DC02 -b:CN=Users,DC=intra,DC=domaene,DC=de -gcattrs:all -sort:true -t:false -p:100
-filter:"(&(objectcategory=person)(objectclass=user))"


Wenn ein DC aus der Sub-Domäne mit dem globalen Katalog der Root-Domäne verglichen werden soll, so gilt es diesen Befehl einzugeben:
dsastat -s:RootDC:3268;FQDN-SubDC -b:DC=sub,DC=domäne,DC=de -gcattrs:objectclass -p:500


Wichtig ist egal welcher Befehl verwendet wird, immer das Ende der Ausgabe.

 


 

 

REPADMIN

Eine andere Möglichkeit eine Verzeichnispartition zwischen zwei DCs zu vergleichen, stellt das REPADMIN dar.

Unter Windows 2000 lautet die Syntax wie folgt:
Repadmin /getchanges <DN-NamingContext>
<FQDN-DC01> <GUID-DC02>
Repadmin /getchanges
<DN-NamingContext> <FQDN-DC02> <GUID-DC01>


Besteht zwischen beiden DCs ein unterschiedlicher Datenbestand innerhalb einer Verzeichnispartition,
werden die Objekte um die es geht in der Ausgabe aufgeführt.

Hinweis: Der Parameter /getchanges in Windows 2000, wird auch unter Windows Server 2003 sowie Windows Server 2008 weiterhin unterstützt.


Des Weiteren können auch die folgenden Befehle, auf jeweils beiden DCs unter Windows 2000, Windows Server 2003 und 2008
ausgeführt werden, um so den up-to-dateness vector zu vergleichen:

Repadmin /showvector <DN-NamingContext> <NameDC1>
Repadmin /showvector <DN-NamingContext> <NameDC2>


Unter Windows Server 2003 sowie Windows Server 2008 ist dieser Befehl einzugeben:
Repadmin /showchanges <FQDN-ZielDC> <GUID-QuellDC> <DN-NamingContext> /statistics


Die Konfigurationspartition kann zwischen einem DC der Root-Domäne und einem DC einer Sub-Domäne wie folgt überprüft werden:
Repadmin /showchanges <FQDN-ZielDC> <GUID-QuellDC> <CN=Configuration,DC=Root-Domäne,DC=de> /statistics


Die Anwendungsverzeichnispartition ForestDNSZones kann folgendermaßen überprüft werden:
Repadmin /showchanges <FQDN-ZielDC> <GUID-QuellDC> <DC=ForestDNSZones,DC=Root-Domäne,DC=de> /statistics


Die Object-GUID eines DCs lässt sich z.B. unter Windows 2000 mit Repadmin /showreps und unter Windows Server 2003 sowie
Windows Server 2008 mit Repadmin /showrepl herausfinden.


 

REPLMON

Mit dem Replication-Monitor lassen sich ebenfalls Unterschiede einer Verzeichnispartition zwischen zwei DCs unter Windows 2000,
Windows Server 2003 und Windows Server 2008 aufdecken.

  1. Nach dem Starten von REPLMON gilt es zuerst unter dem Menüpunkt View die Options aufzurufen.
  2. Im Reiter General ist die Option Show Transitive Replication Partners and Extended Data zu aktivieren und anschließend
    die Auswahl mit OK zu bestätigen.
  3. Danach ist in der linken Spalte mit einem Rechtsklick auf Monitored Server die Option Add Monitored Server… zu wählen.
  4. Im Assistent Add Monitored Server Wizard der daraufhin startet, gilt es einen gewünschten DC (z.B. einen neu hinzugefügten DC „DC01“)
    anzugeben, der dann in der linken Spalte im Replmon erscheint.
  5. Nun muss auf das Pluszeichen der entsprechenden Verzeichnispartition geklickt werden, damit mit einem Rechtsklick
    auf dem anderen DC (DC02), mit dem die Verzeichnispartition verglichen werden soll, die Option Check Current USN
    and Un-replicated Objects
    ausgewählt werden kann.
  6. Falls notwendig, können für diesen Vorgang alternative Benutzerinformationen angegeben werden.
  7. Wenn es nun Objekte gäbe die von DC02 zu DC01 noch nicht repliziert wurden, würden diese noch nicht replizierten Objekte
    in einer Meldung angezeigt werden.
  8. Soll hingegen die Replikation einer bestimmten Verzeichnispartition von DC01 zu DC02 kontrolliert werden, so sind die
    gleichen Schritte auszuführen bis auf Punkt 4 (und 5). Dort ist dann DC02 als Monitored Server auszuwählen und an der
    gewünschten Verzeichnispartition mit einem Rechtsklick auf DC01, erneut die Option Check Current USN and Un-replicated Objects auszuwählen.



Weitere Informationen:
Windows 2000 Service Pack 4 Support Tools
Windows Server 2003 Service Pack 2 32-bit Support Tools
Dsastat Examples
Determining the Server GUID of a Domain Controller

Sunday, July 20, 2008 3:48:13 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Replikation  | 
 Thursday, July 10, 2008

Nun da seit einigen Monaten der Windows Server 2008 gelaunched wurde, ist auch seit gestern (09.07.2008) die neue ADMT Version 3.1 verfügbar,
das jetzt auch den Windows Server 2008 unterstützt. Wer einmal eine Migration mit dem „Active Directory Migration Tool“ durchgeführt hat,
weiß dieses Tool zu schätzen. Damit ist es möglich, Benutzer-, Computer- sowie Gruppenkonten von einer Domäne in eine andere Domäne
zu migrieren. Die Profileinstellungen der Benutzer bleiben alle samt erhalten. Der Benutzer selbst merkt von dieser Migration nichts.

 

Allerdings wird Windows NT standardmäßig nicht mehr unterstützt!

Jedoch gibt es auf der Download-Seite von ADMT v3.1 den folgenden Hinweis:

 

To obtain customer support if you are performing migration operations involving NT 4.0 source domains or NT 4.0 domain controllers
(with SP4 or higher), please contact your Microsoft Services representative or visit
http://www.microsoft.com/microsoftservices.

 

 

 

Hier der Download:

Download details: ADMT v3.1

 

Hier das Whitepaper zu dem Tool:
Download details: Migrating and Restructuring Active Directory Domains Using ADMT v3.1

 

Weitere Informationen:
Benutzermigration mit ADMT v3: How-To

Thursday, July 10, 2008 12:24:21 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Migration  | 
 Sunday, July 06, 2008

Damit der tägliche Benutzersupport nicht alleine auf den Schultern des Administrators lastet, kann er diverse Aufgaben
im Active Directory an den First Level Support oder an EDV-versierte Mitarbeiter delegieren.

 

Siehe auch:

Objektdelegierungen einrichten
Der Objektdelegierungsassistent

Delegierte Berechtigungen im AD verstehen

 

 

Nun kann es auch erforderlich werden, lediglich das Recht zum aktivieren bzw. deaktivieren eines Benutzerkontos
im Active Directory zu delegieren. Der Haken an diesem Vorhaben ist, dass nicht ein dediziertes Recht oder Attribut zum delegieren
dieser Anforderung existiert. Die Option Konto ist deaktiviert um das es hier geht, findet man in den Eigenschaften eines Benutzerkontos
im Reiter Konto unter den Kontooptionen.

 

Die Kontooptionen werden dabei weitestgehend über das Attribut User-Account-Control gesteuert, das sich aus einer Bitmaske zusammensetzt.
Das Attribut userAccountControl existiert sowohl in Benutzer- als auch in Computerkonten. Wenn z.B. ein Benutzerkonto erstellt wird,
hat das userAccountControl den Wert 512 (Hex: 0x0200). Je nachdem ob und welche Optionen in den Kontooptionen zusätzlich aktiviert werden,
verändert sich auch der Wert im userAccountControl. Standardmäßig enthält das userAccountControl eines Clients den Wert 4096 (Hex: 0x1000).

 

Dadurch das im userAccountControl verschiedene Werte enthalten sein können, unterscheidet es sich wesentlich von anderen Attributen
die lediglich einen Wert enthalten können. Die einzelnen Werte die das userAccountControl enthalten kann, werden in diesem Artikel erläutert:

How to use the UserAccountControl flags to manipulate user account properties

 

Wenn nun einem Sicherheitsprinzipal (so wie es z.B. Benutzer oder Gruppen darstellen) das Schreibrecht für das Attribut userAccountControl
auf einem Container delegiert wird, erhält das Sicherheitsprinzipal auf eine Reihe von Kontooptionen das Schreibrecht, auf die im Container
befindlichen Benutzerobjekte. Nach der Delegierung stehen dem Sicherheitsprinzipal folgende Kontooptionen zur Verfügung:

  • Kennwort läuft nie ab
  • Kennwort mit umkehrbarer Verschlüsselung speichern
  • Konto ist deaktiviert

  • Benutzer muss sich mit einer Smartcard anmelden

  • Konto ist vertraulich und kann nicht delegiert werden

  • DES-Verschlüsselungstypen für dieses Konto verwenden

  • Keine Kerberos-Präauthentifizierung erforderlich


Die Delegierung für das userAccountControl kann in der MMC Active Directory-Benutzer und -Computer (ADBuC) durch den
Objektdelegierungsassistenten durchgeführt werden. Mit einem Rechtsklick auf den entsprechenden Container gilt es zuerst
die Option Objektverwaltung zuweisen… auszuwählen. Nach der Willkommensseite ist der Benutzer oder idealerweise
eine Gruppe auszuwählen, die für die Verwaltung der Kontooptionen zuständig sein soll. Danach gilt es die Option
Benutzerdefinierte Tasks zum Zuweisen erstellen und anschließend unter der Option Folgenden Objekten im Ordner
lediglich die „Benutzer“-Objekte auszuwählen. Im darauffolgenden Schritt gilt es dann nur die Option Eigenschaftenspezifisch
und unter den Berechtigungen die Option userAccountControl schreiben zu aktivieren.

 


Neben dem Assistenten kann die Berechtigung userAccountControl schreiben auch in der Discretionary Access Control List (kurz DACL)
des Containers, an die Gruppe delegiert werden. Dazu ruft man mit einem Rechtsklick auf dem gewünschten Container die Eigenschaften
auf und wechselt zum Reiter Sicherheit. Der Reiter Sicherheit erscheint nur, wenn in der MMC ADBuC unter Ansicht die Option
„Erweiterte Funktionen“ aktiviert wurde.  Mit einem Klick auf „Erweitert“ gelangt man zu den erweiterten Sicherheitseinstellungen,
der sogenannten DACL. Dort angelangt, gilt es mit „Hinzufügen“ zuerst eine Gruppe und im Reiter „Eigenschaften“ im Feld
„Übernehmen für“ die „Benutzer“-Objekte auszuwählen. Zum Schluss muss die Berechtigung
„userAccountControl“ schreiben zugelassen werden.

Über die Kommandozeile lässt sich die Delegierung mit dem Tool DSACLS, das sich unter Windows 2000 sowie Windows Server 2003
in den Windows Support Tools befindet und im Windows Server 2008 bereits integriert ist, einrichten. Der Befehl lautet wie folgt:

DSACLS “<Containerpfad>” /I:S /G “<Domäne>\<Gruppe>”:WP;userAccountControl;User

 

Die Kontooptionen können aber noch weiter eingeschränkt werden. Der Zugriff auf die beiden Optionen Kennwort läuft nie ab
sowie Kennwort mit umkehrbarer Verschlüsselung speichern kann in einem zweiten Schritt, der Gruppe verweigert werden.
Dazu sind zuerst auf der Domänenebene die Eigenschaften aufzurufen. Danach ruft man im Reiter „Sicherheit“ mit einem Klick
auf „Erweitert“ die erweiterten Sicherheitseinstellungen auf. Mit „Hinzufügen“ gilt es die Gruppe auszuwählen, die im ersten Schritt
das Schreibrecht auf das userAccountControl erhalten hat. Im Reiter „Objekt“ ist im Feld „Übernehmen für“ die Option
„Nur dieses Objekt“ zu wählen. Anschließend gilt es die beiden erweiterten Berechtigungen, die erst seit Windows Server 2003
zur Verfügung stehen, zu verweigern:

 

 


Man achte auf die grandiosen und vor allem eindeutigen Bezeichnungen!

 

 

 

Weitere Informationen:
Delegierte AD-Berechtigungen anzeigen und entfernen
Minimum permissions are needed for a delegated administrator to force password change at next logon procedure


Sunday, July 06, 2008 7:01:08 PM (W. Europe Standard Time, UTC+01:00)  #      Active Directory | Objektverwaltung  | 
 Thursday, June 19, 2008

Viele Administratoren die eine Active Directory Umgebung betreuen, werden bereits den Objektdelegierungsassistenten kennengelernt haben.
Dieser Assistent der sich zum einen in der MMC Active Directory-Benutzer und -Computer und zum anderen,
in der MMC Active Directory-Standorte und -Dienste aufrufen lässt, ist dem Administrator bei der Zuweisung von
Active Directory-Berechtigungen behilflich. Mit dem Assistenten können bei den zur Verfügung stehenden allgemeinen Tasks,
schnell Berechtigungen für einige typische Fälle zugewiesen werden. An dieser Stelle bietet der Assistent aber nur einen
kleinen Teil der Möglichkeiten an.

 

Der Assistent ist dabei nur eine von insgesamt drei möglichen Varianten, um Benutzern entsprechende Rechte im Active Directory zu delegieren.
Die beiden anderen Varianten wären, dass direkte bearbeiten der erweiterten Sicherheitseinstellungen (im security descriptor) eines Objekts
und das Kommandozeilentool DSACLS. Wobei gerade die Administratoren, die sich nicht so sehr im Active Directory auskennen,
den Delegierungsassistenten verwenden sollten.

 

Weitere Details werden in den beiden folgenden Artikeln erläutert:

Objektdelegierungen einrichten
Delegierte Berechtigungen im AD verstehen

 

 

Was viele Administratoren nicht wissen ist, das beim Ausführen des Delegierungsassistenten an dem Punkt
Zuzuweisende Aufgaben die dort aufgeführten allgemeinen Tasks, aus einer Textdatei stammen.

 

 


Diese Textdatei die den Namen delegwiz.inf trägt, existiert auf jedem Domänencontroller (und jedem Mitgliedsserver) und ist
jederzeit veränderbar. Die Datei delegwiz.inf befindet sich unter Windows 2000 sowie Windows Server 2003 im Verzeichnis
%windir%\Inf und unter Windows Server 2008 im Verzeichnis %windir%\system32.

<