PowerShell

PowerShell ile GPO Yönetimi

Saha notu / teknik rehber Son kontrol 29 Ekim 2026 Konu merkezine dön →
Tolga CEYHAN Sistem Yönetimi & IT

PowerShell ile Group Policy yönetimi; GPO envanteri çıkarma, raporlama, yedekleme, geri yükleme, yeni GPO oluşturma ve OU bağlantılarını otomatikleştirme işlemlerini tekrar edilebilir hale getirir. Özellikle çok sayıda GPO bulunan Active Directory ortamlarında komut tabanlı yönetim hem denetlenebilirliği hem de standardizasyonu artırır.

Amaç ve Kapsam

Bu rehberde GroupPolicy PowerShell modülüyle GPO’ları listeleme, raporlama, yedekleme, restore/import, yeni GPO oluşturma, link ekleme ve temel doğrulama adımlarını ele alıyorum.

Ön Koşullar

  • Active Directory ve Group Policy temel bilgisi
  • GPMC veya RSAT Group Policy Management bileşenleri
  • İlgili GPO’ları okuyacak veya değiştirecek yetki
  • Yedekleme ve raporlar için güvenli bir dosya yolu
  • Üretim değişikliklerinden önce test GPO’su veya lab ortamı

GroupPolicy Modülünü Kontrol Etme

Get-Module -ListAvailable GroupPolicy

Modül yüklüyse gerektiğinde doğrudan içe aktarabilirsiniz:

Import-Module GroupPolicy

Windows Server üzerinde GPMC bileşenini eklemek gerektiğinde:

Install-WindowsFeature GPMC

GPO Envanteri Çıkarma

Tüm GPO’ları listelemek için:

Get-GPO -All

Daha kullanışlı bir envanter çıktısı:

Get-GPO -All |
    Select-Object DisplayName, Id, GpoStatus, CreationTime, ModificationTime |
    Sort-Object DisplayName

Belirli bir GPO’yu görüntülemek için:

Get-GPO -Name 'Default Domain Policy'

GPO Raporu Oluşturma

Bir GPO’yu HTML olarak raporlamak:

Get-GPOReport `
    -Name 'Default Domain Policy' `
    -ReportType Html `
    -Path 'C:\Reports\DefaultDomainPolicy.html'

Tüm GPO’lar için XML raporu üretmek:

Get-GPOReport `
    -All `
    -ReportType Xml `
    -Path 'C:\Reports\All-GPOs.xml'

Bu raporlar ayar karşılaştırma, değişiklik öncesi kayıt ve denetim süreçlerinde oldukça kullanışlıdır.

GPO Yedekleme

Tüm GPO’ları yedeklemek için:

$BackupPath = 'C:\GPO-Backups'

New-Item -Path $BackupPath -ItemType Directory -Force | Out-Null
Backup-GPO -All -Path $BackupPath

Tek bir GPO için:

Backup-GPO `
    -Name 'Password Policy' `
    -Path 'C:\GPO-Backups'

Otomatik GPO Yedekleme

$Root = 'C:\GPO-Backups'
$Date = Get-Date -Format 'yyyyMMdd-HHmm'
$BackupPath = Join-Path $Root $Date

New-Item -Path $BackupPath -ItemType Directory -Force | Out-Null

Backup-GPO -All -Path $BackupPath |
    Select-Object DisplayName, Id, BackupId, CreationTime |
    Export-Csv (Join-Path $BackupPath 'backup-index.csv') -NoTypeInformation -Encoding UTF8

Bu script Task Scheduler üzerinden çalıştırılabilir. Ancak yedek klasörünün erişim izinleri, retention süresi ve yedeklerin gerçekten okunabilir olduğu düzenli olarak kontrol edilmelidir.

Restore ve Import Arasındaki Fark

Restore-GPO, daha önce yedeklenmiş bir GPO’yu aynı domain içinde geri yüklemek için kullanılır:

Restore-GPO `
    -Name 'Password Policy' `
    -Path 'C:\GPO-Backups'

Import-GPO ise bir yedekteki ayarları mevcut veya yeni bir hedef GPO’ya aktarmak için kullanılır. Yeni bir hedef GPO oluşturup ayarları içe aktarmak için:

New-GPO -Name 'Password Policy - Test'

Import-GPO `
    -BackupGpoName 'Password Policy' `
    -TargetName 'Password Policy - Test' `
    -Path 'C:\GPO-Backups'

Üretimde doğrudan kritik GPO üzerine restore/import yapmak yerine önce test hedefinde doğrulama yapmak daha güvenlidir.

Yeni GPO Oluşturma ve OU’ya Bağlama

New-GPO `
    -Name 'Server Baseline' `
    -Comment 'Windows Server temel politika seti'

Örnek bir OU bağlantısı:

New-GPLink `
    -Name 'Server Baseline' `
    -Target 'OU=Servers,DC=example,DC=local' `
    -LinkEnabled Yes

Gerçek domain veya OU bilgilerini genel script örneklerinde sabitlemek yerine değişken veya placeholder kullanmak daha uygundur.

Registry Tabanlı Policy Değeri Yazma

Set-GPRegistryValue `
    -Name 'Server Baseline' `
    -Key 'HKLM\SOFTWARE\Policies\Contoso\Baseline' `
    -ValueName 'Enabled' `
    -Type DWord `
    -Value 1

Registry policy yazarken ilgili ürün veya Windows bileşeninin desteklediği policy path ve value yapısını doğrulamadan rastgele registry anahtarı üretmeyin.

Doğrulama

GPO değişikliği sonrasında istemci üzerinde yalnızca gpupdate /force çalıştırmak yerine uygulanmış politikayı da kontrol edin:

gpupdate /force
gpresult /h C:\Temp\gpresult.html

GPMC üzerindeki Group Policy Results veya RSOP görünümü de kapsam, link sırası, Security Filtering ve inheritance problemlerini analiz etmek için kullanılabilir.

Troubleshooting

GPO listede var ama uygulanmıyor

  • GPO linkinin doğru site, domain veya OU üzerinde olduğunu kontrol edin.
  • Security Filtering ve WMI Filter kapsamını inceleyin.
  • Block Inheritance veya Enforced kullanımını kontrol edin.
  • İstemcide gpresult ile gerçekten uygulanan politikaları görün.
  • Domain Controller replikasyon sağlığını kontrol edin.

Import veya restore beklenen sonucu vermiyor

Yedek adını, BackupId bilgisini ve hedef GPO’yu doğrulayın. Migration table gerektiren security principal, UNC path veya domain-specific referanslar varsa ayrıca ele alınmalıdır.

Güvenlik ve Best Practice

  • Kritik GPO değişikliklerinden önce yedek alın.
  • Default Domain Policy ve Default Domain Controllers Policy üzerinde gereksiz özelleştirme yapmaktan kaçının.
  • Politikaları işlev bazlı küçük GPO’lara ayırmak troubleshooting’i kolaylaştırır.
  • GPO link, scope ve delegation değişikliklerini dokümante edin.
  • Backup klasörlerini yalnızca yetkili yöneticilerin erişebildiği konumlarda saklayın.
  • Otomasyon scriptlerine gerçek domain, kullanıcı, parola veya gizli altyapı bilgileri gömmeyin.

Sonuç

PowerShell ile GPO yönetimi, Group Policy operasyonlarını daha tekrar edilebilir ve denetlenebilir hale getirir. En büyük kazanım tek tek GUI adımlarını hızlandırmak değil; envanter, yedekleme, raporlama ve değişiklik süreçlerini standart bir operasyon modeline dönüştürmektir.

İlgili Rehberler

Microsoft Dokümantasyonu

GPO Sorun Giderme

Yapılandırma doğru göründüğü halde policy uygulanmıyorsa GPO Uygulanmıyor troubleshooting rehberi ile scope, filtering, RSoP, DNS/DC Locator ve SYSVOL kontrollerini sırayla uygulayın. Operasyon sırası için SysAdmin Playbooks bölümünü kullanabilirsiniz.

PowerShell Operasyon Merkezi

Temel cmdlet, pipeline, filtreleme ve raporlama yaklaşımı için PowerShell Komutları ana referansına; hızlı hazır komutlar için Komut Kütüphanesi bölümüne geçebilirsiniz. Tekrarlanan işlemleri script haline getirirken PowerShell Script Nedir ve Nasıl Yazılır? rehberini kullanabilirsiniz.

Komutları Çalıştırmadan Önce

Rapor ve yedek komutlarından önce hedef klasörleri oluşturun: New-Item -ItemType Directory -Path 'C:\Reports','C:\GPO-Backups','C:\Temp' -Force. Restore-GPO ve Import-GPO üretim politikalarını değiştirebilir; yedek kimliği, hedef GPO ve değişiklik onayını kontrol edin. Registry tabanlı policy örneği yalnızca örnektir; gerçek Windows güvenlik ayarı yerine kullanılmamalıdır.

PROFESYONEL PROFİL

Bu teknik içeriğin arkasındaki deneyimi inceleyin.

Microsoft altyapıları, Active Directory, SCCM, PowerShell, Windows Server ve VMware odaklı teknik profil ve proje çalışmaları.

Projeler & Vaka Çalışmalarıİngilizce Profil

Bir yanıt yazın

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