Active Directory OU Aktarma (İçeri ve Dışarı)

3 Min Read
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.

Active Directory OU aktarma

OU Yapılarını Dışa Aktarma

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.

1. PowerShell Komutları

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.

OU Sayısı ve Sıralama

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.

Dışa Aktarılan Verilerle Etki Alanı Değişikliği

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.

OU Yapılarını İçe Aktarma

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.

Sonuç

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.

Bu makaleyi paylaş
Takip et:
Tolga CEYHAN, bilgi teknolojilerini severek takip eder ve BT üzerine hali hazırda aktif olarak çalışmaktadır. 2006 yılından 2017 yılına kadar web tasarım yazılım üzerine çalışmalar yaptım. Şuan ise Windows Sistem ve Sistem Güvenliği alanında çalışmalarımı sürdürmekteyim.
Yorum Yap

Bir yanıt yazın

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

Exit mobile version