PowerShell ile Active Directory ve Microsoft Entra ID Otomasyonu: Kurumsal Saha Rehberi

PowerShell Active Directory ve Microsoft Graph Otomasyonu
Sistem Yönetimi & Otomasyon

PowerShell ile Active Directory ve Microsoft Entra ID Otomasyonu: Kurumsal Saha Rehberi

Binlerce kullanıcının bulunduğu kurumsal çoklu domain (Multi-Domain Forest) ve bulut ortamlarında manuel işlemleri ortadan kaldıran PowerShell ve Microsoft Graph otomasyon mimarilerini inceliyoruz.

Büyük ölçekli kurumsal BT altyapılarında kullanıcı yaşam döngüsü (İşe giriş, departman/unvan değişikliği, yetki matrisi güncellemeleri ve işten ayrılış süreçleri) manuel olarak yönetilemeyecek kadar kritiktir. Tek bir kullanıcı için grafik arayüzden (GUI) 2 dakika süren bir işlem, binlerce çalışanı ve birden fazla Child Domain (Alt Etki Alanı) yapısını barındıran bir Active Directory Forest mimarisinde ciddi zaman kaybına ve insan hatalarına yol açar.

Bu rehberde, hem şirket içi Active Directory (RSAT / AD Module) hem de bulut tarafındaki Microsoft Entra ID (Graph PowerShell SDK) ortamlarında en sık ihtiyaç duyulan otomasyon senaryolarını ve mimari yaklaşımları ele alıyoruz.

1. Veri Kaynağı • İK Veritabanı / SAP • CSV / JSON Çıktıları • REST API Tetikleyicileri PS> Otomasyon Motoru ActiveDirectory Modülü + Global Catalog Sorguları Microsoft.Graph SDK + Hata Yakalama & Loglama 3. Hedef Dizinler AD Forest & Child Domains Microsoft Entra ID Exchange Online & Teams
Şekil 1: İK Veri Kaynağından Dizin Servislerine Uçtan Uca PowerShell Otomasyon Mimarisi

1. Çoklu Domain (Forest / Child Domain) Yapılarında Kullanıcı Güncelleme

Kurumsal yapılarda sıkça karşılaşılan senaryolardan biri, kullanıcıların farklı alt domainlerde (örneğin kurum.local, satis.kurum.local, uretim.kurum.local) yer almasıdır. Standart bir Get-ADUser sorgusu yalnızca çalıştırıldığı domain'e bakar ve diğer child domain'lerdeki kullanıcıları bulamaz.

Bu sorunu aşmak için sorgularımızı Global Catalog (Port 3268) üzerinden gerçekleştirmemiz ve güncellemeyi kullanıcının bulunduğu ilgili Domain Controller sunucusuna yönlendirmemiz gerekir:

# İK'dan gelen CSV dosyasını içe aktararak Forest genelinde Attribute güncelleme Import-Module ActiveDirectory $CsvData = Import-Csv -Path "C:\Scripts\IK_Guncel_Liste.csv" -Delimiter ";" $ForestGC = (Get-ADForest).RootDomain + ":3268" foreach ($Row in $CsvData) { try { # 1. Kullanıcıyı tüm Forest genelinde (Global Catalog) UPN veya Sicil No ile bul $ADUser = Get-ADUser -Filter "UserPrincipalName -eq '$($Row.UPN)'" -Server $ForestGC -Properties DistinguishedName if ($null -ne $ADUser) { # 2. Kullanıcının ait olduğu Child Domain'i DistinguishedName üzerinden tespit et $UserDomain = ($ADUser.DistinguishedName -split "," | Where-Object { $_ -like "DC=*" }) -join "." -replace "DC=", "" # 3. İlgili Domain Controller üzerinde departman ve unvan bilgilerini güncelle Set-ADUser -Identity $ADUser.DistinguishedName ` -Server $UserDomain ` -Title $Row.Title ` -Department $Row.Department ` -Company $Row.Company -ErrorAction Stop Write-Host "[BAŞARILI] $($Row.UPN) güncellendi ($UserDomain)" -ForegroundColor Green } } catch { Write-Warning "[HATA] $($Row.UPN) güncellenemedi: $($_.Exception.Message)" } }

2. Microsoft Graph PowerShell ile Entra ID Lisans ve Raporlama Otomasyonu

Bulut tarafında ise en önemli maliyet ve güvenlik kalemi, inaktif kullanıcıların tespiti ve lisans optimizasyonudur. Microsoft Graph API kullanarak son 90 gündür oturum açmayan kullanıcıları tespit etmek hem lisans maliyetlerini düşürür hem de saldırı yüzeyini daraltır.

# Microsoft Graph'a Raporlama ve Kullanıcı Okuma yetkileriyle bağlanma Connect-MgGraph -Scopes "User.Read.All", "AuditLog.Read.All" # Son 90 günün tarih sınırını belirle $ThresholdDate = (Get-Date).AddDays(-90) # Oturum açma aktivitesi (SignInActivity) ile birlikte kullanıcıları çek $Users = Get-MgUser -All -Property Id, DisplayName, UserPrincipalName, AccountEnabled, SignInActivity $InactiveUsers = $Users | Where-Object { $_.AccountEnabled -eq $true -and $_.SignInActivity.LastSignInDateTime -lt $ThresholdDate } # Sonuçları CSV olarak dışa

Yorumlar