Kullanıcı Oturum Açma/Kapama (Logon/Logoff) ve Sistem Başlatma/Kapatma (Startup/Shutdown) Görevleri için GPO Komut Dosyalarını Yapılandırma
Grup İlkesi Nesneleri (GPO’lar) Windows Server‘da ve Active Directory ortamlarında sistem yöneticilerin tekrarlanan görevleri otomatikleştirmesine ve kuralları birden fazla sistem genelinde uygulamasına olanak tanıyan güçlü bir özelliktir.
GPO’ların temel kullanımlarından biri, komut dosyalarını kullanıcı Oturum Açma/Kapama (Logon/Logoff) veya Sistem Başlatma/Kapatma (Startup/Shutdown) gibi belirli olaylarda çalıştırmaktır. Burada kullanılan komut dosyaları baştan aşağıya tüm sistemyönetilmesine yardımcı olarak zamandan tasarruf sağlar ve tüm sistem üzerinde tutarlılık sağlar.
GPO’lar ile birçok işlem yapılabilmesinin yanında belirli olaylar sırasında yazılan komut dosyalarının çalıştırılmasına olanak sağlar. Bugün ele alacağımız olay Logon/Logoff ve Startup/Shutdown scriptlerdir.
- Logon/Logoff scripts: Burada tanımlanan komut dosyaları, bir kullanıcı hesabında oturum açtığında veya oturumu kapattığında yürütülür. Ağ sürücülerini eşlemek, yazıcıları yapılandırmak veya ortam değişkenlerini ayarlamak gibi kullanıcıya özel görevler için idealdirler. Bazı durumlarda kullanıcının sistemini kapatmasına gerek kalmadan komut dosyası çalıştırmak için kullanırız.
- Startup/Shutdown scripts: Burada tanımlı komut dosyaları, bilgisayarın açılması veya kapanması esnasında çalıştırılır. Sistem seviyesindeki işlemler için daha uygundur.
Logon/Logoff – Startup/Shutdown GPO’larda kullanılan komut dosyaları
- Batch files (.bat): Komut isteminde yürütülecek komutları içeren basit metin dosyaları.
- PowerShell scripts (.ps1): sağlam işlevsellik ve otomasyon sunan gelişmiş betikler. Powershell komutları sistemler üzerinde çok fazla işlem yapma yeteneğine sahiptir. Günümüzde sistem yöneticileri tarafından sıklıkla tercih edilmektedir.
- Visual Basic scripts (.vbs): Windows görevlerini otomatikleştirmek için kullanılan. Visual Basic komutları ile yazılan görece eski komut dosyaları.
GPO komut dosyalarının önemli bir yararı tutarlılığı uygulama yeteneğidir. GPO’lar aracılığıyla komut dosyaları uygulayarak kullanıcıların ve sistemlerin aynı yapılandırmaları almasını sağlarsınız. Böylece hataları ve manuel müdahaleleri azaltırsınız.
Ancak çalışan canlı sistemlerinde herhangi bir soruna sebep olmamak adına. Bu komut dosyalarını sistem genelinde yayınlamadan önce mutlaka test etmek gerekir.
Adım adım GPO ile bir startup scripts nasıl tanımlama.
- Server Manager > Tools > Group Policy Management mmc consolunu açalım. GPO’nun tüm domain üzerinde aktif olmasını istediğimiz için Domaini seçip. Pop-up menüden “Create a GPO in this domain, and Link it here…” seçiyoruz.
2. Açılan “New GPO” penceresinde GPO için bir isim tanımlayıp nesnemizi oluşturuyoruz.
3. Ardından listeye eklenen yeni GPO üzerine seçip. Sağ tıklayıp açılan Pop-up menüden “Edit” seçeneğini seçip GPO nesnemizi düzenleme modunda açıyorum.
4. Açılan pencerede GPO çalışmasını istediğimiz duruma göre (Windows Startup/Shutdown veya User Logon/Logoff). Klasör yapısından seçip “Properties” penceresini açıp devam ediyorum.
5. “Properties” penceresinde GPO içerisinde çalıştırmak istediğimiz komut dosyasının türüne göre .bat ve .vbs için “Scripts” .ps1 için “PowerShell Scripts” tabından işlemlerimizi yapacağız. Kullanacağım komut dosyası bir PowerShell scripts dosyası olduğu için “PowerShell Scripts” tabından işlemlere devam edeceğim. Diğer uzantılı dosyalar içinde işlemler aynı.
“Add…” butonuna tıklayarak “Add a Script” penceresinden “Browse…” butonuna tıklayıp açılan penceredeki konuma önce daha önce hazırladığım *.ps1 dosyasını kopyalıyorum. Bu kısım önem arz etmekte scripts dosyasının bulunduğu klasör GPO uygulanacak cihazların okuma yetkisi olan bir paylaşım alanı içerisinde yer almalıdır. Hazırladığımız GPO uygulayacak olan cihazlar komut dosyamızı bu konumdan okuyup işletecekler erişim ve yetki gibi detaylarla uğraşmamak adı “Browse…” butonuna tıkladığımızda açılan path (Dosya yolu) gerekli izinleri barındırdığı için ek bir işlem yapmaya ihtiyaç duymamaktayız. Sadece komut dosyamızı bu path’e kopyalayıp ardından seçerek GPO tanımlama işlemimizi bitirmekteyiz.
Bu GPO içerisine ben aynı adımları izleyerek User seviyesinde “Logon Script” te tanımlayarak kullanıcının cihazını kapatıp açmasını beklemeden “Logon” yapması sırasında da komut dosyamı çalıştırmasını istiyorum. Keza dosyamın içeriği ve yaptığı işlemler bu durum için olumsuzluk oluşturmamakta.
GPO tanımlama işlemlerimizi bitirdikten sonra tanımladığımız GPO’nun kapsam içerisindeki cihazlara uygulanıp uygulanmadığı kontrol etmeye. Çoğu durumda uygulanan GPO sonuçlarını direkt olarak görmek mümkün olmaya biliyor. Bu sebeple cihaz üzerinde command consol üzerinde “gpresult /r “ komutu cihaz üzerinde etkili olan Computer ve User GPOlarını raporlayabiliyoruz. User üzerindeki GPO’ları raporlamak için oturum açılan kullanıcının yetkisi yeterli iken. Computer seviyesindeki GPO’ları raporlayabilmek için Command Console un Admin yetkisi ile açılmış olması gerekmektedir. Ayrıca varsayılan ayarlarda Domain üzerinde tanımlanan GPO’lar Domaine üye cihazlarda bir kullanıcı oturum açtığında ve peryodik olarak yenilenir. Varsayılan olarak bu periyodik yenileme, 30 dakikaya kadar rastgele bir aralıkla her 90 dakikada bir gerçekleştirilir. Bu sebeple elle bu yenilemeyi tetiklemek için “gpupdate /force” komutu kullanabiliriz. Bizde önce yenilemeyi elle tetikleyip. Ardından GPO raporunu alarak yazmış olduğumuz GPO’nun cihazımıza eklenip eklenmediğini kontrol edeceğiz. Şayet başarılı ise (Starup veya Logon işlemi) .ps1 dosyamız cihazımız üzerinde çalışacaktır.
6. GPO sonucunu görmek için command consol’u Administrator yetkisi ile açıp ilgili komutları sıra ile çalıştırıyorum.
Ekran görüntülerinde de görüldüğü üzere yazmış olduğumuz GPO’muz Computer ve User seviyesinde cihazımızda uygulanmakta. GPO’muz çalıştığı cihaz üzerinde tanımlamış olduğumuz .ps1 komut dosyamız işletilecek ve gerekli işlemleri yapacak.