Active Directory Script?leri

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.

 

Bir OU altındaki kullanıcıların “Password never expire” özelliğini aktive etmek için aşağıdaki scripti kullanabilirsiniz.

dsquery user “OU={Target OU},DC={domain},DC={domain uzantısı}” | dsmod user -pwdneverexpires yes

Örnek:

dsquery user “OU=TestOU,DC=erdaldinc,DC=com” | dsmod user -pwdneverexpires yes