Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie die Distributed Link Tracking-Dienste in Windows verwenden können, um die Erstellung und Bewegung verknüpfter Dateien auf NTFS-formatierten Volumes und Servern nachzuverfolgen.
Ursprüngliche KB-Nummer: 312403
Übersicht über die Nachverfolgung verteilter Links
Sie können den Distributed Link Tracking Server-Dienst und den Distributed Link Tracking Client-Dienst verwenden, um Links zu Dateien auf NTFS-formatierten Partitionen nachzuverfolgen. Die Nachverfolgung verteilter Verknüpfungen verfolgt Links in Szenarien, in denen die Verknüpfung mit einer Datei auf einem NTFS-Volume hergestellt wird, z. B. Shellverknüpfungen und OLE-Verknüpfungen. Wenn diese Datei umbenannt wird, in ein anderes Volume auf demselben Computer verschoben, auf einen anderen Computer verschoben oder in anderen ähnlichen Szenarien verschoben wird, verwendet Windows die Verteilte Linkverfolgung, um die Datei zu finden. Wenn Sie auf einen Link zugreifen, der verschoben wurde, sucht die Verteilte Linkverfolgung den Link; Sie wissen nicht, dass die Datei verschoben wurde oder dass die Nachverfolgung von verteilten Links verwendet wird, um die verschobene Datei zu finden.
Die Nachverfolgung verteilter Verknüpfungen besteht aus einem Clientdienst und einem Serverdienst. Der Verteilte Linkverfolgungsserver-Dienst wird ausschließlich auf Windows Server-basierten Domänencontrollern ausgeführt. Er speichert Informationen in Active Directory und stellt Dienste bereit, die dem Clientdienst für die Nachverfolgung von verteilten Links helfen. Der Clientdienst für verteilte Verknüpfungen wird auf allen Windows 2000-basierten und Microsoft Windows XP-basierten Computern ausgeführt, einschließlich derjenigen in Arbeitsgruppenumgebungen oder solchen, die sich nicht in einer Arbeitsgruppe befinden. Sie stellt die einzige Interaktion mit Verteilten Linkverfolgungsservern bereit.
Clients für verteilte Linkverfolgung bieten gelegentlich den Verteilten Linkverfolgungsserver-Dienst mit Informationen zu Dateilinks, die der Distributed Link Tracking Server-Dienst in Active Directory speichert. Clients für die Nachverfolgung von verteilten Links können auch den Serverdienst für verteilte Verknüpfungen abfragen, wenn eine Shellverknüpfung oder eine OLE-Verknüpfung nicht aufgelöst werden kann. Verteilte Linkverfolgungsclients fordern den Server für verteilte Linknachverfolgung auf, Links alle 30 Tage zu aktualisieren. Der Dienst für verteilte Linkverfolgung bereinigt Objekte, die seit 90 Tagen nicht aktualisiert wurden.
Wenn eine Datei, auf die von einem Link verwiesen wird, auf ein anderes Volume verschoben wird (auf demselben Computer oder auf einem anderen Computer), benachrichtigt der Distributed Link Tracking-Client den Distributed Link Tracking-Server, der ein linkTrackOMTEntry-Objekt in Active Directory erstellt. Ein linkTrackVolEntry-Objekt wird in Active Directory für jedes NTFS-Volume in der Domäne erstellt.
Notiz
In Windows Server 2008 und neueren Versionen ist der Verteilte Verknüpfungstracking-Serverdienst nicht mehr in Windows enthalten. Sie können die Objekte also sicher aus Active Directory entfernen.
Nachverfolgung verteilter Verknüpfungen und Active Directory
Verteilte Linkverfolgungsobjekte werden zwischen allen Domänencontrollern in der Domäne, die das Computerkonto hostet, und allen globalen Katalogservern in der Gesamtstruktur repliziert. Der Serverdienst für verteilte Verknüpfungen erstellt Objekte im folgenden besonderen Namenspfad:
CN=FileLinks,CN=System,DC= Domänenname-Container von Active Directory
Verteilte Linkverfolgungsobjekte sind in den folgenden beiden Tabellen unter dem Ordner "CN=FileLinks,CN=System" vorhanden:
- CN=ObjectMoveTable,CN=FileLinks,CN=System,DC= Domänenname:
Dieses Objekt speichert Informationen zu verknüpften Dateien, die in die Domäne verschoben wurden.
CN=VolumeTable,CN=FileLinks,CN=System,DC= Domänenname:
Dieses Objekt speichert Informationen zu jedem NTFS-Volume in der Domäne.
Verteilte Linknachverfolgungsobjekte verbrauchen nur wenig Platz, aber sie können große Mengen Speicherplatz in Active Directory verbrauchen, wenn sie sich im Laufe der Zeit ansammeln dürfen.
Wenn Sie die Nachverfolgung verteilter Links deaktivieren und die Objekte für die Verteilte Linkverfolgung aus Active Directory löschen, kann das folgende Verhalten auftreten:
- Die Größe der Active Directory-Datenbank kann reduziert werden (dieses Verhalten tritt auf, nachdem die Objekte in den Tombstone-Zustand versetzt und quasi-synchron aufgeräumt wurden, und nachdem Sie eine Offline-Defragmentierung durchgeführt haben).
- Der Replikationsverkehr zwischen Domänencontrollern kann reduziert werden.
Dienst "Verteilter Verknüpfungsverfolgungsserver" standardmäßig auf Windows Server-basierten Domänencontrollern
In Windows 2000, Windows XP und Windows Server 2003 wird der Startwert für den Dienst für verteiltes Link-Tracking auf "Automatisch" festgelegt. Auf Windows 2000-basierten Servern wird der Distributed Link Tracking Server-Dienst standardmäßig manuell gestartet. Wenn Sie jedoch Dcpromo.exe verwenden, um einen Server zu einer Domäne heraufzustufen, wird der Dienst für verteilte Verknüpfungsverfolgung so eingestellt, dass er automatisch startet.
Für Windows Server 2003-basierte Server ist der Dienst für verteilte Verknüpfungsverfolgung standardmäßig deaktiviert. Wenn Sie Dcpromo.exe verwenden, um einen Server zu einer Domäne zu befördern, ist der Dienst für verteiltes Link-Tracking nicht so konfiguriert, dass er automatisch startet. Wenn ein Windows 2000-basierter Domänencontroller auf Windows Server 2003 aktualisiert wird, wird der Dienst für verteiltes Link-Tracking während des Upgrades ebenfalls deaktiviert. Wenn Sie Administrator sind und den Dienst für verteiltes Linktracking verwenden möchten, müssen Sie entweder eine Gruppenrichtlinie verwenden oder den Dienst manuell so einstellen, dass er automatisch startet. Darüber hinaus versucht der Clientdienst für verteilte Verknüpfungen auf Computern, auf denen Windows Server 2003 oder Windows XP SP1 ausgeführt wird, nicht standardmäßig den Verteilten Linkverfolgungsserver-Dienst zu verwenden. Wenn Sie diese Computer so konfigurieren möchten, dass sie den Dienst des Verteilten Linkverfolgungsservers nutzen können, aktivieren Sie die Richtlinieneinstellung "Verteilte Linkverfolgungs-Clients dürfen Domänenressourcen verwenden". Öffnen Sie dazu den Knoten "Computerkonfiguration/Administrative Vorlagen/System" in der Gruppenrichtlinie.
Microsoft-Empfehlungen für die Nachverfolgung verteilter Links auf Windows 2000-basierten Servern
Microsoft empfiehlt, die folgenden Einstellungen mit verteilter Linkverfolgung auf Windows 2000-basierten Servern zu verwenden:
Deaktivieren Sie den Distributed Link Tracking Server-Dienst auf allen Domänencontrollern (dies ist die Standardkonfiguration auf allen Windows Server 2003-basierten Servern).
Aufgrund des Replikationsaufwands und des Speicherplatzes, den FileLinks-Tabellen in Active Directory nutzen, empfiehlt Microsoft, den Dienst für verteilte Verknüpfungsverfolgung auf Active Directory-Domänencontrollern zu deaktivieren. Verwenden Sie eine der folgenden Methoden, um den Dienst zu beenden:
Doppelklicken Sie im Dienste-Snap-In (Services.msc oder compmgmt.msc) auf den Verteilter Link-Tracking-Server-Dienst, und klicken Sie dann im Feld "Starttyp" auf Deaktiviert.
Definieren Sie den Startwert im Knoten "Computerkonfiguration/Windows-Einstellungen/Systemdienste" der Gruppenrichtlinie.
Definieren Sie die Richtlinieneinstellungen für eine Organisationseinheit, die alle Windows 2000-Domänencontroller hosten soll.
Starten Sie die Domänencontroller neu, nachdem die Richtlinie repliziert wurde, um sicherzustellen, dass die Richtlinie angewendet wird. Wenn Sie die Domänencontroller nicht neu starten, müssen Sie den Dienst auf jedem Domänencontroller manuell beenden.
Löschen von Verteilten Linkverfolgungsobjekten von Active Directory-Domänencontrollern.
Weitere Informationen zum Löschen von Objekten der Verteilten Linkverfolgung finden Sie im Abschnitt "So löschen Sie ein verteiltes Linkverfolgungsobjekt" in diesem Artikel. Es wird empfohlen, Objekte zu löschen, nachdem Sie den Dienst für verteiltes Link-Tracking-Server deaktiviert haben.
Notiz
Die Größe der Verzeichnisinformationsstruktur (Directory Information Tree, DIT) auf Domänencontrollern wird erst verringert, wenn die folgenden Aktionen abgeschlossen sind.
Objekte werden aus dem Verzeichnisdienst gelöscht.
Notiz
Gelöschte Objekte werden im Container "Gelöschte Objekte" gespeichert, bis die Lebensdauer des Tombstones abläuft. Der Standardwert für die Lebensdauer eines Grabsteins beträgt 60 Tage. Der Mindestwert beträgt zwei Tage. Der Wert beträgt voreingestellt 180 Tage für neue Wälder, die zusammen mit Windows Server 2003 Service Pack 1 oder einer neueren Version von Windows Server 2003 installiert werden.
Es sei denn, Sie haben eine starke Active Directory-Replikationsüberwachung, es wird empfohlen, den 180-Tage-Wert zu verwenden. Reduzieren Sie diesen Wert nicht, um DIT-Größenprobleme zu behandeln. Wenn Sie Probleme mit der Datenbankgröße haben, wenden Sie sich an den Microsoft-Kundendienst.
Die Speicherbereinigung ist abgeschlossen.
Sie verwenden Ntdsutil.exe, um die Datei "Ntds.dit" im Dsrepair-Modus zu defragmentieren.
So löschen Sie Verteilte Verknüpfungsverfolgungsobjekte
Es ist nicht wichtig, dass Sie die Distributed Link Tracking-Objekte manuell löschen, nachdem Sie den Serverdienst für verteilte Verknüpfungen beendet haben, es sei denn, Sie müssen den Speicherplatz, der von diesen Objekten genutzt wird, so schnell wie möglich freigeben. Verteilte Linkverfolgungsclients fordern den Server für verteilte Linknachverfolgung auf, Links alle 30 Tage zu aktualisieren. Der Dienst Distributed Link Tracking Server säubert Objekte, die seit 90 Tagen nicht aktualisiert wurden.
Wenn Sie dltpurge.vbs VBScript ausführen, werden alle Active Directory-Objekte, die vom Distributed Link Tracking Server-Dienst verwendet werden, aus der Domäne gelöscht, in der das Skript ausgeführt wird. Sie müssen das Skript auf einem Domänencontroller für jede Domäne in einer Gesamtstruktur ausführen. Um Dltpurge.vbs auszuführen:
Rufen Sie das Skript "Dltpurge.vbs" vom Microsoft-Produktsupport ab.
Beenden Sie den Distributed Link Tracking Server-Dienst auf allen Domänencontrollern in der Domäne, die von Dltpurge.vbs angesprochen wird.
Verwenden Sie Administratorrechte, um sich an der Konsole eines Domänencontrollers oder eines Mitgliedscomputers in der Domäne anzumelden, die von Dltpurge.vbs angegriffen wird.
Verwenden Sie die folgende Syntax, um Dltpurge.vbs über eine Befehlszeile auszuführen:
cscript dltpurge.vbs -s myserver -d dc=mydomain,dc=mycompany,dc=com
In dieser Befehlszeile:
- -s ist der DNS-Hostname des Domänencontrollers, auf dem Sie Verteilte Linkverfolgungsobjekte löschen möchten.
- -d ist der Distinguished Name Path der Domäne, innerhalb derer Sie Verteilte Linkverfolgungsobjekte löschen möchten.
Führen Sie eine Offline-Defragmentierung der Datei Ntds.dit durch, nachdem die Objekte als Tombstone markiert und durch die Garbage Collection entfernt wurden. Wenn Sie weitere Informationen zum Garbage Collection-Prozess erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
198793 Der Garbage Collection-Prozess der Active Directory-Datenbank
Beispiel für eine Kundenerfahrung
Das szenario, das in diesem Abschnitt beschrieben wird, veranschaulicht einige Probleme, die Sie berücksichtigen sollten, wenn Sie eine große Anzahl von Distributed Link Tracking-Objekten in einer großen Produktionsdomäne löschen.
Trey Research, ein fiktiver Fortune 500-Kunde mit über 40.000 Mitarbeitern weltweit, stellt eine einzelne Active Directory-Gesamtstruktur bereit, die aus einer leeren Stammdomäne mit untergeordneten Domänen besteht, die große geografische Regionen der Welt zuordnen (Nordamerika, Asien, Europa usw.). Die größte Domäne in der Struktur enthält etwa 35.000 Benutzerkonten und dieselbe Anzahl an Computerkonten.
Die Ntds.dit-Dateien wurden auf 18-Gigabyte (GB) RAID-Arrays platziert. Seit der erstbereitstellung von Windows 2000 sind die globalen Katalogdateien auf 17 GB gewachsen.
Trey Research möchte Windows Server 2003 innerhalb der nächsten 10 Tage bereitstellen, benötigt jedoch mindestens 1,5 GB verfügbaren Speicherplatz auf der Datenbankpartition, bevor sie das Upgrade initiieren. Sie benötigen so viel Speicherplatz, da Adprep.exe dafür bekannt ist, je nach zuvor installierten Hotfixes und Service Packs drei bis fünf geerbte ACEs hinzuzufügen. Die folgenden Bedingungen tragen zur großen globalen Kataloggröße oder zum Mangel an Speicherplatz bei:
Bedingung 1: Trey Research war ein Early Adopter von Windows 2000 und die größten Laufwerke, die sie von ihrem bevorzugten Hardwareanbieter erhalten haben, waren 9 GB oder 18 GB, als sie in einem Raid-Array konfiguriert wurden. Aktuelle Laufwerke haben die doppelte Kapazität zum halben Preis.
Bedingung 2: DNS-Scavenging war in Active Directory-integrierten DNS-Zonen, die an jede Domäne im Forest delegiert wurden, nicht aktiviert.
Bedingung 3: Domänenbenutzer konnten Computerkonten in der Domäne erstellen. Administratoren haben keinen wiederkehrenden Prozess zum Identifizieren und Löschen verwaister Computerkonten.
Bedingung 4: Im Laufe der Zeit wurden Sicherheitsdeskriptoren von Administratoren, Service Packs und Hotfixes für NC-Köpfe (Root Naming Context, cn=schema, cn=configuration, cn= domain) und andere Container definiert, die Tausende von Objekten in Active Directory hosten. Darüber hinaus wurde die Überwachung auf denselben Partitionen aktiviert. Wenn Sie Berechtigungen festlegen und die Überwachung für Objekte in Active Directory aktivieren, nimmt die Größe der Datenbank zu. Das Tool, das Windows 2000-Gesamtstrukturen und Domänen für Windows Server 2003-basierte Domänencontroller (Adprep) vorbereitet, fügt auch geerbte ACEs hinzu; daher musste Trey Research Speicherplatz auf dem Datenträgerlaufwerk freigeben, bevor sie ein Upgrade der Domäne durchführen.
Bedingung 5: Trey Research hat nicht regelmäßig Offline-Defragmentierungsverfahren von Ntds.dit-Dateien im Dsrepair-Modus durchgeführt.
Bedingung 6: Bei der Überprüfung des CN=FileLinks,CN=System,DC=Domänenname-Containers in der größten Domäne wurden über 700.000 Distributed Link Tracking-Objekte offengelegt. Der Sicherheitsdeskriptor für jedes Distributed Link Tracking-Objekt betrug ca. 2 Kb (KBs). Jede dieser Bedingungen wurde für ihren Beitrag zur 17-GB DIT-Datei ausgewertet:
Bedingung 1: Trey Research hat beschlossen, wegen der Kosten und der Zeit, die dies dauern würde, keine neuen Laufwerke bereitzustellen. Außerdem benötigten sie den Speicherplatz nur vorübergehend, da sie erwartet haben, dass die Active Directory-Datenbank nach dem Upgrade auf Windows Server 2003 verkleinert wurde und der SIS-Prozess (Single Instance Store, SIS) abgeschlossen wurde (SIS implementiert einen effizienteren Speicher von Berechtigungen in Active Directory-Datenbanken).
Bedingungen 2 und 3: Trey Research entschied, dass diese Bedingungen die bewährten Methoden waren; Aber selbst wenn Trey Research sie implementierte, würden sie nicht die erforderlichen Ergebnisse erzielen. Sie haben beschlossen, die DNS-Bereinigung zu aktivieren, weil sie leicht umzusetzen ist.
Bedingung 4: Trey Research erkannte, dass, wenn sie Sicherheitsdeskriptoren und Systemzugriffssteuerungslisten (SACLs) neu definierten, die Ergebnisse erzielen würden, die sie suchen, aber sie beschlossen, dass dieses Verfahren zeitaufwendig wäre, bis sie die Größenreduzierung, den Replikationsaufwand und die am wichtigsten, Programm-/Verwaltungskompatibilität im Laborszenario, das die Produktionsumgebung widerspiegelt, gründlich testen konnte.
Da Trey Research Windows 2000 SP2 und einige Hotfixes bereitgestellt hat, erwarten sie, dass die inkrementellen geerbten Aces, die von Adprep (zu Objekten in der Domäne NC) hinzugefügt wurden, so klein wie 300 MB (MBs) sein könnten. Sie könnten dieses Verhalten in einer Laborumgebung überprüfen, die zum Testen von Upgrades der Produktionsstruktur verwendet wird.
Bedingung 5: Trey Research stellte fest, dass sie, wenn sie ein Offline-Defragmentierungsverfahren durchführen, möglicherweise keinen " ungenutzten Speicherplatz" in der Datei "Ntds.dit" zurückgewinnen können. Tatsächlich bemerkten Trey Research-Administratoren eine Zunahme der Datenbankgröße unmittelbar nach Abschluss des Offline-Defragmentierungsverfahrens. Dieses Verhalten ist aufgrund einer Ineffizienz im Windows 2000-Datenbankmodul aufgetreten; Dieses Modul wird in Windows Server 2003 verbessert.
Die Bedingung 6: Trey Research stimmte zu, dass die naheliegende Vorgehensweise darin läge, eine einfache Massenlöschung aller Distributed Link Tracking-Objekte innerhalb des Containers CN=FileLinks,CN=System,DC=Domain Name auf einem Domänencontroller in jeder Domäne der Gesamtstruktur durchzuführen. Sie haben jedoch erkannt, dass bei diesem Schritt kein zusätzlicher Speicherplatz freigegeben würde, bis die Objekte als gelöscht markiert und die Garbage Collection durchgeführt wurde, und bis sie eine Offline-Defragmentierung auf jedem Domänencontroller in dieser Domäne abgeschlossen haben. Während der Wert der Tombstone-Lebensdauer auf so geringe Werte wie zwei Tage festgelegt werden kann, waren mehrere Domänencontroller in der Trey Research-Gesamtstruktur offline, weil sie auf Hardware- und Software-Updates gewartet haben. Wenn Objekte vor der Durchführung der End-to-End-Replikation als gelöscht markiert werden, können gelöschte Objekte wiederhergestellt oder inkonsistente Daten zwischen globalen Katalogservern in der Gesamtstruktur gemeldet werden. Um sofort Hilfe zu bieten, führte Trey Research das folgende Verfahren durch:
- Sie haben den Standardsicherheitsdeskriptor für Objekte der Schemaklasse "Distributed Link Tracking" entfernt und durch einen einzelnen Sicherheitsprinzipal (Benutzerkonto) ersetzt.
- Sie haben ein VBScript-Programm geschrieben, das alle vorhandenen Sicherheitsdeskriptoren entfernt und sie dann durch eine explizite ace für einen einzelnen Sicherheitsprinzipal ersetzt.
- Sie haben verteilte Linkverfolgungsobjekte in Schritten von 10.000 Einheiten mit einer Verzögerung von drei Stunden zwischen den einzelnen Löschvorgängen gelöscht.
- Sie haben eine Offline-Defragmentierungsprozedur für jeden Domänencontroller in der Domäne ausgeführt, nachdem alle Distributed Link Tracking-Objekte gelöscht wurden. Wenn Trey Research den Deskriptor entfernt und die Defragmentierungsprozedur ausgeführt hat, hat die Datenbank ungefähr 1,5 GB Speicherplatz auf allen Domänencontrollern in der Domäne wiederhergestellt. Dieser Speicherplatz reichte aus, um das Adprep-Tool bequem auszuführen und alle Windows 2000-basierten Domänencontroller und globalen Kataloge auf Windows Server 2003 zu aktualisieren.
Nachdem Trey Research das Betriebssystem auf Windows Server 2003 aktualisiert hat, wurde mehr Speicherplatz freigegeben, als das Feature für den einzelnen Instanzspeicher in Windows Server 2003 die Datenbankgröße auf etwa 8 GB reduziert hat (Sie müssen ein Offlinedefragmentierungsverfahren ausführen, um diese Ergebnisse zu erhalten). Mehr Speicherplatz wurde wiederhergestellt, nachdem das TSL-Intervall abgelaufen war, die verteilten Linkverfolgungsobjekte gesammelt wurden und eine Offline-Defragmentierung durchgeführt wurde.
Trey Research hat einen neuen replizierten Windows 2000-basierten Domänencontroller in die Domäne heraufgestuft, und das Computerkonto wurde in einer anderen Organisationseinheit platziert als die normalerweise verwendet wird. In zwei Tagen waren rund 8.000 Distributed Link Tracking-Objekte auf dem Windows 2000-basierten Domänencontroller vorhanden. Trey Research hat entweder die Nachverfolgung verteilter Links beendet oder eine Richtlinie zum Beenden des Diensts erstellt und dann die Richtlinie mit Organisationseinheiten verknüpft, die Windows 2000-basierte Domänencontroller hosten. Schließlich verwendete Trey Research Dltpurge.vbs, um die verbleibenden Distributed Link Tracking-Objekte zum Löschen zu markieren.
Anatomie des Löschvorgangs des DLT-Objekts
DLT-Objekte selbst enthalten nur wenige Attribute und verwenden wenig Platz in Active Directory. Wenn ein Objekt zum Löschen markiert ist (tombstoned), werden alle unnötigen Attribute entfernt, mit Ausnahme derjenigen, die erforderlich sind, um das Objekt nachzuverfolgen, bis es aus Active Directory gelöscht wird.
Bei Linknachverfolgungsobjekten führt das Markieren des Objekts für das Löschen nur dazu, dass zwei Attribute entfernt werden: dscorepropagationdata und objectcategory. Das Löschen der beiden Attribute führt zu einer anfänglichen Einsparungen von 34 Byte. Wenn jedoch das Verknüpfungsverfolgungsobjekt zum Löschen markiert wird, wird es auch aktualisiert, indem ein IS_DELETED-Attribut (4 Byte) hinzugefügt und die Attribute RDN sowie "allgemeiner Name" verändert werden, was dazu führt, dass jedes dieser Attribute um etwa 80 Byte wächst. Darüber hinaus wächst das Attribut "Replikationsmetadaten" auch um ca. 50 Byte, um die aktualisierungen widerzuspiegeln, die für dieses Objekt ausgeführt wurden. Durch das Markieren eines Linkverfolgungsobjekts zum Löschen wird das Objekt schließlich um etwa 200 Byte größer. Die NTDS.DIT zeigt erst dann eine Verringerung der Größe an, wenn die gelöschten Objekte zu Tombstones geworden sind, eine Müllabfuhr durchgeführt wurde und eine Offline-Defragmentierung erfolgt ist.
Notiz
Wenn der Dienst deaktiviert ist, wie in diesem Artikel empfohlen, tritt die automatische Bereinigung nicht auf.
Textversion von Dltpurge.vbs
So verwenden Sie dieses Skript:
- Kopieren Sie den gesamten Text zwischen dem <Tag "Kopie hier> starten" und dem <Tag "Kopie hier beenden"> in diesem Artikel, und fügen Sie dann den Text in eine ASCII-Text-Editor-Datei (z. B. eine Microsoft Editor-Datei) ein.
- Speichern Sie die Datei als "Dltpurge.vbs". 3 Führen Sie das verfahren aus, das unter "Löschen von Objekten zur Nachverfolgung von verteilten Links" beschrieben wird
<Start Copy Here>
'==============================================================================
'==============================================================================
'
' Copyright (C) 2001 by Microsoft Corporation. All rights reserved.
'
' This script deletes all Active Directory objects used by the
' Distributed Link Tracking Server service.
'
' It is assumed that the DLT Server service has been disabled,
' and you wish to recover the DIT space these objects occupy.
'
' Usage: cscript DltPurge.vbs <options>
' Options: -s ServerName
' -d distinguishedname dc=mydomain,dc=mycompany,dc=com
' -b BatchSize BatchDelayMinutes
' -t (optional test mode)
'
' The objects are deleted in batches - BatchSize objects are deleted,
' then there is a BatchDelayMinutes delay before the next batch.
'
'==============================================================================
'==============================================================================
Option Explicit
'
' Globals, also local to main.
'
Dim oProvider
Dim oTarget
Dim sServer
Dim sDomain
Dim bTest
Dim BatchSize
Dim BatchDelayMinutes
'
' Set defaults
'
BatchSize = 1000
BatchDelayMinutes = 15
bTest = False
'==============================================================================
'
' ProcessArgs
'
' Parse the command-line arguments. Results are set in global variables
' (oProvider, oTarget, sServer, sDomain, BatchSize, and BatchDelayMinutes).
'
'==============================================================================
public function ProcessArgs
Dim iCount
Dim oArgs
on error resume next
'
' Get the command-line arguments
'
Set oArgs = WScript.Arguments
if oArgs.Count > 0 then
'
' We have command-line arguments. Loop through them.
'
iCount = 0
ProcessArgs = 0
do while iCount < oArgs.Count
select case oArgs.Item(iCount)
'
' Server name argument
'
case "-s"
if( iCount + 1 >= oArgs.Count ) then
Syntax
ProcessArgs = -1
exit do
end if
sServer = oArgs.Item(iCount+1)
if Len(sServer) > 0 then sServer = sServer & "/"
iCount = iCount + 2
'
' Enable testing option
'
case "-t"
iCount = iCount + 1
bTest = True
'
' Domain name option
'
case "-d"
if( iCount + 1 >= oArgs.Count ) then
Syntax
ProcessArgs = -1
Exit Do
end if
sDomain = oArgs.Item(iCount+1)
iCount = iCount + 2
'
' Batching option (batch size, batch delay)
'
case "-b"
if( iCount + 2 >= oArgs.Count ) then
Syntax
ProcessArgs = -1
exit do
end if
Err.Clear
BatchSize = CInt( oArgs.Item(iCount+1) )
BatchDelayMinutes = CInt( oArgs.Item(iCount+2) )
if( Err.Number <> 0 ) then
wscript.echo "Invalid value for -b argument" & vbCrLf
Syntax
ProcessArgs = -1
exit do
end if
iCount = iCount + 3
'
' Help option
'
case "-?"
Syntax
ProcessArgs = -1
exit do
'
' Invalid argument
'
case else
' Display the syntax and return an error
wscript.echo "Unknown argument: " & oArgs.Item(iCount) & vbCrLf
Syntax
ProcessArgs = -1
Exit Do
end select
loop
else
'
' There were no command-line arguments, display the syntax
' and return an error.
'
Syntax
ProcessArgs = -1
end if
Set oArgs = Nothing
end function ' ProcessArgs
'==============================================================================
'
' Syntax
'
' Show the command-line syntax
'
'==============================================================================
public function Syntax
wscript.echo vbCrLf & _
"Purpose: Delete Active Directory objects from Distributed Link Tracking" & vbCrLf & _
" Server service (Assumes that DLT Server has been disabled" & vbCrLf & _
" on all DCs)" & vbCrLf & _
vbCrLf & _
"Usage: " & wscript.scriptname & " <arguments>" & vbCrLf & _
vbCrLf & _
"Arguments: -s Server" & vbCrLf & _
" -d FullyQualifiedDomain" & vbCrLf & _
" -b BatchSize BatchDelayMinutes (default to 1000 and 15)" & vbCrLf & _
" -t (optional test mode, nothing is deleted)" & vbCrLf & _
vbCrLf & _
"Note: Objects are deleted in batches, with a delay between each" & vbCrLf & _
" batch. The size of the batch defaults to 1000 objects, and" & vbCrLf & _
" the length of the delay defaults to 15 minutes. But these" & vbCrLf & _
" values can be overridden using the -b option." & vbCrLf & _
vbCrLf & _
"Example: " & wscript.scriptname & " -s myserver -d distinguishedname dc=mydomain,dc=mycompany,dc=com "
end function ' Syntax
'==============================================================================
'
' PurgeContainer
'
' Delete all objects of the specified class in the specified container.
' This subroutine is called once for the volume table and once for
' the object move table.
'
'==============================================================================
sub PurgeContainer(ByRef oParent, ByVal strClass)
dim oChild
dim iBatch
dim iTotal
On Error Resume Next
iTotal = 0
iBatch = 0
' Loop through the children of this container
For Each oChild in oParent
'
' Is this a DLT object?
'
if oChild.Class = strClass Then
'
' Yes, this is a DLT object, it may be deleted
'
iTotal = iTotal + 1
iBatch = iBatch + 1
'
' Delete the object
'
if bTest then
wscript.echo "Object that would be deleted: " & oChild.adspath
else
oParent.Delete oChild.Class, oChild.Name
end if
'
' If this is the end of a batch, delay to let replication
' catch up.
'
if iBatch = BatchSize then
iBatch = 0
wscript.stdout.writeline "" ' ignored by wscript
wscript.echo "Deleted " & BatchSize & " objects"
wscript.echo "Pausing to allow processing (will restart at " & DateAdd("n", BatchDelayMinutes, Time) & ")"
wscript.sleep BatchDelayMinutes * 60 * 1000
wscript.echo "Continuing ..."
end if
else
' oChild.Class didn't match strClass
wscript.echo "Ignoring unexpected class: " & oChild.Class
end if
oChild = NULL
Next
wscript.echo "Deleted a total of " & iTotal & " objects"
end sub ' PurgeContainer
'==============================================================================
'
' Main
'
'==============================================================================
if (ProcessArgs=-1) then wscript.quit
on error resume next
'
' Explain what's about to happen
'
wscript.stdout.writeline "" ' ignored by wscript
wscript.echo "This script will purge all objects from the Active Directory" & vbCrLf & _
"used by the Distributed Link Tracking Server service (trksvr)." & vbCrLf & _
"It is assumed that this service has already been disabled on" & vbCrLf & _
"all DCs in the domain."
'
' When running in cscript, pause to give an opportunity to break out
' (These 3 lines are for cscript and ignored by wscript.)
'
wscript.stdout.writeline ""
wscript.stdout.writeline "Press Enter to continue ..."
wscript.stdin.readline
'
' Get an ADSI object
'
Set oProvider = GetObject("LDAP:")
'
' Purge the System/FileLinks/ObjectMoveTable
'
wscript.stdout.writeline "" ' ignored by wscript
wscript.echo "Purging ObjectMoveTable"
Set oTarget = oProvider.OpenDSObject( "LDAP://" & sServer & "cn=ObjectMoveTable,CN=FileLinks,CN=System," & sDomain ,_
vbNullString, vbNullString, _
1) ' ADS_SECURE_AUTHENTICATION
call PurgeContainer( oTarget, "linkTrackOMTEntry" )
oTarget = NULL
'
' Purge the System/FileLinks/VolumeTable
'
wscript.stdout.writeline "" ' ignored by wscript
wscript.echo "Purging VolumeTable"
Set oTarget = oProvider.OpenDSObject("LDAP://" & sServer & "cn=VolumeTable,CN=FileLinks,CN=System," & sDomain ,_
vbNullString, vbNullString, _
1) ' ADS_SECURE_AUTHENTICATION
call PurgeContainer( oTarget, "linkTrackVolEntry" )
oTarget = NULL
oProvider = NULL
<END Copy Here>