Script konusundaki makalelerin üçüncüsü ile script konusunu tamamlamayı düşünüyorum. Active Directory scriptlerinin amacı tipik yönetim işlemlerine yardımcı olmaktır. Belki daha kolay yapmaktır. Ancak yine de yönetime biraz programcı açısından bakmak gerekebilir. Örneğin kullanıcıları bir yerden transfer etmek ve yaratmak gibi.
Administrative Script’ler
Belli yönetim işlemleri (administrative tasks) scriptler aracılığıyla yapılır.
Örnek:
- Kullanıcı, grup, OU ve diğer Active Directory bileşenlerini yaratmak, değiştirmek ve silmek.
- Bilgisayarları yapılandırmak.
- Dosyaları, klasörleri ve diskleri yönetmek.
- ……….
Windows Server 2003 ailesinde iki script ortamı vardır:
- Komut işleyici
- Windows Script Host (WSH)
Komut işleyici (command processor) komutları içeren dosyaları çalıştırır. Batch dili olarak da adlandırılan bu yöntemde belli komutlar kullanıldığı için kısıtlıdır. Ancak eski işletim sistemleri tarafından da desteklenmektedir.
Windows Script Host, scriptlerin çalışması için bir ortam yaratır. Diğer bir değişle değişik script dillerini destekleyen script enginidir. JScript ve VBScript’i destekler.
Örneğin VBScript ya da Jscript komutları Active Directory Service Interfaces (ADSI) verilerine erişerek nesneleri yönetilmesini. Ayrıca Management Instrumentation (WMI) ile iletişim kurarak da sistem kaynaklarına erişmeyi sağlar.
İki script dilinin yanı sıra WSH iki programı da destekler: WScript.exe ve CScript.exe.
Active Directory’ye erişmek kullanılan yapı:
Set objOU = GetObject(LDAP://OU=ornek,dc=ceyhun,dc=com)
Bilgisayar kaydı eklemek:
‘ yeni bilgisayar kaydi yaratmak
dim biladi
biladi = inputbox(“bilgisayar adini girin”)
Set objRootDSE = GetObject(“LDAP://rootDSE”)
Set objContainer = GetObject(“LDAP://cn=Computers,” & _
objRootDSE.Get(“defaultNamingContext”))
Set objComputer = objContainer.Create _
(“Computer”, “cn=” & biladi)
objComputer.Put “sAMAccountName”, biladi & “$”
objComputer.SetInfo
Diğer bir örnek:
Dim biladi
Dim ouadi
biladi = inputbox(“bilgisayar adı”)
ouadi = inputbox(“OU adi”)
Set objou = GetObject(“LDAP://dc=ceyhun,dc=com”)
Set objcomputer = objOU.Create(“computer”,”cn=” & biladi,”cn=”, ouadi )
objComputer.Put “saMAccountName”, “biladi”
objComputer.SetInfo
Kullanıcı hesabı yaratmak (1):
‘yeni kullanıcı yaratmak
dim kullanici
kullanici = inputbox (“yaratacaginiz kullanici”)
Set objou = GetObject(“LDAP://OU=satisOU,dc=ceyhun,dc=com”)
set objuser = objou.Create(“user”,”cn=” & kullanici)
objuser.put “saMAccountName”, kullanici
objuser.setinfo
objuser.accountdisabled = false
objuser.setinfo
Kullanıcı hesabı yaratmak (2):
Dim kullanici
kullanici= inputbox(“Kullanıcı Adını Girin?”)
Set objOU = GetObject(“LDAP://OU=ornek,dc=ceyhun,dc=com”)
Set objUser = objOU.Create(“User”,”cn=” & kullanici)
objUser.Put “sAMAccountName”, kullanici
objUser.SetInfo
Kullanıcı hesabı yaratmak (3):
set nesne=getobject (“LDAP://dc=ege, dc=ceyhun, dc=com”)
set kullanici = nesne.create(“user”,”cn=ceyhun”)
kullanici.put “sAMAccountName”, “ceyhun”
kullanici.SetInfo
REM nesne adlarının büyük-küçük harf olması önemli!!!
Kullanıcı hesabı yaratmak (Ekrandan istemeden):
Set objOU = GetObject(“LDAP://OU=ceyhunOU,dc=ceyhun,dc=com”)
Set objUser = objOU.Create(“User”, “cn=ornek2″)
objUser.Put “sAMAccountName”, “ornek2″
objUser.SetInfo
Kullanıcı password’ünü değiştirmek:
Set objUser = GetObject _
(“LDAP://cn=ceyhun,ou=ceyhunOU,dc=ceyhundc=com”)
objUser.ChangePassword “Password100″, “Password100WKG”
Kullanıcı hesabını Enable etmek:
Set objUser = GetObject (“LDAP://cn=ornek2,ou=ceyhunOU,dc=ceyhun,dc=com”)
objUser.AccountDisabled = FALSE
objUser.SetInfo
Kullanıcının password’ünü değiştirmek:
Set objUser = GetObject _
(“LDAP://cn=ali,ou=muhasebe,dc=ceyhun,dc=com”)
objUser.ChangePassword “Ax15YZxc”, “AliPassword100″
Toplu kullanıcı kaydı oluşturmak:
İşci1′den başlamak üzere n tane İşçi kullanıcı kaydı oluşturmak için:
Set objRootDSE = GetObject(LDAP://rootDSE)
Set objContainer = GetObject(“LDAP://cn=Users,” & _
objRootDSE.Get(“defaultNamingContext”))
For i = 1 To 50
Set objLeaf = objContainer.Create(“User”, “cn=Isci” & i)
objLeaf.Put “sAMAccountName”, “Isci” & i
objLeaf.SetInfo
Next
WScript.Echo “50 kullanici kaydi yaratilmistir”
Grup hesapları:
Bir Global group yaratmak:
Set objOU = GetObject(“LDAP://OU=FC-OU1,dc=ceyhun,dc=com”)
Set objGroup = objOU.Create(“Group”, “cn=muhasebeciler”)
objGroup.Put “sAMAccountName”, “muhasebeciler”
objGroup.SetInfo
Grup hesabını silmek:
Set objOU = GetObject(“LDAP://ou=istanbulOU,dc=ceyhun,dc=com”)
objOU.Delete “group”, “muhasebe”
OU ile ilgili scriptler:
Bir OU yaratmak:
Set objDomain = GetObject(“LDAP://dc=ceyhun,dc=com”)
Set objOU = objDomain.Create(“organizationalUnit”, “ou=Muhasebe”)
objOU.SetInfo
OU Silmek:
Set objDomain = GetObject(LDAP://dc=ceyhun,dc=com)
objDomain.Delete “organizationalUnit”, “ou=Satis”
Bilgisayar (Computer) hesabıyla ilgili scriptler:
Bilgisayar kaydı yaratmak:
Set objCompt = _
GetObject(“LDAP://cn=Computers,dc=ceyhun, dc=com”)
Set objComptCopy = objCompt.Create(“computer”, “cn=ceyhunpc”)
objComptCopy.Put “sAMAccountName”, “ceyhunpc”
objComptCopy.SetInfo
Bilgisayar kaydını silmek:
strComputer = “bilgisayar01″
set objComputer = GetObject(“LDAP://CN=” & strComputer & _
“,CN=Computers,DC=ceyhun,DC=com”)
objComputer.DeleteObject (0)
Bilgisayarı diğer bir OU’ya taşımak:
Set objNewOU = GetObject(“LDAP://OU=FC-OU1,DC=ceyhun,DC=com”)
Set objMoveComputer = objNewOU.MoveHere
(“LDAP://CN= bilgisayar01,CN=FC-OU2,DC=ceyhun ,DC=com”, “CN=bilgisayar01″)
Microsoft Excel üzerinde kod yazarak Active Directory nesnesi yaratmaya bir diğer örnek:
Sub Dügme1_Tiklat()
Dim kullanici
For i = 1 To 7
kullanici = Sheets(“sayfa1″).Cells(i, 2).Value & Mid(Sheets(“sayfa1″).Cells(i, 1).Value, 1, 1)
‘ soyadi , arti adinin ilk karakteri
kullanici = Sheets(“sayfa1″).Cells(i, 1).Value
‘ adi
Set nesne1 = GetObject(“LDAP://ou=emin,dc=fc,dc=com”)
Set nesne2 = nesne1.create(“user”, “cn=” & kullanici)
nesne2.put “samaccountname”, kullanici
nesne2.SetInfo
Next
End Sub
Yukarıdaki kod içinde:
Kullanılan deyim:
Sheets (sayfa).Cells (satir, sütun)
İkinci sütundan Soyadını almak için:
Sheets(“sayfa1″).Cells(i, 2).Value
Birinci sütundan adının ilk karakterini almak için:
Mid(Sheets(“sayfa1″).Cells(i, 1).Value, 1, 1)
Kodu düzenlemek için; Excel ortamında Forms (Formlar) araç çubuğu aracılığıyla bir düğme çalışma ortamına eklenir. Ardından Assign Macro (Makro Ata) iletişim kutusu aracılığıyla yeni (new) kod eklenir.
Umarım üç makaleden oluşan bu seride scriptlerle ilgili anlattığım konular yararlı olmuştur.


Ekim 15th, 2009 at 11:36
ceyhun bey iyi güzel olmuş elinize sağlık da bu sağ tuş kilidini neden bırakıyorsunuz. bari bu kadar bilişimin içinde olan birisi olarak yapmayın lütfen yani kopyalayıp kullanamıyacaksak boş yere siteye koymanızın anlamı yok bu sizin özgüveniniz konusunda endişelendirir insanları. Eski moda öğretmenler gibi bilişim çağında el ile yıllık ödev yazdıranlardansınız.
Ekim 15th, 2009 at 21:55
Hayır bilişimin içinde olan herkesin rahatlıkla alabileceği seçenekler mevcut Okan Bey. Sadece biraz emek harcasın istiyorum insanlar sitedeki tüm içeriği ben öğrencilerime ya da isteyenlere zaten veriiyorum. Amacım paylaşım yapmak olmasa zaten böyle bir site oluşturup buraya yazmak için zaman harcamazdım. Ama klasik kopyala yapıştır yöntemleri dışında birşeyle uğrasmak zor geliyorsa (ki bundan dolayı ilk defa şikayetçi olan birisi olduğunu belirtmeden geçemiycem ) bunu kaldırmak benim için sorun olmayacaktır. Ama bu sitede gördüğünüz hiçbirşeyi el ile yazmanız gerekmez sadece view source seçeneği ile zaten istediğinizi alabilirsiniz.
İyi çalışmalar.
Nisan 21st, 2010 at 08:00
Merhabalar sizden
bir yardım isteyecegim
Bilgi işlem e yeni basladım
MCSE kursuna gidiyrum
Active Directory de
kullanıcı properties kısmında
general tabında ufak bir
insan fotosu var onu
degistirmem gerekiyor
neler yaptıysam degismedi
yardımalarınızı bekliyorum
teskkurler
Eylül 7th, 2010 at 02:35
harika bir site. bence ingilizce dil seçeneği de olmalı.
Kasım 22nd, 2010 at 11:56
sitenizde harika makaleler var. Bu makaleleri kaynak göstererek kullanabilir miyim?
Eylül 7th, 2011 at 09:18
Ceyhun Bey selam sitenizi bircok konuda bana cok yardımcı oldu cok tesekkur ederim .
Size sormak istedigim bir soru var Active Directoryde userların levellarını degistirebilecegimiz bir script yazabiliyormuyuz .
ornegin Xsahsi mudur yardımcısı iken yeni gorev dagılımında mudur olması gibi
ilginiz icin simdiden tesekkur ederim .
Eylül 9th, 2011 at 17:05
Merhaba Bilal Bey;
User Levellerından kastınız müdür yardımcısı pozisyonunda yer alan X için ünvan değişikliği mi yapmak itiyorsunuz yoksa müdür yardımcısı OU’sundan müdür OU’suna mı taşımak istiyorsunuz. İstediğinizi detaylı olarak açıklarsanız gerekli script’in yazılıp yazılamayacağını
söyleyebilirim.