May 31

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.

Yazan : ceyhun çamlı \\ Etiketler:

May 30

Script nedir ve naıl çalıştırılır adlı ilk makelemizin ardından scriptlerle ilgili ikinci makalemizle scriptler konusuna devam ediyoruz. VBScript’in tek bir veri türü vardır. Bu da Variant’tır. Variant,  özel bir veri türüdür ve değişik türdeki verileri (sayı, karakter dizisi gibi) verileri içerir. Variant tek bir veri türü olduğu için bütün işlevler tarafından da döndürülen veri türüdür.

 Variant bütün veri tiplerini içeren ve aynı zamanda uygun biçimde kullanılmalarını sağlayan bir veri türüdür. Aşağıdaki tabloda Variant veri türünün içerdiği alt veri türleri yer almaktadır:

 Tablo: Variant veri türünün içerdiği alt veri türleri

 Alt Türler         Anlamı                                                                                                          

Empty              Değer atanmamış. Sayısal verileri için sıfır, karakter değerleri için ise sıfır  uzunluklu ” ” değerdir.

Null                 Boş veri.

Boolean           True ya da False içerir.

Byte                 0 ile 255 arasında değerler.

Integer           -32,768 ile 32,767 arasında tamsayı değer.

Long               -2,147,483,648 ile 2,147,483,647 arasında sayısal değer.

Double 1         .79769313486232E308 ile -4.94065645841247E-324 arasında sayısal   (kayan noktalı) değer.

Date (Time)      January 1, 100 ile December 31, 9999 tarihleri arasında tarih değeri.

Object              Bir nesne içerir.

Error                Bir hata numarası içerir.

VBScript’de Operatörler

Operatörler (işleçler) hem karar vermede ilişkileri oluştururlar hem da aritmetik işlemlerde kullanılırlar. Birçok operatörün bir arada kullanılması durumunda işlem sırası operatörlerin öncelik sırasına göre düzenlenir. Ancak ifadelerde parantezlere yer vermek işlem sırasının programcı tarafından kontrol edilmesini sağlar.

Değerler ya da değişkenler arasında toplama, çıkarma gibi işlemlerin yapılmasını sağlarlar. İşleçler +, *, /, – gibi işaretlerle kullanılır.

Dim toplam

toplam = toplam + 1

toplam değişkenini bir artırır.

 Tablo: işleçler ve öncelikleri

Aritmetik Karşılaştırma Mantıksal
Üs alma (^) Eşitlik (=) Not
Olumsuz (-) Eşitsizlik (<>) And
Çarpma ve bölme (* , /) Küçüktür (<) Or
Tamsayı bölme (\) Büyüktür (>) Xor
Modülo Aritmetik (Mod) Küçük ya da eşittir (<=) Eqv
Toplama ve çıkarma (+,-) Büyük ya da eşittir (>=) Imp
String birleştirme(&) Like  
  Is  

 İfade içindeki operatörlerin eşit öncelikli olmaları durumunda; ifade soldan sağa doğru değerlendirilir.

 Program Kontrolü

Kodun işletimi yazıldığı sırasıyla gerçekleştirilir. Ancak program kontrolü olarak adlandırılan deyimlerle bu işleyiş değiştirilebilir. Böylece program içinde belli kararlara göre yapılabilecek farklı işlemler ortaya çıkar.

 If…Then…Else

If…Then…Else deyimi bir koşulun True (doğru) ya da False (yanlış) olmasını değerlendirmek için kullanılır. Buna bağlı olarak bir ya da daha fazla deyimin çalıştırılmasını sağlar. Genellikle koşul bir karşılaştırma ifadesiyle bir değeri ya da değişkeni diğerine göre karşılaştırır.

 Koşul doğru olduğunda yalnızca bir deyimi çalıştırmak istiyorsanız, If…Then…Else deyiminin tek satırlık basit şeklini kullanırsınız: Aşağıdaki örnekte yalnızca IF ve Then kullanılmış, Else deyimi kullanılmamıştır. .

 If sayac > 12 Then Msgbox “12 değerine ulaşıldı”

 Döngüler

Döngüler bir grup deyimini bir çok kez çalıştırılmasını sağlar. Örneğin son kaydı buluncaya kadar dosyada veri okumak gibi. Bazı döngüler deyimleri belli bir koşul False oluncaya kadar yineler. Bazıları ise koşul doğru oluncaya kadar. Bunun dışında deyimleri belli bir kez yinelemek için de döngü kullanılır:

 VBScript dilindeki döngü yapıları:

 

  • Do…Loop: Bir koşul True olduğu sürece ya True da oluncaya kadar yineleme.
  • While…Wend: Koşul doğru olduğu sürece döngü yapmak.
  • For…Next: Deyimleri belli bir sayıda yinelemek.

 Do…Loop deyimlerini bir blok deyimini belli bir koşul olduğu ya da koşul sağlanıncaya kadar yineler. Ancak değişik şekillerde tasarlanabilir: 

Bir koşul doğru olduğu sürece yinelemek:

Bir Do..Loop deyimindeki koşulu kontrol etmek için While anahtar sözcüğü kullanılır. Koşulu döngüye girmeden önce ya da döngü bir kez çalıştıktan sonra çıkışta kontrol edebilirsiniz.

 Örnek:

 Dim sayac

sayac = 1

          Do

           sayac = sayac + 1

     Loop Until sayac > 20

     Msgbox “döngü ” & sayac & ” kere döndü.”

 Sayac değeri 10 oluncaya kadar mesaj vermek:

 Dim Sayac

Sayac= 10

            Do

              MsgBox “FC-Scripting”

              Sayac = Sayac + 1

            Loop Until Sayac = 10

 Deyimleri bir koşul doğru oluncaya kadar yinelemek:

Bir Do..Loop döngüsü içinde Until sözcüğünü iki şekilde kullanarak bir koşulu test edebilirsiniz: Birincisi döngüye girmeden önce koşulun test edilmesi, ikinci ise döngüye girildikten sonra birinci işleyişin ardında koşulun test edilmesi gibi.

 For…Next Kullanımı

For…Next deyimleri bir blok deyimin belli bir sayı kadar çalıştırılmasını sağlar. Örneğin 10 kere yapılacak işlemleri değer = 1′den başlayarak 10 kere yapmak gibi.

 Örnek:

      Dim i, toplam

     For i = 1 To 10

         toplam= toplam + i

     Next

     MsgBox “Toplam = ” & toplam

 Yukarıdaki örnekte i değişkeni döngü kontrol değişkeni olarak adlandırılır. Bu değişken (i) döngünün kaç kez döneceğini ve aynı zamanda kendi değerinin de bilgi olarak kullanılabilmesini sağlar.

VBScript Deyimleri

VBScript dilinde çok sayıda deyim vardır. Bunlar şu kategoriler içinde listeleyebiliriz:
 

Array (dizi) İşlemleri

 Dim, Private, Public, ReDim

IsArray

Erase

LBound, UBound

 Atamalar

Set

 Sabitler

Nothing

Null

True, False

Empty

False

Nothing

Null

True 

 Program Kontrolü

Do…Loop

For…Next

For Each…Next

If…Then…Else

Select Case

While…Wend

With 

Dönüşümler

Abs

Asc, AscB, AscW

Chr, ChrB, ChrW

CBool, CByte

CCur, CDate

CDbl, CInt

CLng, CSng, CStr

DateSerial, DateValue

Hex, Oct

Fix, Int

Sgn

TimeSerial, TimeValue

 Tarih/Saat

Date, Time

DateAdd, DateDiff, DatePart

DateSerial, DateValue

Day, Month, MonthName

Weekday, WeekdayName, Year

Hour, Minute, Second

Now

TimeSerial, TimeValue

 Tanımlamalar

Class

Const

Dim, Private, Public, ReDim

Function, Sub

Property Get, Property Let, Property Set

Hata İşleme

On Error

Err 

 Formatlama

FormatCurrency

FormatDateTime

FormatNumber

FormatPercent 

 Giriş/Çıkış

InputBox

LoadPicture

MsgBox 

 Matematik

Atn, Cos, Sin, Tan

Exp, Log, Sqr

Randomize, Rnd

 Nesneler (Object)

CreateObject

Err Object

GetObject

RegExp 

 Operatörler

Addition (+), Subtraction (-)

Exponentiation (^)

Modulo aritmetik (Mod)

Multiplication (*), Division (/)

Integer Division (\)

Negation (-)

String concatenation (&)

Equality (=), Inequality (<>)

Less Than (<), Less Than or Equal To (<=)

Greater Than (>)

Greater Than or Equal To (>=)

Is

And, Or, Xor

Eqv, Imp

 Prosedürler

Call

Function, Sub

Property Get, Property Let, Property Set

Rounding

 Sözcük (Strings) İşlemleri

Asc, AscB, AscW

Chr, ChrB, ChrW

Filter, InStr, InStrB

InStrRev

Join

Len, LenB

LCase, UCase

Left, LeftB

Mid, MidB

Right, RightB

Replace

Space

Split

StrComp

String

StrReverse

LTrim, RTrim, Trim

 Fonksiyonlar (Functions) 

  • CDate() Bir değeri tarihe dönüştürür.
  • CInt() Bir değeri tamsayıya dönüştürür.
  • CStr() Bir değeri string’e dönüştürür.
  • Date() Sistemdeki tarih bilgisini verir.
  • DateAdd() Tarihe değer ekler ve çıkarır.
  • DateDiff() İki tarih arasındaki farkı bulur.
  • DatePart() Tarih bilgisinin kısımlarını (year, day, month, vb) verir.
  • GetObject() Bir nesneyi belirtir.
  • InputBox() Ekrandan bilgi almak için.
  • InStr() Bir string bilginin diğer bir string içinde aranmasını sağlar.
  • LCase() Bir string veriyi küçük harfe çevirir.
  • Left() String bilgiler üzerinde, belirtilen sayı kadar soldan alır.
  • Len() String bilginin uzunluğunu verir.
  • MsgBox() Ekran üzerinde mesaj verir.
  • Now() Sistem zamanını verir.
  • Right() String bilgiler üzerinde, belirtilen sayı kadar sağdan alır.
  • UCase() String bilgiyi büyük harfe çevirir.

Bu makalemizinde sonuna geldik. Bir sonraki makalemizde Active Directoryde kullanmak için script yazmayı anlatacağım.

Yazan : ceyhun çamlı \\ Etiketler:

May 29

Sistem yönetimi için tipik yönetim işlemlerini yapmak için yaratılan komut ya da komut dosyalarına script denir. Ben de 4 makale ile  sistem yönetimi için gerekli olduğunu düşündüğüm scriptleri anlatacağım. Öncelikle scriptlerin ne olduğunu ve nasıl çalıştırıldığını anlatarak başlamak istiyorum. Scriptler, Microsoft VBScript© dili kurallarına göre oluşturulur.

Scriptlerle yapılabilecek bazı işlemler:

  • Lokal bilgisayar üzerinde ve Active Directory üzerinde nesneler yaratmak için scriptler yazılabilir. Rutin işlemler bu şekilde toplu olarak yapılabilir.
  • Yazılan scriptler logon script olarak kullanılabilir.
  • Kullanıcı ile etkileşimli çalışmak için kullanılabilir. MsgBox, InputBox deyimleri gibi.
  • Sürülerin map edilmesinde kullanılır.

NOT: Scriptler, NotePad gibi basit bir metin editörü aracılığıyla yazılabilir. Onun dışında çok sayıda yönetici program içinde de script yazılabilir.

 

 

 

 

 

 

 

 

 

 

WSH

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. WSH sayesinde yazılan script’ler Windows ortamında çift tıklanarak çalıştırılır.

Değişken Tanımlamak

Script içinde değerleri temsil etmek için değişkenler (variables) kullanılır. Değişkenler farklı türdeki bilgileri temsil etmek için tür tanımını da sahiptir.

Değişken tanımlama:

Dim değişkenadı

Örnek:

Dim adi

 adi adlı bir değişken tanımlar.

 Script örneklerinde genellikle daha standart olsun diye str ile başlayan değişken adı kullanılır:

strComputer

strDomain  

strfcbaglanti

Değişkenlerin dışında Const deyimiyle sabitler de tanımlanır:

 Örnek:

Const JOIN_DOMAIN   = 1

JOIN_DOMAIN  değerine 1 verilir.

 Const AD = “ceyhun”

AD değerine ceyhun değeri  verilir.

 Nesne Tanımlamaları

Değişkenlerle birlikte WSH’dan bilgi almak ve işlemleri yaptırmak için ilgili nesneleri tanımlanması ve ilgili değişkenlere atanması gerekir. Bu işlem için genellikle Set deyimi kullanılır.

 Örneğin Active Directory’ye erişmek:

 GetObject(“LDAP://OU=deneme,dc=ceyhun.local,dc=com”)

 Lokal sisteme erişmek:

 GetObject(“WinNT://” & strComputer & “/Administrators”)

 Dosya sistemine erişmek:

 CreateObject (“Scripting.FileSystemObject”)

 Dosya işlemlerin örnek olarak, aşağıdaki script bir dosyayı siler.

 Dim fso

Set fso = CreateObject (“Scripting.FileSystemObject”)

Fso.deletefile (“c:\fc.dat”)

 Scriptleri Çalıştırmak

 Script’ler Windows ortamında çalışırlar. Masaüstünde çift tıklanarak ya da Start/Run ortamında çalıştırılabilirler.

 Script dosyalarının türleri:

 Batch Files (.BAT)

 Genelde bütün Windows versiyonları ve DOS ortamlarında çalışır. Logon Script dosyalar .BAT olarak hazırlanabilir.

 Command Files (.CMD)

Windows NT ile gelmiştir. 32-Bit Command Processor ister. .BAT ile hemen hemen aynıdır.

 Visual Basic Script (.VBS)

32-Bit Windows Command Processor ister. Windows ortamında çalışır.

 JAVA Script (.JS)

Genellikle Internet ortamında kullanılır.

 Scriptler komut satırından doğrudan ya da bir dosya olarak hazırlanıp çalıştırılabilir. Birkaç satırlık scriptler komut satırından doğrudan uygulanabilir. Uzun scriptler ise bir .VBS dosyası olarak oluşturulur.

 Bat dosyası:

Logon sırasında çalışmak üzere bir logon Script dosyası yaratılmışsa bu dosya server üzerinde belli bir yere konur:

basla.bat

 %systemroot%\SYSVOL\sysvol\domain_adı\scripts\ basla.bat

 Bu dosyada; örneğin içinde bir paylaşıma map yaratmak olabilir.

 NET USE Z: \\CEYHUN\CEYHUNDATA

Script konusuna kısa bir giriş yaptıktan sonra, bir sonraki makalemizde vbscript veri türleri ve vbscript operatörleri konularına değineceğiz.

Yazan : ceyhun çamlı \\ Etiketler: