Windows tabanlı etki alanı denetleyicilerinde Dağıtılmış Bağlantı İzleme

Bu makalede, bağlı dosyaların NTFS biçimli birimler ve sunucular arasında oluşturulmasını ve hareketini izlemek için Windows'taki Dağıtılmış Bağlantı İzleme hizmetlerini nasıl kullanabileceğiniz açıklanmaktadır.

Şunlar için geçerlidir: Windows Server 2012 R2
Özgün KB numarası: 312403

NTFS biçimli bölümlerdeki dosyalara bağlantıları izlemek için Dağıtılmış Bağlantı İzleme Sunucusu hizmetini ve Dağıtılmış Bağlantı İzleme İstemcisi hizmetini kullanabilirsiniz. Dağıtılmış Bağlantı İzleme, bağlantının ntfs birimindeki bir dosyaya yapıldığı senaryolardaki kabuk kısayolları ve OLE bağlantıları gibi bağlantıları izler. Bu dosya yeniden adlandırılırsa, aynı bilgisayardaki başka bir birime taşınırsa, başka bir bilgisayara taşınırsa veya diğer benzer senaryolarda taşınırsa, Windows dosyayı bulmak için Dağıtılmış Bağlantı İzleme'yi kullanır. Taşınan bir bağlantıya eriştiğiniz zaman Dağıtılmış Bağlantı İzleme bağlantıyı bulur; dosyanın taşındığını veya dağıtılmış bağlantı izlemenin taşınan dosyayı bulmak için kullanıldığının farkında değilsiniz.

Dağıtılmış Bağlantı İzleme, bir istemci hizmetinden ve bir sunucu hizmetinden oluşur. Dağıtılmış Bağlantı İzleme Sunucusu hizmeti yalnızca Windows Server tabanlı etki alanı denetleyicilerinde çalışır. Bilgileri Active Directory'de depolar ve Dağıtılmış Bağlantı İzleme İstemcisi hizmetine yardımcı olacak hizmetler sağlar. Dağıtılmış Bağlantı İzleme İstemcisi hizmeti, çalışma grubu ortamlarındakiler veya bir çalışma grubunda olmayanlar dahil olmak üzere tüm Windows 2000 tabanlı ve Microsoft Windows XP tabanlı bilgisayarlarda çalışır. Dağıtılmış Bağlantı İzleme sunucularıyla tek etkileşimi sağlar.

Dağıtılmış Bağlantı İzleme istemcileri zaman zaman Dağıtılmış Bağlantı İzleme Sunucusu hizmetine, Dağıtılmış Bağlantı İzleme Sunucusu hizmetinin Active Directory'de depoladığı dosya bağlantıları hakkında bilgi sağlar. Dağıtılmış Bağlantı İzleme istemcileri, kabuk kısayolu veya OLE bağlantısı çözümlenemediğinde bu bilgiler için Dağıtılmış Bağlantı İzleme Sunucusu hizmetini de sorgular. Dağıtılmış Bağlantı İzleme istemcileri, Dağıtılmış Bağlantı İzleme sunucusundan bağlantıları 30 günde bir güncelleştirmesini ister. Dağıtılmış Bağlantı İzleme Sunucusu hizmeti, 90 gün içinde güncelleştirilmemiş nesneleri atlar

Bağlantı tarafından başvurulan bir dosya başka bir birime taşındığında (aynı bilgisayarda veya farklı bir bilgisayarda), Dağıtılmış Bağlantı İzleme istemcisi, Active Directory'de bir linkTrackOMTEntry nesnesi oluşturan Dağıtılmış Bağlantı İzleme sunucusuna bildirir. Etki alanındaki her NTFS birimi için Active Directory'de bir linkTrackVolEntry nesnesi oluşturulur.

Not

Windows Server 2008 ve daha yeni sürümlerde Dağıtılmış Bağlantı İzleme Sunucusu Hizmeti artık Windows'a dahil değildir. Böylece nesneleri Active Directory'den güvenle kaldırabilirsiniz.

Dağıtılmış Bağlantı İzleme nesneleri, bilgisayar hesabını barındıran etki alanındaki tüm etki alanı denetleyicileri ve ormandaki tüm genel katalog sunucuları arasında çoğaltılır. Dağıtılmış Bağlantı İzleme Sunucusu hizmeti, aşağıdaki ayırt edici ad yolunda nesneler oluşturur:

Active Directory'nin CN=FileLinks,CN=System,DC= etki alanı adı kapsayıcısı

Dağıtılmış Bağlantı İzleme nesneleri, CN=FileLinks,CN=System klasörünün altındaki aşağıdaki iki tabloda yer alıyor:

  • CN=ObjectMoveTable,CN=FileLinks,CN=System,DC= etki alanı adı:

Bu nesne, etki alanında taşınan bağlantılı dosyalar hakkındaki bilgileri depolar.

  • CN=VolumeTable,CN=FileLinks,CN=System,DC= etki alanı adı:

    Bu nesne, etki alanındaki her NTFS birimiyle ilgili bilgileri depolar.

Dağıtılmış Bağlantı İzleme nesneleri tek tek çok az alan tüketir, ancak zaman içinde birikmesine izin verildiğinde Active Directory'de büyük miktarda alan tüketebilirler.

Dağıtılmış Bağlantı İzleme'yi devre dışı bırakır ve Dağıtılmış Bağlantı İzleme nesnelerini Active Directory'den silerseniz aşağıdaki davranış oluşabilir:

  • Active Directory veritabanı boyutu azaltılabilir (bu davranış, nesneler kaldırıldıktan ve çöp toplandıktan ve çevrimdışı birleştirme yordamı gerçekleştirdikten sonra gerçekleşir).
  • Etki alanı denetleyicileri arasındaki çoğaltma trafiği azaltılabilir.

Windows 2000, Windows XP ve Windows Server 2003'te Dağıtılmış Bağlantı İzleme İstemcisi hizmetinin başlangıç değeri Otomatik olarak ayarlanır. Windows 2000 tabanlı sunucularda, Dağıtılmış Bağlantı İzleme Sunucusu hizmeti varsayılan olarak el ile başlatılır. Ancak, bir sunucuyu etki alanına yükseltmek için Dcpromo.exe kullanırsanız, Dağıtılmış Bağlantı İzleme Sunucusu hizmeti otomatik olarak başlatılacak şekilde yapılandırılır.

Windows Server 2003 tabanlı sunucular için Dağıtılmış Bağlantı İzleme Sunucusu hizmeti varsayılan olarak devre dışıdır. Bir sunucuyu etki alanına yükseltmek için Dcpromo.exe kullandığınızda, Dağıtılmış Bağlantı İzleme Sunucusu hizmeti otomatik olarak başlatılacak şekilde yapılandırılmaz. Windows 2000 tabanlı bir etki alanı denetleyicisi Windows Server 2003'e yükseltildiğinde, Yükseltme sırasında Dağıtılmış Bağlantı İzleme Sunucusu hizmeti de devre dışı bırakılır. Yöneticiyseniz ve Dağıtılmış Bağlantı İzleme Sunucusu hizmetini kullanmak istiyorsanız, grup ilkesi kullanmanız veya hizmeti otomatik olarak başlatılacak şekilde el ile ayarlamanız gerekir. Ayrıca, Windows Server 2003 veya Windows XP SP1 çalıştıran bilgisayarlardaki Dağıtılmış Bağlantı İzleme İstemcisi hizmeti, Dağıtılmış Bağlantı İzleme Sunucusu hizmetini varsayılan olarak kullanmayı denemez. Bu bilgisayarları Dağıtılmış Bağlantı İzleme Sunucusu hizmetinden yararlanacak şekilde yapılandırmak istiyorsanız, Dağıtılmış Bağlantı İzleme istemcilerinin etki alanı kaynaklarını kullanmasına izin ver ilke ayarını etkinleştirin. Bunu yapmak için grup ilkesi'de Bilgisayar Yapılandırması/Yönetim Şablonları/Sistem düğümünü açın.

Microsoft, Windows 2000 tabanlı sunucularda Dağıtılmış Bağlantı İzleme ile aşağıdaki ayarları kullanmanızı önerir:

  1. Tüm etki alanı denetleyicilerinde Dağıtılmış Bağlantı İzleme Sunucusu hizmetini kapatın (bu, tüm Windows Server 2003 tabanlı sunucularda varsayılan yapılandırmadır).

    Çoğaltma yükü ve FileLinks tablolarının Active Directory'de kullandığı alan nedeniyle Microsoft, Active Directory etki alanı denetleyicilerinde Dağıtılmış Bağlantı İzleme Sunucusu hizmetini kapatmanızı önerir. Hizmeti durdurmak için aşağıdaki yöntemlerden birini kullanın:

    • Hizmetler ek bileşeninde (Services.msc veya compmgmt.msc), Dağıtılmış Bağlantı İzleme Sunucusu hizmetine çift tıklayın ve ardından Başlangıç türü kutusunda Devre Dışı'na tıklayın.

    • Grup ilkesinin Bilgisayar Yapılandırması/Windows Ayarları/Sistem Hizmetleri düğümünde Başlangıç değerini tanımlayın.

    • Tüm Windows 2000 etki alanı denetleyicilerini barındıran bir kuruluş biriminde ilke ayarlarını tanımlayın.

    İlkenin uygulanması için, ilke çoğaltıldıktan sonra etki alanı denetleyicilerini yeniden başlatın. Etki alanı denetleyicilerini yeniden başlatmazsanız, her etki alanı denetleyicisinde hizmeti el ile durdurmanız gerekir.

  2. Dağıtılmış Bağlantı İzleme nesnelerini Active Directory etki alanı denetleyicilerinden silin.

    Dağıtılmış Bağlantı İzleme nesnelerini silme hakkında daha fazla bilgi için bu makalenin "Dağıtılmış Bağlantı İzleme Nesnesini Silme" bölümüne bakın. Dağıtılmış Bağlantı İzleme Sunucusu hizmetini devre dışı bırakdıktan sonra nesneleri silmeniz önerilir.

    Not

    Etki alanı denetleyicilerindeki Dizin Bilgi Ağacı (DIT) boyutu, aşağıdaki eylemler tamamlanana kadar azaltılmaz.

    1. Nesneler dizin hizmetinden silinir.

      Not

      Silinen nesneler, silinmiş öğe taşının kullanım ömrü dolana kadar Silinmiş Nesneler kapsayıcısında depolanır. Kaldırılma taşı yaşam süresi için varsayılan değer 60 gündür. En düşük değer iki gündür. Varsayılan olarak, Windows Server 2003 Service Pack 1 veya Windows Server 2003'ün sonraki bir sürümüyle birlikte yüklenen yeni ormanlar için değer 180 gündür.

      Güçlü Active Directory çoğaltma izlemeniz yoksa, 180 günlük değeri kullanmanızı öneririz. DIT boyutu sorunlarını işlemek için bu değeri azaltmayın. Veritabanı boyutuyla ilgili sorunlarınız varsa Microsoft Müşteri Destek Hizmetleri'ne başvurun.

    2. Çöp toplama işlemi tamamlanmak üzere çalıştırılır.

    3. Ntds.dit dosyasını Dsrepair modunda birleştirmek için Ntdsutil.exe kullanırsınız.

Bu nesneler tarafından kullanılan disk alanını mümkün olan en kısa sürede geri kazanmanız gerekmediği sürece, Dağıtılmış Bağlantı İzleme sunucusu hizmetini durdurduktan sonra Dağıtılmış Bağlantı İzleme nesnelerini el ile silmeniz kritik değildir. Dağıtılmış Bağlantı İzleme istemcileri, Dağıtılmış Bağlantı İzleme sunucusundan bağlantıları 30 günde bir güncelleştirmesini ister. Dağıtılmış Bağlantı İzleme Sunucusu hizmeti, 90 gün içinde güncelleştirilmemiş nesneleri atlar.

Dltpurge.vbs VBScript'i çalıştırdığınızda, Dağıtılmış Bağlantı İzleme Sunucusu hizmeti tarafından kullanılan tüm Active Directory nesneleri betiğin çalıştırıldığı etki alanından silinir. Betiği bir ormandaki her etki alanı için bir etki alanı denetleyicisinde çalıştırmanız gerekir. Dltpurge.vbs çalıştırmak için:

  1. Dltpurge.vbs betiğini Microsoft Ürün Desteği'nden alın.

  2. Dltpurge.vbs tarafından hedeflenen etki alanındaki tüm etki alanı denetleyicilerinde Dağıtılmış Bağlantı İzleme Sunucusu hizmetini durdurun.

  3. Bir etki alanı denetleyicisinin konsolunda veya Dltpurge.vbs tarafından hedeflenen etki alanındaki üye bilgisayarda oturum açmak için yönetici ayrıcalıklarını kullanın.

  4. Komut satırından Dltpurge.vbs çalıştırmak için aşağıdaki söz dizimini kullanın:

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

    Bu komut satırında:

    • -s, Dağıtılmış Bağlantı İzleme nesnelerini silmek istediğiniz etki alanı denetleyicisinin DNS ana bilgisayar adıdır.
    • -d, Dağıtılmış Bağlantı İzleme nesnelerini silmek istediğiniz etki alanının ayırt edici ad yoludur.
  5. Nesneler kaldırıldıktan ve çöp toplandıktan sonra Ntds.dit dosyasının çevrimdışı birleştirme yordamını gerçekleştirin. Çöp toplama işlemi hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

    Active Directory veritabanı çöp toplama işlemini 198793

Örnek müşteri deneyimi

Bu bölümde açıklanan en kötü durum senaryosu, büyük bir üretim etki alanındaki çok sayıda Dağıtılmış Bağlantı İzleme nesnesini sildiğinizde dikkate almanız gereken bazı sorunları göstermektedir.

Dünya çapında 40.000'den fazla çalışanı olan kurgusal bir Fortune 500 müşterisi olan Trey Research, dünyanın ana coğrafi bölgelerini (Kuzey Amerika, Asya, Avrupa vb.) eşleyen alt etki alanları içeren boş bir kök etki alanı içeren tek bir Active Directory ormanı dağıtır. Ormandaki en büyük etki alanı yaklaşık 35.000 kullanıcı hesabı ve aynı sayıda bilgisayar hesabı içerir.

Ntds.dit dosyaları 18 gigabayt (GB) raid dizilerine yerleştirildi. Windows 2000'in ilk dağıtımından bu yana genel katalog dosyaları 17 GB'a kadar büyüdü.

Trey Research, Windows Server 2003'ün sonraki 10 gün içinde dağıtılması istiyor ancak yükseltmeyi başlatmadan önce veritabanı bölümünde en az 1,5 GB kullanılabilir disk alanı gerekiyor. Adprep.exe daha önce yüklenmiş olan düzeltmelere ve hizmet paketlerine bağlı olarak üç ile beş arasında devralınan as eklendiği bilindiğinden bu kadar disk alanına ihtiyaç duyarlar. Aşağıdaki koşullar, büyük genel katalog boyutuna veya disk alanı eksikliğine katkıda bulunur:

  • Koşul 1: Trey Research, Windows 2000'i erken benimseyenlerden biriydi ve tercih ettikleri donanım satıcısından aldıkları en büyük sürücüler bir raid dizisinde yapılandırıldıklarında 9 GB veya 18 GB'tı. Geçerli sürücüler, maliyetin yarısı için iki kat büyüktür.

  • Koşul 2: Ormandaki her etki alanına temsilci olarak atanan Active Directory ile tümleşik DNS bölgelerinde DNS atma etkinleştirilmedi.

  • Koşul 3: Etki alanı kullanıcılarının etki alanında bilgisayar hesapları oluşturmasına izin verildi. Yöneticilerin yalnız bırakılmış bilgisayar hesaplarını tanımlamak ve silmek için yinelenen bir işlemi yoktu.

  • Koşul 4: Zaman içinde, güvenlik tanımlayıcıları yöneticiler, hizmet paketleri ve kök adlandırma bağlamı (NC) başlıkları (cn=schema, cn=configuration, cn= etki alanı) ve Active Directory'de binlerce nesneyi barındıran diğer kapsayıcılar üzerinde düzeltmeler tarafından tanımlanmıştır. Ayrıca, denetim aynı bölümlerde etkinleştirildi. İzinleri ayarladığınızda ve Active Directory'deki nesneler üzerinde denetimi etkinleştirdiğinizde, veritabanının boyutu artar. Windows 2000 ormanlarını ve etki alanlarını Windows Server 2003 tabanlı etki alanı denetleyicileri (Adprep) için hazırlayan araç, devralınan asları da ekler; Bu nedenle Trey Research'in etki alanını yükseltmeden önce disk sürücüsünde yer açması gerekiyordu.

  • Koşul 5: Trey Research, Ntds.dit dosyalarının çevrimdışı birleştirme yordamlarını düzenli olarak Dsrepair modunda gerçekleştirmedi.

  • Koşul 6: En büyük etki alanındaki CN=FileLinks,CN=System,DC= etki alanı adı kapsayıcısı gözden geçirildiğinde, 700.000'den fazla Dağıtılmış Bağlantı İzleme nesnesi ortaya çıktı. Her Dağıtılmış Bağlantı İzleme nesnesinde güvenlik tanımlayıcısı yaklaşık 2 kilobayt (KB) idi. Bu koşulların her biri 17 GB .dit dosyasına yaptığı katkı için değerlendirildi:

  • Koşul 1: Trey Research, maliyeti ve bunun için gereken süre nedeniyle yeni sürücüler dağıtmamaya karar verdi. Ayrıca, Windows Server 2003'e yükseltildikten ve Tek ÖrnekLi Depolama (SIS) işlemi tamamlandıktan sonra Active Directory Veritabanı'nın küçülmesini beklediklerinden (SIS, Active Directory veritabanlarında izinlerin daha verimli bir şekilde depolanmasını uyguladığından) yalnızca geçici olarak disk alanına ihtiyaç duyuldu.

  • Koşullar 2 ve 3: Trey Research bu koşulların en iyi uygulamalar olduğuna karar verdi; Ancak Trey Research bunları uygulasa bile gerekli sonuçları elde etmeyecekti. Kolayca uygulandığından DNS atma özelliğini etkinleştirmeye karar verdiler.

  • Koşul 4: Trey Research, güvenlik tanımlayıcılarını ve sistem erişim denetim listelerini (SACL) yeniden tanımladıkları takdirde aradıkları sonuçları elde edeceklerini fark etti, ancak üretim ortamını yansıtan laboratuvar senaryosunda boyut azaltma, çoğaltma ek yükü ve en önemlisi program/yönetim uyumluluğunu kapsamlı bir şekilde test edene kadar bu yordamın uygulanması için zaman alıcı olduğuna karar verdi.

    Trey Research, Windows 2000 SP2 ve birkaç düzeltme dağıttığı için Adprep tarafından eklenen artımlı devralınan asların (etki alanı NC'deki nesnelere) 300 megabayt (MB) kadar küçük olmasını beklemiştir. Üretim ormanının yükseltmelerini test etmek için kullanılan bir laboratuvar ortamında bu davranışı doğrulayabilirler.

  • Koşul 5: Trey Research, çevrimdışı bir birleştirme yordamı gerçekleştirdiklerinde Ntds.dit dosyasındaki "boşluk" öğesini kurtarmayabileceğini fark etti. Aslında Trey Research yöneticileri, çevrimdışı birleştirme yordamını tamamladıktan hemen sonra veritabanı boyutunda bir artış olduğunu fark ettiler. Bu davranış, Windows 2000 veritabanı altyapısındaki verimsizlik nedeniyle oluştu; bu altyapı Windows Server 2003'te geliştirilmiştir.

  • Koşul 6: Trey Research, açıkça görünen eylemin tüm Dağıtılmış Bağlantı İzleme nesneleriniN CN=FileLinks,CN=System,DC= etki alanı adı kapsayıcısından ormandaki her etki alanı denetleyicisinde basit bir toplu silme işlemi gerçekleştirmek olacağını kabul etti. Ancak, bunu yaptıklarında, nesneler kaldırılana ve çöp toplanana kadar ve bu etki alanındaki her etki alanı denetleyicisinde çevrimdışı birleştirme yordamı tamamlanana kadar ek disk alanının boşaltılmayacağını fark ettiler. Mezar taşı yaşam süresi değeri iki güne kadar düşük değerlere ayarlanabilir ancak Trey Research ormanındaki birkaç etki alanı denetleyicisi donanım ve yazılım güncelleştirmelerini beklerken çevrimdışıydı. Uçtan uca çoğaltma gerçekleştirilmeden önce nesneler kaldırıldıysa, silinen nesneler yeniden canlanabilir veya ormandaki genel katalog sunucuları arasında tutarsız veriler bildirilebilir. Trey Research, hemen rahatlama sağlamak için aşağıdaki prosedürü gerçekleştirdi:

  1. Dağıtılmış Bağlantı İzleme şema sınıfı nesneleri için varsayılan güvenlik tanımlayıcısını kaldırdılar ve bunu tek bir güvenlik sorumlusuyla (kullanıcı hesabı) değiştirdiler.
  2. Var olan tüm güvenlik tanımlayıcılarını kaldıran ve ardından bunları tek bir güvenlik sorumlusu için açık bir ace ile değiştiren bir VBScript programı yazdılar.
  3. Dağıtılmış Bağlantı İzleme nesnelerini, her nesne silme işlemi arasında üç saatlik gecikmeyle 10.000 birimlik artışlarla sildi.
  4. Tüm Dağıtılmış Bağlantı İzleme nesneleri silindikten sonra etki alanındaki her etki alanı denetleyicisinde çevrimdışı birleştirme yordamı gerçekleştirdiler. Trey Research tanımlayıcıyı kaldırıp birleştirme yordamını gerçekleştirdiğinde, veritabanı etki alanındaki tüm etki alanı denetleyicilerinde yaklaşık 1,5 GB disk alanı kurtardı. Bu alan miktarı Adprep aracını rahatça çalıştırmak ve tüm Windows 2000 tabanlı etki alanı denetleyicilerini ve genel katalogları Windows Server 2003'e yükseltmek için yeterliydi.

Trey Research işletim sistemini Windows Server 2003'e yükselttiğinde, Windows Server 2003'teki tek örnek deposu özelliği veritabanı boyutunu yaklaşık 8 GB'a düşürdüğünde daha fazla disk alanı boşaltıldı (bu sonuçları almak için çevrimdışı birleştirme yordamı uygulamanız gerekir). TSL aralığının süresi dolduktan sonra daha fazla alan kurtarıldı, Dağıtılmış Bağlantı İzleme nesneleri çöp toplandı ve çevrimdışı bir birleştirme yordamı gerçekleştirdiler.

Trey Research, yeni bir windows 2000 tabanlı etki alanı denetleyicisi çoğaltmasını etki alanına yükselterek bilgisayar hesabını normalde kullandıklarından farklı bir kuruluş birimine yerleştirdi. İki gün içinde, Windows 2000 tabanlı etki alanı denetleyicisinde yaklaşık 8.000 Dağıtılmış Bağlantı İzleme nesnesi mevcut oldu. Trey Research Dağıtılmış Bağlantı İzleme'yi durdurdu veya hizmeti durdurmak için bir ilke oluşturdu ve ardından ilkeyi Windows 2000 tabanlı etki alanı denetleyicilerini barındıran kuruluş birimlerine bağladı. Son olarak Trey Research, kalan Dağıtılmış Bağlantı İzleme nesnelerini silinmek üzere işaretlemek için Dltpurge.vbs kullandı.

DLT nesne silme anatomisi

DLT nesnelerinin kendisi birkaç öznitelik içerir ve Active Directory'de çok az alan kullanır. Bir nesne silinmek üzere işaretlendiğinde (kaldırıldı olarak işaretlendiğinde), Active Directory'den temizleninceye kadar nesneyi izlemek için gerekli olanlar dışında tüm gereksiz öznitelikler kaldırılır.

Bağlantı izleme nesneleri söz konusu olduğunda, nesneyi silinmek üzere işaretlemek yalnızca iki özniteliğin kaldırılmasına neden olur: dscorepropagationdata ve objectcategory. İki özniteliğin silinmesi, 34 baytlık bir ilk tasarrufa neden olur. Ancak, bağlantı izleme nesnesini silinmek üzere işaretleme işlemi, bir IS_DELETED özniteliği (4 bayt) ekleyerek ve RDN ile "ortak ad" özniteliklerini mangling yaparak ve bu özniteliklerin her birinin yaklaşık 80 bayt büyümesine neden olarak nesneyi de güncelleştirir. Buna ek olarak, "çoğaltma meta verileri" özniteliği de bu nesnede gerçekleştirilen güncelleştirmeleri yansıtmak için yaklaşık 50 bayt büyür. Bu nedenle, bir bağlantı izleme nesnesini silinmek üzere işaretleyerek nesne yaklaşık 200 bayt büyür. The NTDS. DIT, silinen nesneler kaldırıldıktan sonra çöp toplanana ve çevrimdışı birleştirme gerçekleştirilene kadar boyut küçültmesi sergilemez.

Not

Bu makalenin önerdiği gibi hizmet kapalıysa, otomatik temizleme gerçekleşmez.

Dltpurge.vbs metin sürümü

Bu betiği kullanmak için:

  1. Bu makaledeki <Buraya Kopyalamayı Başlat etiketiyle <Buraya>> Kopyalayı Bitir etiketi arasındaki metnin tamamını kopyalayın ve sonra metni bir ASCII metin düzenleyici dosyasına (örneğin, bir Microsoft Not Defteri dosyası) yapıştırın.
  2. Dosyayı "Dltpurge.vbs" olarak kaydedin. 3 Dağıtılmış Bağlantı İzleme nesnelerini silme başlığında açıklanan yordamı tamamlayın
<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>