Отслеживание распределенных ссылок на контроллерах домена под управлением Windows

В этой статье описывается, как использовать службы отслеживания распределенных ссылок в Windows для отслеживания создания и перемещения связанных файлов по томам и серверам в формате NTFS.

Применяется к: Windows Server 2012 R2
Исходный номер базы знаний: 312403

Для отслеживания ссылок на файлы в секциях в формате NTFS можно использовать службу сервера отслеживания распределенных каналов и клиентную службу отслеживания распределенных каналов. Отслеживание распределенных ссылок отслеживает ссылки в сценариях, где ссылка создается на файл на томе NTFS, например ярлыки оболочки и ссылки OLE. Если этот файл переименовывается, перемещается в другой том на том того же компьютера, перемещается на другой компьютер или перемещается в других аналогичных сценариях, Windows использует функцию отслеживания распределенных ссылок для поиска файла. При доступе к перемещенной ссылке функция отслеживания распределенных ссылок находит ссылку; Вы не знаете, что файл перемещен или что для поиска перемещенного файла используется отслеживание распределенных ссылок.

Отслеживание распределенных ссылок состоит из клиентской службы и службы сервера. Служба сервера отслеживания распределенных ссылок работает исключительно на контроллерах домена под управлением Windows Server. Он хранит сведения в Active Directory, а также предоставляет службы, помогающие службе клиента отслеживания распределенных ссылок. Клиентская служба отслеживания распределенных ссылок работает на всех компьютерах под управлением Windows 2000 и Microsoft Windows XP, включая компьютеры в средах рабочей группы или не в рабочей группе. Он обеспечивает исключительное взаимодействие с серверами отслеживания распределенных ссылок.

Клиенты распределенного отслеживания каналов иногда предоставляют службе сервера отслеживания распределенных каналов сведения о файловой связи, которые служба сервера отслеживания распределенных каналов хранит в Active Directory. Клиенты отслеживания распределенных ссылок также могут запрашивать эту информацию в службе сервера отслеживания распределенных ссылок, если не удается разрешить ярлык оболочки или ссылку OLE. Клиенты распределенного отслеживания каналов запрашивают на сервере отслеживания распределенных каналов обновление ссылок каждые 30 дней. Служба сервера отслеживания распределенных ссылок очищает объекты, которые не были обновлены в течение 90 дней

Когда файл, на который ссылается ссылка, перемещается в другой том (на том же компьютере или на другом компьютере), клиент отслеживания распределенных ссылок уведомляет сервер отслеживания распределенных ссылок, который создает объект linkTrackOMTEntry в Active Directory. Объект linkTrackVolEntry создается в Active Directory для каждого тома NTFS в домене.

Примечание.

В Windows Server 2008 и более новых версиях служба сервера отслеживания распределенных ссылок больше не включена в Windows. Таким образом, вы можете безопасно удалить объекты из Active Directory.

Объекты отслеживания распределенных ссылок реплицируются между всеми контроллерами домена в домене, где размещена учетная запись компьютера и все серверы глобального каталога в лесу. Служба сервера отслеживания распределенных ссылок создает объекты по следующему пути с различающимся именем:

CN=FileLinks,CN=System,DC= контейнер доменных имен Active Directory

Объекты отслеживания распределенных ссылок находятся в следующих двух таблицах в папке CN=FileLinks,CN=System:

  • CN=ObjectMoveTable,CN=FileLinks,CN=System,DC= доменное имя:

Этот объект хранит сведения о связанных файлах, которые были перемещены в домен.

  • CN=VolumeTable,CN=FileLinks,CN=System,DC= доменное имя:

    Этот объект хранит сведения о каждом томе NTFS в домене.

Объекты отслеживания распределенных ссылок занимают мало места по отдельности, но они могут потреблять большой объем пространства в Active Directory, если им разрешено накапливаться с течением времени.

Если отключить отслеживание распределенных ссылок и удалить объекты отслеживания распределенных ссылок из Active Directory, может произойти следующее поведение:

  • Размер базы данных Active Directory может быть уменьшен (такое поведение происходит после того, как объекты были загроможены и собраны мусор, а также после выполнения процедуры автономной дефрагментации).
  • Трафик репликации между контроллерами домена может быть сокращен.

В Windows 2000, Windows XP и Windows Server 2003 начальное значение для клиентской службы отслеживания распределенных ссылок имеет значение Автоматически. На серверах под управлением Windows 2000 служба сервера отслеживания распределенных ссылок запускается вручную по умолчанию. Однако если вы используете Dcpromo.exe для повышения уровня сервера до домена, служба сервера отслеживания распределенных ссылок настраивается для автоматического запуска.

Для серверов под управлением Windows Server 2003 служба сервера отслеживания распределенных ссылок отключена по умолчанию. При использовании Dcpromo.exe для повышения уровня сервера до домена служба сервера отслеживания распределенных ссылок не настраивается для автоматического запуска. При обновлении контроллера домена под управлением Windows 2000 до Windows Server 2003 служба сервера отслеживания распределенных подключений также отключается во время обновления. Если вы являетесь администратором и хотите использовать службу сервера отслеживания распределенных ссылок, необходимо либо использовать групповая политика, либо вручную настроить автоматический запуск службы. Кроме того, клиентская служба отслеживания распределенных ссылок на компьютерах под управлением Windows Server 2003 или Windows XP с пакетом обновления 1 (SP1) по умолчанию не пытается использовать службу сервера отслеживания распределенных ссылок. Если вы хотите настроить эти компьютеры для использования преимуществ службы сервера отслеживания распределенных каналов, включите параметр политики Разрешить клиентам отслеживания распределенных каналов использовать ресурсы домена. Для этого откройте узел Конфигурация компьютера,Административные шаблоны/Система в групповая политика.

Корпорация Майкрософт рекомендует использовать следующие параметры для отслеживания распределенных ссылок на серверах под управлением Windows 2000:

  1. Отключите службу сервера отслеживания распределенных ссылок на всех контроллерах домена (это конфигурация по умолчанию на всех серверах под управлением Windows Server 2003).

    Из-за дополнительных затрат на репликацию и пространства, которое таблицы FileLinks используют в Active Directory, корпорация Майкрософт рекомендует отключить службу сервера отслеживания распределенных каналов на контроллерах домена Active Directory. Чтобы остановить службу, используйте любой из следующих методов:

    • В оснастке Службы (Services.msc или compmgmt.msc) дважды щелкните службу сервера отслеживания распределенных ссылок, а затем в поле Тип запуска щелкните Отключено.

    • Определите значение запуска в узле Конфигурация компьютера,Параметры Windows/Системные службы групповой политики.

    • Определите параметры политики в подразделении, в котором размещаются все контроллеры домена Windows 2000.

    Перезапустите контроллеры домена после репликации политики, чтобы применить политику. Если не перезапустить контроллеры домена, необходимо вручную остановить службу на каждом контроллере домена.

  2. Удаление объектов отслеживания распределенных ссылок из контроллеров домена Active Directory.

    Дополнительные сведения об удалении объектов отслеживания распределенных ссылок см. в разделе "Удаление объекта отслеживания распределенных ссылок" этой статьи. Рекомендуется удалять объекты после отключения службы сервера отслеживания распределенных ссылок.

    Примечание.

    Размер дерева сведений о каталоге (DIT) на контроллерах домена не уменьшается, пока не будут выполнены следующие действия.

    1. Объекты удаляются из службы каталогов.

      Примечание.

      Удаленные объекты хранятся в контейнере Удаленные объекты до истечения времени существования надгробия. Значение по умолчанию для времени существования надгробия — 60 дней. Минимальное значение — два дня. По умолчанию значение 180 дней для новых лесов, установленных вместе с Windows Server 2003 с пакетом обновления 1 (SP1) или более поздней версии Windows Server 2003.

      Если у вас нет надежного мониторинга репликации Active Directory, рекомендуется использовать 180-дневное значение. Не уменьшайте это значение для обработки проблем с размером DIT. Если у вас возникли проблемы с размером базы данных, обратитесь в службу поддержки майкрософт.

    2. Сборка мусора выполнена до завершения.

    3. Для дефрагментации файла Ntds.dit в режиме Dsrepair используется Ntdsutil.exe.

Не важно вручную удалять объекты отслеживания распределенных ссылок после остановки службы сервера отслеживания распределенных ссылок, если вам не нужно освободить место на диске, которое потребляется этими объектами как можно быстрее. Клиенты распределенного отслеживания каналов запрашивают на сервере отслеживания распределенных каналов обновление ссылок каждые 30 дней. Служба сервера отслеживания распределенных ссылок выполняет очистку объектов, которые не были обновлены в течение 90 дней.

При запуске Dltpurge.vbs VBScript все объекты Active Directory, используемые службой сервера отслеживания распределенных ссылок, удаляются из домена, в котором выполняется скрипт. Скрипт необходимо выполнить на одном контроллере домена для каждого домена в лесу. Чтобы запустить Dltpurge.vbs, выполните приведенные далее действия.

  1. Получите скрипт Dltpurge.vbs в службе поддержки продуктов Майкрософт.

  2. Остановите службу сервера отслеживания распределенных ссылок на всех контроллерах домена в домене, на который нацелены Dltpurge.vbs.

  3. Используйте права администратора для входа в консоль контроллера домена или компьютера-члена в домене, на который нацелены Dltpurge.vbs.

  4. Используйте следующий синтаксис для запуска Dltpurge.vbs из командной строки:

    cscript dltpurge.vbs -s myserver -d dc=mydomain,dc=mycompany,dc=com  
    

    В этой командной строке:

    • -s — это DNS-имя узла контроллера домена, на котором требуется удалить объекты отслеживания распределенных ссылок.
    • -d — это различающийся путь к домену, в котором требуется удалить объекты отслеживания распределенных ссылок.
  5. Выполните автономную процедуру дефрагментации файла Ntds.dit после того, как объекты будут погромены и собраны мусор. Чтобы получить дополнительные сведения о процессе сборки мусора, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:

    198793 процесс сборки мусора базы данных Active Directory

Пример взаимодействия с клиентами

Наихудший сценарий, описанный в этом разделе, иллюстрирует некоторые проблемы, которые следует учитывать при удалении большого количества объектов отслеживания распределенных ссылок в крупном рабочем домене.

Trey Research, вымышленный клиент fortune 500 с более чем 40 000 сотрудников по всему миру, развертывает один лес Active Directory, который состоит из пустого корневого домена с дочерними доменами, которые сопоставляют основные географические регионы мира (Северная Америка, Азия, Европа и т. д.). Самый большой домен в лесу содержит около 35 000 учетных записей пользователей и столько же учетных записей компьютеров.

Файлы Ntds.dit были помещены в массивы raid объемом 18 гигабайт (ГБ). С момента первоначального развертывания Windows 2000 объем файлов глобального каталога увеличился до 17 ГБ.

Trey Research хочет развернуть Windows Server 2003 в течение ближайших 10 дней, но перед обновлением требуется по крайней мере 1,5 ГБ свободного места на диске в разделе базы данных. Им требуется много места на диске, так как Adprep.exe, как известно, добавляет от трех до пяти унаследованных тузов в зависимости от установленных ранее исправлений и пакетов обновления. Следующие условия способствуют большому размеру глобального каталога или нехватке места на диске:

  • Условие 1. Trey Research был ранним последователем Windows 2000, и наибольшие диски, которые они получили от предпочтительного поставщика оборудования, составляли 9 ГБ или 18 ГБ, когда они были настроены в массиве raid. Размер текущих дисков в два раза превышает половину стоимости.

  • Условие 2. Очистка DNS не была включена в зонах DNS, интегрированных с Active Directory, которые были делегированы каждому домену в лесу.

  • Условие 3. Пользователям домена было разрешено создавать учетные записи компьютеров в домене. У администраторов не было повторяющегося процесса идентификации и удаления потерянных учетных записей компьютеров.

  • Условие 4. С течением времени дескрипторы безопасности определялись администраторами, пакетами обновления и исправлениями в головах контекста корневого именования (NC) (cn=schema, cn=configuration, cn= domain) и других контейнерах, в которых размещены тысячи объектов в Active Directory. Кроме того, аудит был включен в одних и том же секциях. При настройке разрешений и включении аудита объектов в Active Directory размер базы данных увеличивается. Средство подготовки лесов и доменов Windows 2000 для контроллеров домена под управлением Windows Server 2003 (Adprep) также добавляет унаследованные тузов; Таким образом, Trey Research необходимо было освободить место на диске, прежде чем они обновят домен.

  • Условие 5. Trey Research не регулярно выполняла процедуры автономной дефрагментации файлов Ntds.dit в режиме Dsrepair.

  • Условие 6. При проверке контейнера CN=FileLinks,CN=System,DC= доменного имени в крупнейшем домене было обнаружено более 700 000 объектов отслеживания распределенных ссылок. Дескриптор безопасности для каждого объекта отслеживания распределенных ссылок составлял примерно 2 килобайта (КБ). Каждое из этих условий было оценено за вклад в DIT-файл размером 17 ГБ:

  • Условие 1: Trey Research решил не развертывать новые диски из-за стоимости и времени, необходимого для этого. Кроме того, они нуждались в дисковом пространстве только временно, так как они ожидали, что база данных Active Directory сократится после обновления до Windows Server 2003 и завершения процесса хранилища отдельных экземпляров (SIS реализует более эффективное хранение разрешений в базах данных Active Directory).

  • Условия 2 и 3: Trey Research решила, что эти условия были лучшими практиками; тем не менее, даже если Трей Исследовательские результаты будут реализованы, они не достигнут необходимых результатов. Они решили включить очистку DNS, так как она легко реализуется.

  • Условие 4. Исследования Trey поняли, что если они переопределяют дескрипторы безопасности и списки управления доступом системы (SACLs), они достигнут нужных результатов, но они решили, что эта процедура займет много времени, пока они не смогут тщательно протестировать уменьшение размера, затраты на репликацию и, самое главное, совместимость программы и администрирования в сценарии лаборатории, который отражает рабочую среду.

    Так как Компания Trey Research развернула Windows 2000 с пакетом обновления 2 (SP2) и несколько исправлений, они ожидали, что добавочные унаследованные туза, добавленные Adprep (к объектам в NC домена), могут иметь размер до 300 МБ. Они могут проверить это поведение в лабораторной среде, которая используется для тестирования обновлений рабочего леса.

  • Условие 5. Trey Research понял, что если они выполнили процедуру автономной дефрагментации, они не могут восстановить "пробелы" в файле Ntds.dit. Фактически, администраторы Trey Research заметили увеличение размера базы данных сразу после завершения процедуры автономной дефрагментации. Это произошло из-за неэффективности ядра СУБД Windows 2000; эта подсистема улучшена в Windows Server 2003.

  • Условие 6. Trey Research согласилась с тем, что очевидным вариантом действий будет простое массовое удаление всех объектов отслеживания распределенных ссылок из контейнера CN=FileLinks,CN=System,DC= доменного имени на контроллере домена в каждом домене в лесу. Однако они поняли, что в этом случае дополнительное дисковое пространство не будет освобождено до тех пор, пока объекты не будут загроможены и не будут собраны мусор, а также до завершения процедуры автономной дефрагментации на каждом контроллере домена в этом домене. Хотя значение времени существования надгробия может быть установлено как минимум два дня, несколько контроллеров домена в лесу Trey Research находились в автономном режиме, ожидая обновлений оборудования и программного обеспечения. Если объекты запечатываются до выполнения сквозной репликации, удаленные объекты могут быть повторно анимированы или несогласованные данные могут быть зарегистрированы на серверах глобального каталога в лесу. Чтобы обеспечить немедленное облегчение, Trey Research выполнил следующую процедуру:

  1. Они удалили дескриптор безопасности по умолчанию для объектов класса схемы отслеживания распределенных ссылок и заменили его одним субъектом безопасности (учетной записью пользователя).
  2. Они написали программу VBScript, которая удалила все существующие дескрипторы безопасности, а затем заменила их явным тузом для одного субъекта безопасности.
  3. Они удалили объекты отслеживания распределенных ссылок с шагом в 10 000 единиц с трехчасовой задержкой между удалением каждого объекта.
  4. Они выполнили процедуру автономной дефрагментации на каждом контроллере домена в домене после удаления всех объектов отслеживания распределенных ссылок. Когда Trey Research удалил дескриптор и выполнил процедуру дефрагментации, база данных восстановила около 1,5 ГБ дискового пространства на всех контроллерах домена в домене. Этого объема было достаточно для удобного запуска средства Adprep и обновления всех контроллеров домена и глобальных каталогов под управлением Windows 2000 до Windows Server 2003.

После обновления операционной системы trey Research до Windows Server 2003 было освобождено больше места на диске, когда функция хранилища одного экземпляра в Windows Server 2003 сократила размер базы данных до 8 ГБ (для получения этих результатов необходимо выполнить автономную дефрагментацию). После истечения интервала TSL было восстановлено больше места, объекты отслеживания распределенных ссылок были собраны мусором, и они выполнили процедуру автономной дефрагментации.

Trey Research способствовала созданию нового реплика контроллера домена на основе Windows 2000 в домене и поместила учетную запись компьютера в другое подразделение, чем обычно. За два дня на контроллере домена под управлением Windows 2000 присутствовало около 8000 объектов отслеживания распределенных ссылок. Trey Research остановил отслеживание распределенных ссылок или создал политику для остановки службы, а затем связал политику с подразделениями, в которых размещены контроллеры домена на основе Windows 2000. Наконец, Trey Research использовал Dltpurge.vbs, чтобы пометить оставшиеся объекты отслеживания распределенных ссылок для удаления.

Структура удаления объектов DLT

Сами объекты DLT содержат мало атрибутов и используют мало места в Active Directory. Если объект помечается для удаления (надгробие), все ненужные атрибуты удаляются, за исключением тех, которые необходимы для отслеживания объекта до его очистки из Active Directory.

В случае объектов отслеживания ссылок маркировка объекта для удаления составляет только два атрибута: dscorepropagationdata и objectcategory. Удаление двух атрибутов приводит к первоначальной экономии в 34 байта. Однако процесс маркировки объекта отслеживания ссылок для удаления также обновляет объект путем добавления атрибута IS_DELETED (4 байта) и путем изменения атрибутов RDN и "общего имени", в результате чего каждый из этих атрибутов увеличивается примерно на 80 байт. Кроме того, атрибут "метаданные репликации" также увеличивается примерно на 50 байт в соответствии с обновлениями, выполненными для этого объекта. Таким образом, помечая объект отслеживания ссылок для удаления, он будет расти примерно на 200 байт. The NTDS. DIT не будет демонстрировать уменьшение размера до тех пор, пока удаленные объекты не будут загромощены, не будут собраны мусор и не будет выполнена автономная дефрагментация.

Примечание.

Если служба отключена, как рекомендуется в этой статье, автоматическое очистка не выполняется.

Текстовая версия Dltpurge.vbs

Чтобы использовать этот скрипт, выполните следующие действия:

  1. Скопируйте весь текст между <тегами Start Copy Here> и <End Copy Here> в этой статье, а затем вставьте текст в файл текстового редактора ASCII (например, в файл Microsoft Notepad).
  2. Сохраните файл как "Dltpurge.vbs". 3 Выполните процедуру, описанную в разделе Удаление объектов отслеживания распределенных ссылок
<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>