System Center Orchestrator Kullanarak Domain Ortamında ki Eski Bilgisayar Hesaplarının Raporlanması
Merhaba,
Active Directory ortamlarında bilgisayarların domain den düşmesi görülebilen bir olaydır. Bunda bilgisayarın uzun süre (30 günden fazla) domain controller ile iletişime geçmemesi sonucunda domain controller ilgili bilgisayara artık güvenmediği için etki alanında oturum açtırmayacaktır. Bu durumda da bilgisayarın domain den çıkarılıp yeniden alınması gerekmektedir. Bu makalemde sizlere Orchestrator kullanarak domain de uzun süre oturum açmammış bilgisayarların listesini 90 günde bir otomatik olarak almayı ve e-mail ile iletilmesini anlatmaya çalışacağım.
Öncelikle Orchestrator sunucusu üzerinde Active Directory komutlarını çalıştıracağımız için sunucu üzerine Sever Manager konsolunda ManageàAdd Roles and Features yolunu izlereyek Features altında bulunan Role Administration Toolsà AD DS and AD LDS Tools—> Active Directory Module fow WindowsPowerShell seçeneğini seçerek Active Directory PowerShell eklentisini kuralım.
Orchestrator sunucusu üzerinde Runbook Designer ı açalım ve yeni bir runbook oluşturup ismini Eski Bilgisayarları Bul olarak verelim. Ardından Activitiesà System altında bulunan Run .Net Script aktivitesini runbook içerisine sürükleyip bırakalım.
Not: Çalıştıracağımız script bir html dosyası oluşturacaktır. Bu dosyanın oluşturulacağı yeri önceden belirlemeniz gerekmektedir. Ben orchestrator sunucusu üzerinde Test isimli bir klasör oluşturdum ve script içerisinde dosyasını burada oluşturulmasını sağladım.
Eklediğimiz aktiviteyi çift tıklayarak açalım. Language Type bölümünde Powershell i seçelim. Script bölümüne aşağıda ki script i yapıştıralım.
powershell{
$layout = “<style>”
$layout = $layout + “BODY{background-color:White;}”
$layout = $layout + “TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}”
$layout = $layout + “TH{border-width: 1px;padding: 5px;border-style: solid;border-color: black;background-color:LightGrey}”
$layout = $layout + “TD{border-width: 1px;padding: 5px;border-style: solid;border-color: black;background-color:ForalWhite}”
$layout = $layout + “</style>”
$d = [DateTime]::Today.AddDays(-90)
$stale = Get-ADComputer -Filter ‘PasswordLastSet -le $d’ -SearchBase “DC=mhclabs,DC=com” -properties PasswordLastSet
$liststale = $stale | Sort Name | ConvertTo-HTML -Head $layout Name, DistinguishedName, PasswordLastSet -Body “<H2>Aşağıda ki bilgisayarları 90 gündür domain ile iletişim kurmadı:</H2>” | Out-File \\srv-sco\C$\Test\Kullanılmayan_Bilgisayarlar.html}
Not: SearchBase bölümünü kendi domain adınıza göre düzenlemeniz gerekmektedir.
Not: Eğer 90 günden farklı bir gün sayısı belirlemek istiyorsanız $d = [DateTime]::Today.AddDays(-90) ifadesinde ki 90 değerini değiştirmeniz yeterli olacaktır.
Yukarıda ki aktivitemizi Finish diyerek kapatalım. Aktivitelerin tarih formatları US e göredir. Biz bu formatı değiştirmek istiyoruz. Bu işlemi yapmak için Activitesà Utilities altında bulunan Format Date/Time aktivitesini sürükleyip runbook içerisine bırakalım ve Run .Net Scirpt aktivitesi ile Format Date/Time aktivitelerini bağlayalım.
Format Date/Time aktivitesine çift tıklayalım (ben adını Tarihi Düzenle olarak değiştirdim) ve açılan pencerede Input Date/Time bölümüne sağ tıklayalım. Açılan menüden Subscribeà Published Data seçeneğine tıklayalım. Karşımıza gelen ekranda Activity bölümünde Run .Net Script seçili iken alt bölümde bulunan Show Common Published Data seçeneğine tıklayalım. Karşımıza gelen kalabalık listeden Activity end time seçeneğini seçelim ve Ok e tıklayalım. Böylece script in çalışma tarihini gün olarak almış olacağız.
Output Format kısmını da dd-MM-yyyy olarak düzenleyelim. Aktivitenin son hali aşağıda ki gibi olacaktır.
Finish diyerek yukarıda ki ekranı kapatalım. Şimdi script ile oluşturduğumuz html dosyasını mail yolu ile iletme kısmına geldik. Bunun için Activities altında bulunan Exchange Userà Create and Send E-mail aktivitesini runbook içerisine sürükleyip bırakalım.
Not: Eğer Exchange bağlantı bilgilerimiz yok ise öncelikle bunun Runbook Designer konsolunda Options–> Exchange Admin yolunu takip ederek oluşturulması gerekmekte.
Aktiviteyi çift tıklayarak açalım ve Configuration bölümünden Exchange bağlantımızı seçelim. Configuration bölümünü belirledikten sonra alt tarafta bulunan Optional Properties e tıklayalım ve açılan pencerenin sol bölümünden Attachments ve Sender özelliklerini sağ tarafa (Selected bölümü) aktaralım ve Ok diyerek pencereyi kapatalım. Böylece script sonucu elde ettiğimiz dosyayı ek olarak maile koyabileceğiz. Sender özelliğini isterseniz eklemeyebilirsiniz. Ancak ben kurumsal olması açısından örneğin yardimmasasi@mhclabs.com şeklinde bir hesap oluşturup maillerin buradan gelmesini daha uygun bulduğumdan bu yöntemi kullanıyorum.
From kısmına mailin kime ya da hangi gruba gitmesini istiyorsak onun bilgilerini yazalım. Subject bölümüne ise anlamlı bir ifade yazalım. Body bölümünü ise ben aşağıda ki şekilde belirledim. Burada dikkat ederseniz Format Date/Time aktivitesinde düzenlemiş olduğumuz tarihi kullanıyorum.
Attachments bölümünde ise script sonucu dosya nerede oluşturuluyor ise ilgili klasör dahil dosyanın yolunu yazıyoruz. Örneğin, C:\Test\Kullanılmayan_Bilgisayarlar.html gibi. Bu işlemlerin ardından aktivitemizin son şekli aşağıda ki gibi olacaktır.
Finish diyerek yukarıda ki ekranı da kapatalım ve Runbook u Check-In diyerek kayıt edelim. Runbook muzun son hali aşağıda ki şekilde olacaktır.
Şimdi sıra oluşturmuş olduğumuz bu Runbook u nasıl çalıştıracağımıza geldi. Normal de Runbook için Activitiesà Scheduling altında bulunan Monitor Date/Time aktivitesi ile her 90 gün olduğunda çalış diyebiliriz. Ancak burada Orchestrator limitasyonu ile karşılaşıyoruz. Monitor Date/Time aktivitesi ile en fazla 48 günlük bir Monitor işlemi gerçekleştirilebilmektedir. Eğer bu aktiviteyi kullanabilseydik sadece bir rapor için runbook sürekli çalışır durumda olacaktı ki bu da Orchestrator sunucusunda gereksiz kaynak tüketimine neden olacaktı. Bu nedenle eski usül Windows Task Schedular ı kullanacağız. Ancak bunun için ufak bir programcığa ihtiyacımız var. Komut satırından runbook çalıştırabilmemizi sağlayan SCO Jub Runner isimli bu uygulamaya http://orchestrator.codeplex.com/releases/view/87873 adresinden ulaşabilirsiniz. Sco Job Runner ı bir klasör içerisine açalım (Örneğin ben C:\Test\ScoJobRunner klasörü gibi). Oluşturacağımız görev de Sco Job Runner ın bulunduğu klasör içerisinde çalıştıracağız.
Task Scheduler konsolu üzerinden yeni bir Task oluşturmak için Actions altında ki Create Task linkine tıklayalım. Açılan pencerede Name bölümüne makul bir isim verelim, Security Options bölümünde Change User or Group seçeneğine tıklayarak bu task i çalıştıracak kullanıcıyı belirleyelim ve alt bölümde bulunan “Run whether user is logged on or not” seçeneğini seçelim.
Ardından Triggers sekmesine geçelim ve New seçeneğine tıklayalım. Açılan ekranda ben Monthly seçeneğini seçip 90 günde bir çalışmasını istediğim için ilgili ayları seçtim.
Not: En altta bulunan Enabled seçeneğinin işaretli olduğundan emin olalım.
Bu işlemlerin ardından Actions sekmesine geçelim ve New seçeneğine tıklayalım. Karşımıza gelen ekranda Program/Script bölümüne Sco Job Runner uygulamasının bulunduğu klasörü yazalım. Ben C:\Test\ScoJobRunner şeklinde belirttim. Son olarak Add arguments bölümüne komut setini yazmamız gerekmektedir. Sco Job Runner aşağıda ki gibi bir komut setini ek olarak beklemektedir.
ScoJobRunner.exe –RunbookPath:“Orchestrator içerisinde Runbook un bulunduğu klasörün yolu”
Benim sistemimde çalıştırılacak runbook aşağıda ki koyu ile belirtilen bölümde bulunmaktadır.
-RunbookPath:“\MHC LABS\Active Directory\Bilgisayar İşlemleri\Eski Bilgisayarları Bul”
Sco Job runner uygulamasının yolunu ve runbook yolunu yazdıktan sonra OK diyerek pencereyi kapatabiliriz.
İşlemleri tamamladığımıza göre OK diyerek Create Task penceresini kapatabiliriz. Ok e tıkladığımızda bizden ilk ekranda belirlemiş olduğumuz ve task i çalıştıracak olan kullanıcının parolası istenecektir.
Parolayı girdikten sonra deneme amaçlı olarak sağ tıklayalım ve Run diyelim. Task çalıştırıldığında runbook içerisinde belirlemiş olduğumuz mail adresine raporumuz gelecektir. Rapor aşağıda ki gibi gözükecektir.
Bundan böyle belirlenen zamanlarda görev çalıştırılacak ve rapor otomatik olarak oluşturulup mail adresine gönderilecektir.
Bu makalemde sizlere Orchestrator kullanarak domain de uzun süre oturum açmammış bilgisayarların listesini 90 günde bir otomatik olarak almayı ve e-mail ile iletilmesini anlatmaya çalıştım.
Faydalı olması dileğiyle…