Active Directory OU yapısı
Active Directory OU Yapılarını Dışa ve İçe Aktarma İşlemi
Active Directory’de Organizational Unit (OU) yapılarını dışa ve içe aktarmak, özellikle büyük ortamlarda zaman kazandıran önemli bir işlemdir. Tek tek OU oluşturma zahmetinden kurtulmak isteyenler için bu yöntem, test ortamlarında da kullanılabilir ve bir CSV dosyası olarak dışa aktarılan veriler, dilediğiniz zaman başka bir Domain Controller’a (DC) aktarılabilir. Bu yazıda, Active Directory OU aktarma (içe ve dışa) sürecini adım adım ele alacağız.
OU yapısını dışa aktarmak için öncelikle PowerShell’de New-ADOrganizationalUnit cmdlet’ini kullanmanız gerekir. Bu cmdlet, OU’ların isimlerini ve yollarını belirlemenize olanak tanır. Ancak, Get-ADOrganizationalUnit yolu belirleyemez; bunun yerine DistinguishedName ile işlem yapmanız gerekmektedir.
Bu konuda net bir kaynak bulmak için yaptığım araştırmalar sonucunda, çeşitli PowerShell parçalarını bir araya getirerek ihtiyaç duyduğum çözümü oluşturdum. Bu süreçte Regex (Düzenli İfadeler) kullanımını da öğrendim. Regex, nasıl kullanacağınızı bildiğinizde oldukça güçlü bir araçtır. Aşağıda, oluşturduğum iki farklı versiyonu bulabilirsiniz.
powershellKodu kopyala$OUs = Get-ADOrganizationalUnit -Filter * | select name, DistinguishedName, @{n=’OUPath’; e={$_.distinguishedName -replace '^.+?,',''}}, @{n=’OUNum’; e={([regex]::Matches($_.distinguishedName, “OU=”)).count}} | Sort OUNum | export-csv C:<Path_to_CSV>OUTree.csv -NoTypeInformation
Bu komut, OU adını etkili bir şekilde alır ve OU Adını dışa aktarırken ilk ‘,’ ile ayırır.
powershellKodu kopyala$OUs = Get-ADOrganizationalUnit -Filter * | select name, DistinguishedName, @{n=’OUPath’; e={$_.distinguishedName -replace '^.+?,(CN|OU|DC.+)','$1'}}, @{n=’OUNum’; e={([regex]::Matches($_.distinguishedName, “OU=” )).count}} | Sort OUNum | export-csv C:<Path_to_CSV>OUTree.csv -NoTypeInformation
Bu ikinci komut ise ilk ‘,’den sonraki her şeyi yakalar ve dizeyi o kısımla değiştirir. Her iki yöntem de benzer sonuçlar üretir ancak farklı Regex kullanımlarıdır.
Her iki komut da ‘OUNum’ adında bir özellik içerir. Bu özellik, DistinguishedName dizesinde ‘OU=’ öğesinin kaç kez göründüğünü sayar. OU’lar sıralı bir şekilde oluşturulmalıdır, böylece ana OU’lar alt OU’lardan önce oluşturulmuş olur. Bu işlem, OU’ları CSV’ye aktarmadan önce ‘katmanlara’ ayırır. Örneğin, kök dizindeki OU’lar 1, içindeki OU’lar 2 değerini alır.
Verileri dışa aktardıktan sonra, etki alanını değiştirmeniz gerekebilir. Başka bir etki alanına aktarıyorsanız, DistinguishedName öğelerini değiştirmek gerekecektir. Örneğin, bir metin düzenleyicide DC=lab,DC=local ifadesini DC=lab2,DC=local ile değiştirmek bu durumu çözecektir. Dilerseniz bu adımı dışa aktarmadan önce de gerçekleştirebilirsiniz.
Dışa aktardığınız CSV dosyasını başka bir DC’ye aktarmak için aşağıdaki komutu çalıştırabilirsiniz:
powershellKodu kopyala$OUs = import-csv C:<Path_to_CSV>OUTree.csv
ForEach ($OU in $OUs) {
New-ADOrganizationalUnit -Name $OU.Name -Path $OU.OUPath
}
Bu komut, CSV’deki OU’ları yeni DC’de yeniden oluşturacaktır.
Active Directory OU yapılarını dışa ve içe aktarma işlemi, zaman kazandıran ve yönetim süreçlerini kolaylaştıran bir yöntemdir. Powershell ve Regex kullanarak bu işlemi kolayca gerçekleştirebilir, aynı zamanda farklı etki alanlarına geçiş yaparken önemli verilerinizi koruyabilirsiniz.
Birçok kişi PowerShell komutları konusuna yalnızca “hangi komut ne işe yarar?” düzeyinde yaklaşır. Oysa profesyonel…
Kurumsal IT altyapılarında zamanla depolama ihtiyaçlarının artması, eski sunucuların performansının yetersiz kalması veya yeni mimariye…
NTFS Permission Tasarımı: AGDLP Modeli ile Kurumsal Yetkilendirme Rehberi Kurumsal ortamlarda NTFS permission tasarımı, dosya…
Kurumsal yapılarda Windows File Server güvenliği, veri bütünlüğü ve iş sürekliliği açısından kritik öneme sahiptir.…
Blockchain Log Bütünlüğü Bu yazımızda blockchain log bütünlüğü üzerine incelemelerde bulunacağız. Günümüz kurumsal sistemlerinde en…
A PowerShell SQL Server backup script is a practical way to standardize SQL backups across…
This website uses cookies.
Read More