Windows Scripting Host ile Active Directory üzerindeki kullanıcı bilgilerini değiştirme
Fortigate üzerinde Active Directory ile eşleştirme yaparken FSAE yazılımının TÜRKÇE karakterli kullanıcı tanımlarında sorun çıkardığı bu yüzden de kullanıcıların internet çıkışlarına izin vermediğini tespit etmiştim.
Kullanıcı sayısının az olduğu sunucularda bu bilgileri manuel olarak değiştirmek sorun olmayabilir ancak kullanıcı sayısı 100 ve üzerine çıktığında çok zaman alacak bir işlem olacaktır.
Durum böyle olunca da; WSH script yapısı ile Active Directory de bulunan kullanıcıların isimlerindeki TÜRKÇE karakterleri kaldırarak İNGİLİZ alfabesine uygun hale getiren script kodunu yazdım.
Aşağıdaki kodları bir text editörüne alıp dosya ismini isimdegistir.vbs olarak kaydettikten sonra scripti çalıştırmanız halinde program size hangi OU üzerinde işlem yapacağınızı soracak ve o Organizasyon altındaki tüm kullanıcı isimlerini otomatik olarak düzeltecektir.
[sourcecode language=”plain”] Set oRoot = GetObject("LDAP://rootDSE")
objOU = InputBox ("Çalışmak istediğiniz OU bilgisini girin","www.sekercioglu.eu")
Set oDomain = GetObject("LDAP://ou=" & ObjOU & "," & oRoot.Get("defaultNamingContext"))
Set objRootDSE = GetObject("LDAP://rootDSE")
OU = "OU=" & objOU & "," & oRoot.Get("defaultNamingContext")
a=ModifyUsers (oDomain)
Set oDomain = Nothing ‘oContainer değişkenini siliyor.
Wscript.echo a & " Kullanıcı bilgisi güncellendi"
Function ModifyUsers(oObject)
Dim oUser
oObject.Filter = Array("user")
For Each oUser in oObject
eski=oUser.get ("name")
yeni=cevir(oUser.get ("name"))
oDomain.MoveHere "LDAP://CN=" & eski & "," & OU, "cn=" & yeni
a=a+1
oUser.Put "st","SAMSUN"
oUser.Put "streetAddress","Hançerli Mh. Abbasağa SK. No:8"
oUser.Put "postalCode","55020"
oUser.Put "l","ILKADIM"
oUser.SetInfo
Next
ModifyUsers=a
End Function
function cevir(veri)
dim txt
for q=1 to Len(veri)
a=mid(veri,q,1)
if a="Ş" then a="S"
if a="ş" then a="s"
if a="İ" then a="I"
if a="ı" then a="i"
if a="Ğ" then a="G"
if a="ğ" then a="g"
if a="Ü" then a="U"
if a="ü" then a="u"
if a="Ö" then a="O"
if a="ö" then a="o"
if a="Ç" then a="C"
if a="ç" then a="c"
txt=txt & a
next
cevir=txt
txt=""
end function
[/sourcecode]