PowerShell Script’leri için Görev Zamanlayıcıyı (Task Scheduler) Kullanmak
  1. Anasayfa
  2. Microsoft PowerShell

PowerShell Script’leri için Görev Zamanlayıcıyı (Task Scheduler) Kullanmak

1

Office 365, Exchange gibi ürün ve hizmetleri yönetirken, belli bir rutin dahilinde yaptığınız kontroller ve işlemler, çektiğiniz raporlar, sıklıkla çalıştırdığınız script’ler olması kaçınılmazdır. Windows Görev Zamanlayıcı (Task Scheduler) ile bunları otomatize etmek ve zamanlamak, hem teknik açıdan yönetimi kolaylaştırıp yapılan işi daha profesyonel hale getirir hem de zamandan ve efordan ciddi anlamda tasarruf sağlar. Bunlara ek olarak muhtemel kullanıcı hataları riskini minimize eder. Office 365’te lisans sayılarının takibi, işe yeni başlayan kullanıcılara lisans atanması, Exchange’de mailbox’ların boyut ve doluluk oranlarının raporlanması, ActiveSync log’larının çekilmesi gibi size, işinize, ekibinize, organizasyonunuza özgü gereksinimler doğrultusunda sayısız işlem için bu yönteme başvurabilirsiniz.

Aşağıda, zamanlanmış bir görev oluşturmak için takip edilmesi gereken adımları görebilirsiniz. Burada “C:\Scripts” klasörü altında bulunan “Get-O365LicenseReport.ps1” isimli bir script’i örnek olarak kullanıyorum.

1. Öncelikle yazdığınız script’in doğru ve istediğiniz şekilde çalıştığından emin olun. Bunun için yönetici olarak çalıştırıp açtığınız bir PowerShell penceresinde script’i basitçe test edin. İlgili modüller import ediliyor, doğru yetki seviyesindeki kullanıcılarla gerekli ortamlara bağlanılıyor (Exchange Online, MSOnline vb.) ve asıl işi yapan script kısmı da sorunsuz işliyorsa, yüksek olasılıkla zamanlanmış bir görev içinde de sorunsuz çalışacaktır.

2. Görev Zamanlayıcıyı (taskschd.msc) çalıştırın, üst şeritte “Action > Create Basic Task…” veya sağ menüdeki “Create Basic Task…” ile ilerleyerek bir “basic task” oluşturun.


Resim-1

3. Açılacak pencerede, “Create a Basic Task” aşamasında göreve anlaşılır bir isim verip tercihen bir açıklama girin. Next butonuna tıklayarak devam edin.


Resim-2

4. Bir sonraki “Task Trigger” aşamasında görevin çalışması için tercih ettiğiniz sıklığı ve zamanlamayı seçin. Yine Next ile ilerleyin.


Resim-3


Resim-4

5. “Action” aşamasında “Start a program” seçeneğini işaretleyerek devam edin.


Resim-5

6. Gelecek ekranda “Program/Script” alanına PowerShell.exe’nin konumunu girin:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

7. “Add arguments” alanına aşağıdaki metni, ‘script konumu’ bölümünde söz konusu script’in konumu olacak şekilde ve tırnak işaretlerine dikkat ederek girin:

-NonInteractive -WindowStyle Hidden -command “.’script konumu‘”

Örnek:

-NonInteractive -WindowStyle Hidden -command “.’C:\Scripts\Get-O365LicenseReport.ps1′”


Resim-6

8. Son aşamada “Open the Properties dialog for this task when I click Finish” kutucuğunu işaretledikten sonra Finish butonuna tıklayın. Ek ayarlamaları yapabilmek adına bu işlem önemlidir.


Resim-7

9. Açılacak yeni ekrandaki “General” sekmesinde “Run whether user is logged on or not” ve “Run with the highest privileges” seçeneklerini işaretleyin. Bunun da RBAC ve UAC açısından önemli olduğunu belirtmekte fayda var. Ek olarak, “Change User” butonuna tıklayarak, görevi çalıştırırken kullanılacak kullanıcıyı da değiştirebilirsiniz.


Resim-8

10. Aynı pencerede “Triggers” sekmesinde, görevin çalışma sıklığını değiştirebilir ve/veya yeni zamanlamalar ekleyebilirsiniz.


Resim-9

11. Tüm işlemler ve ayarların tamamlanmasının ardından OK butonuna bastığınızda, 9. adımda görevin çalıştırılması için belirttiğiniz kullanıcının oturum açma bilgilerinin isteneceği bir ekran gelecektir. Burada belirtilen kullanıcı yalnızca görevin yönetici olarak çalıştırılması için kullanılır. Script’in içindeki işlemler için ise gereken bağlantıları ve ilgili oturum açma bilgilerini yine script’te belirtmiş olmanız gerekir.


Resim-10

12- OK butonunu tıklayarak işlemleri tamamlayın.

 

Daha önce bahsettiğim üzere, script’in yapacağı işlemler için yine script’in içinde ilgili oturum açma bilgilerinin de kullanılması gerekir. Bu kısımlarda, bu bilgilerin güvenliğini ve şifrelenmesini sağlamak kritik önem arz eder. Script’e erişebilecek herhangi bir kullanıcının script’i açıp içindeki “admin” hesaplarının bilgilerini görebilmesini herhalde istemezsiniz. Bunun için faydalanılabilecek farklı yöntemler mevcut; en basitlerinden biri de ilgili bilgileri şifrelenmiş bir XML dosyasında tutmak ve script’in içinde gerektiği yerlerde o dosyadan çağırmak. Bunun için aşağıdaki işlemleri takip edebilirsiniz:

– PowerShell’de aşağıdaki komutu çalıştırın ve “prompt” geldiğinde script’in içinde kullanacağınız Office 365 Global Admin, Exchange Admin gibi ilgili kullanıcının bilgilerini girin. “-Path” parametresiyle birlikte ilgili XML dosyasının bulunmasını tercih ettiğiniz konumu ve dosya adını belirtebilirsiniz. Bu konumu, işlemleri yaptığınız cihaz, ona erişebilecek kullanıcılar, kullanıcıların yetkileri vb. faktörleri göz önünde bulundurarak ve gerekli izinleri de planlayarak belirlemeniz gerekir.

Get-Credential | Export-Clixml -Path ‘C:\Scripts\O365Cred.xml’

– Sonrasında dosyayı açarsanız kullanıcı adının göründüğünü, ancak parolanın şifrelendiğini teyit edebilirsiniz. Script’in içinde oturum açma bilgilerini aşağıdaki gibi çağırarak bir değişkene atayabilir ve o değişkeni gerekli bloklarda kullanabilirsiniz:

$cred = Import-Clixml -Path ‘C:\Scripts\O365Cred.xml’

 

Oluşturduğunuz görevlerin durumunu yine Görev Zamanlayıcı üzerinde, her bir görevin “History” bölümünde gözlemleyebilirsiniz. Olası sorunlar için Event Viewer‘da “Applications and Services Log > Microsoft > Windows > Task Scheduler > Operational” alanındaki olayları ve log’ları da takip edebilirsiniz.

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar
www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 12
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 1
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Burak Varol, İstanbul'da doğup büyümüş ve tüm eğitim hayatına aynı şehirde devam etmiştir. Bilişim sektöründeki profesyonel kariyeri boyunca Metis, Microsoft Türkiye, PeakUp gibi önemli organizasyonlarda, teknik destek mühendisliği, bilişim danışmanlığı, forum ve içerik moderatörlüğü, mentorluk, ekip liderliği gibi farklı görevlerde başarıyla bulunmuştur. Çoğunluğu mesajlaşma hizmetlerine yönelik olmak üzere farklı Microsoft ürün ve hizmetlerini konu alan pek çok projede aktif rol almıştır. Çalışma hayatına, 10'dan fazla ülkede faaliyet gösteren Coca-Cola İçecek'te (CCI), Kıdemli Bulut Danışmanı olarak devam etmektedir. Genel olarak tüm Microsoft teknolojileriyle ilgilenmekle birlikte, asıl uzmanlık alanı bulut teknolojileri ve Microsoft Office 365 evrenidir ve "MCSA: Office 365" gibi birçok sertifikaya sahiptir.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (1)

  1. İçinde şifre kullanılan bir görev ise scriptteki şifreyi almak için koda ekleme yaparak şifreyi diske yazması sağlanabilir bunu engellemek için scripte ekleme yapıldı mı kontrolü 2. Bir görev ile ya da monitör yapılan izleme araçları ile takip edilebilir.
    Ör :ps1 uzantılı dosyaların hash i değişmişse adminlere bildirim yapılması,değişen dosyalarda değişen kısmı diff ile farkını alıp maile eklemek ve gerçekten admin mi eklemiş ne eklemiş görebilmenin sağlanması çok faydalı olacaktır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir