Windows API Kullanarak Ağınızdaki Alanların Listesini Nasıl Alırsınız

Eğer bir ağ yöneticisiyseniz veya Active Directory ile çalışan bir geliştiriciyseniz, ağınızdaki mevcut alanların listesini almak için sıkça ihtiyaç duyabilirsiniz. İzleme amaçları, kaynak yönetimi veya güvenlik protokollerinin uygun şekilde uygulanmasını sağlamak amacıyla alan bilgilerine erişmek hayati önem taşır. Bu blog yazısında, bu görevi Windows API’sini LDAP sorguları ile nasıl gerçekleştireceğinizi açıklayacağız.

Problemi Anlamak

Ağınızdaki tüm alanların listesini almak için genellikle Active Directory ile etkileşimde bulunursunuz. Zorluk, bu bilgileri etkili bir şekilde çıkarmak için doğru protokolleri ve sorguları kullanmaktan kaynaklanır. Neyse ki, bu görev sadece biraz betik yazma ile gerçekleştirilebilir!

Çözüm

LDAP Sorguları ile VBScript Kullanma

Alan bilgilerini almak için en verimli yöntemlerden biri VBScript kullanarak LDAP (Hafif Dizin Erişim Protokolü) sorguları ile birleşimidir. Aşağıda, Active Directory’nin kullanıldığı ağa bağlı her makinede çalıştırılabilecek bir örnek betiği sizi yönlendireceğiz.

Örnek VBScript Kodu

Aşağıda alanların listesini almak için kullanabileceğiniz betik bulunmaktadır:

' Bu VBScript kodu, kullanıcının girdiği
' ormana ait alanların listesini alır.

' ---------------------------------------------------------------
' Robbie Allen'ın "Active Directory Cookbook" kitabından
' Yayıncı: O'Reilly ve Associates
' ISBN: 0-596-00466-4
' Kitap web sitesi: http://rallenhome.com/books/adcookbook/code.html
' ---------------------------------------------------------------

set objRootDSE = GetObject("LDAP://RootDSE")
strADsPath =  "<GC://" & objRootDSE.Get("rootDomainNamingContext") & ">;;"
strFilter  = "(objectcategory=domainDNS);"
strAttrs   = "name;"
strScope   = "SubTree"

set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
set objRS = objConn.Execute(strADsPath & strFilter & strAttrs & strScope)
objRS.MoveFirst
while Not objRS.EOF
    Wscript.Echo objRS.Fields(0).Value
    objRS.MoveNext
wend

Betiğin İncelenmesi

  1. LDAP Bağlantısını Başlatma:

    • Betik, dizinin köküne bir referans alarak başlar.
    • GetObject("LDAP://RootDSE") dizinin kökünü getirir.
  2. Yol ve Sorgu Filtrelerini Ayarlama:

    • strADsPath: Bu, alan adını belirten konumu ayarlar.
    • strFilter: Aranacak nesne türünü belirtir; bu durumda yalnızca alanlar.
  3. Bağlantıyı Kurma:

    • Active Directory’ye bağlantı, ADODB.Connection kullanılarak kurulmaktadır.
  4. Sorguyu Çalıştırma:

    • Active Directory sorgusu çalıştırılır ve sonuçlar bir kayıt kümesi nesnesinde saklanır.
  5. Sonuçları Gösterme:

    • Betik, kayıt kümesinin içinden geçerek her bir alan adını görüntüler, tüm kayıtlar gösterilene kadar devam eder.

Ek Kaynaklar

C# ortamında çalışmayı tercih edenler için bu C# versiyonu da mevcuttur. Bu alternatif, benzer sonuçlar sağlayabilir ancak farklı uygulama hususları içerebilir.

Sonuç

Ağınızdaki alanların listesini almak, Windows API’sini ve LDAP sorgularını kullanırken basit bir süreçtir. Sağlanan VBScript kodunu kullanarak, gerekli verileri hızlı ve etkili bir şekilde toplayabilir, Active Directory kaynaklarını yönetme yeteneğinizi artırabilirsiniz. Eğer ek performans veya özellikler arıyorsanız, daha sağlam bir çözüm için C# alternatifini keşfetmeyi düşünebilirsiniz.

Artık ağınızdaki alanları verimli bir şekilde yönetmek için araçlarla donatıldınız. Yukarıdaki kodu uygulamayı deneyin ve betik yazımının ağ yönetiminde ne kadar güçlü olabileceğini göreceksiniz!