Son bir kaç yılda izlenebileceği üzere Windows 7 ve Windows Server 2008 R2 devri başladığından beri PowerShell V2 ile beraber shell yapısının kullanım oranı da artmaya başladı. Özelikle Remoting ve scripting tarafındaki yenilikler yeni shell’i daha da cazip hale getirmeye başladı. Şimdi ki yazımızda Power Shell V2 ile Active Directory objelerinin yönetiminden bahsedeceğiz. İlerleyen yazılarımda Active Directory yapısının shell ile yönetimini daha detaylı olarak inceleyeceğim.
Test için Windows Server 2008 R2 Hyper-V platformunu kullandım.
Lab ortamımızda bulunan makinemiz;
Domain : nwtraders.msft
DC makine adı: testdc.nwtraders.msft
DC ip adresi : 10.11.27.245 /24
Active Directory Module for Windows Power Shell i açıyoruz. Burası AD modülü için ayrıca tasarlanmıştır. Tabi ki power shell’i de açarak AD modülünü import edip aynı alana ulaşabilirsiniz.
Resim-1
Öncelikle Get-Command komutu ile AD de yani AD modülünde neler yapabiliriz bir bakalım:
Resim-2
Output’dan gördüğümüz gibi çalıştırabileceğimiz komutlar “Name” kolonunda ve tanımında da “Definition” kolonunda açıklanmıştır.
Bir kaç örnek kullanımı inceleyelim.
Nwtraders.msft domainimize yeni bir computer objesi ekleyelim.
Resim-3
Komut tamamlandıktan sonar GUI’den bakacak olursak hesabın açıldığını görebiliriz.
Resim-4
Şimdi de bir pre-staging uygulaması yapalım. Domain’e katmak istediğiniz bilgisayarların “Computer Account” objelerini öncesinde uygun OU’lara yerleştirirseniz, domain’e dahil olduktan sonraki ilk açılışlarında GPO’larınız uygunlanmaya başlamış olur bu da eforunuzu düşürür.
Daha önceden bir notepad’e yazılmış computer isimlerini alıp AD içerisine objeleri oluşturalım. Amaç isimleri notepad’den almak olacaktır.
Test.txt dosyamız c:\ altında kök dizindedir ve içeriği aşağıdaki gibidir.
Resim-5
Şimdi de power shell de dosya içeriğini bir görüntüleyelim, dosya içeriğini shell’e alalım.
Resim-6
Import işleminden önce, content’i gözlemek olası bir sorunu öncesinden çözmek açısından iyi olabilir. Dolayısıyla hatalı bir computer objesi açmamış oluruz.
Sorun görünmediğine göre dosya içerisinde isimleri yazan computer account’larını AD içerisine oluşturalım.
Resim-7
Komut tamamlandı. GUI’den gözlersek sonuç aşağıdaki gibidir. Shell belki ilk bakışta karmaşık görünüyor olabilir ama temel seviyede algoritma bilgisi edinebilirsek , hemen script yazamasakta en azından yazılan hakkında fikir yürütebiliriz. Ve sadece shell ile ilgilenmek için bile bence scripting ile uğraşmak beyhude bir davranış değildir.
Resim-8
Burada çalıştırdığımız komutun yaptığı iş şu şekildedir. Txt dosyası içindeki her bir isim için, AD veritabanında bir computer objesi açacaktır. Burada döngüue giren komut, new-adcomputer komutudur.
Şimdi de txt dosyasından bilgilerini alarak oluşturduğumuz computer accountları için “location” attribute’u bilgisinin “Main Office” şeklinde doldurulmasını sağlayalım.
Resim-9
Mantığı aynı olmakla birlikte ikinci komutta sorunsuz çalışmıştır. GUI’den de sonuçlarına bakabiliriz.
Önce, ilk oluşturduğumuz computer için bakalım. Bu computer hesabını txt dosyasındaki content’i kullanarak açmamıştık! .
Resim-10
Nw-cli-5 için location bilgisi boş iken nw-cli-6 ‘nın, yani dosya içerisinden ismi çekilerek oluşturulan computer’un location bilgisinin dolu olduğunu görüyoruz.
Resim-11
Computers container’ında bulunan computer accountlarını listelemek için ise arama yapacağımız ldap yolunu belirterek Get-ADComputer komutunu kullanabiliriz.
Resim-12
Genel olarak computer objeleri için daha ayrıntılı bilgi almak istersek,
Resim-13
Listelediğimiz computer objelerini computers container‘i içerisinden “client computers” ou’su içerisine taşıyalım. Burada döngü içerisindeki komut Move-ADObject komutudur.
Resim-14
Ve yine GUI’den gözlemek istersek,
Resim-15
Sonuç resimdeki gibidir.
Computers container’ına da bakacak olursak oblelerin taşındığını görebiliyoruz.
Resim-16
Herhangi bir komut ya da AD modülündeki komutlar hakkında bilgi icin;
Resim-17
Yazı dizimizi okumaya devam edin bir sonraki powershell yazısında görüşmek dileğiyle…
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
Microsoft TechNet