PowerShell ile Kuruluş Birimlerini Yönetme ve Nesnelerini Taşıma


Bir kuruluş birimi (OU), Active Directory'de kullanıcıların, grupların ve bilgisayarların yanı sıra diğer OU'ların da depolanabileceği bir kapsayıcıdır. Her AD alanının kendi organizasyonel birim hiyerarşisi olabilir.

Bu makalede, kuruluş birimi yönetimini ve AD'de kuruluş birimlerini oluşturmak, taşımak ve silmek için PowerShell komut dosyalarının nasıl kullanılacağını öğreneceksiniz; bir Grup İlkesini bir kuruluş birimine bağlamak; ve bilgisayar ve kullanıcı hesaplarını başka bir kuruluş birimine taşıyın.

PowerShell ISE, PowerShell komut dosyalarıyla çalışmak için en iyi araçtır. “Windows+R” tuşlarına basarak ve Çalıştır penceresine “runas /profile /user:Administrator PowerShell_ISE” yazarak PowerShell ISE aracını yönetici ayrıcalıklarıyla başlatın. İstendiğinde yönetici şifresini yazın. Alternatif olarak PowerShell ISE simgesine sağ tıklayıp “Yönetici olarak çalıştır” seçeneğini seçebilirsiniz.

AD ve nesneleriyle çalışmak için Windows PowerShell için Active Directory modülünü içe aktarmanız gerekir. Microsoft Windows Server 2008 R2'de aşağıdaki komutu çalıştırarak bu modülü etkinleştirmeniz gerekir:

Import-Module ActiveDirectory

Microsoft Windows Server 2012 ve sonraki sürümlerde bu modül varsayılan olarak etkindir.

PowerShell ile Active Directory Etki Alanında kuruluş birimleri oluşturma

New-ADOrganizationalUnit cmdlet'ini kullanarak ve yeni bir kuruluş birimi nesnesinin adını belirterek Active Directory'de yeni bir kuruluş birimi oluşturabilirsiniz. Varsayılan olarak PowerShell, etki alanı kökünde kuruluş birimini oluşturur. Aşağıdaki komut DC'de “Bölgeler” adında bir OU oluşturacaktır:

New-ADOrganizationalUnit “Regions”

Farklı bir kuruluş birimi LDAP yoluna ihtiyacınız varsa -Path cmdlet parametresini kullanarak ayırt edici adını belirtin:

New-ADOrganizationalUnit “Regions” –Path “OU=Managers,DC=Enterprise,DC=com”

Bir kuruluş birimini başka bir LDAP Adresine Taşıma

Bir kuruluş birimini başka bir konuma taşımanız gerekiyorsa Move-ADObject cmdlet'ini kullanın. Hedef kuruluş biriminin yanlışlıkla silinmeye karşı korunmaması gerektiğini unutmayın. Öyleyse, bu korumayı kaldırmak için bu komutu kullanın:

Set-ADOrganizationalUnit -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -ProtectedFromAccidentalDeletion $False

Artık kuruluş birimini başka bir konuma taşıyabilirsiniz:

Move-ADObject -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -TargetPath "OU=IT,DC=Enterprise,DC=Com"

Bir kuruluş birimini yeniden adlandırın

Bir kuruluş birimini yeniden adlandırmak için Rename-ADObject cmdlet'ini kullanın. -Identity parametresi, yeniden adlandırılacak Active Directory nesnesini belirtir ve onun ayırt edici adını (DN) veya GUID'sini gerektirir.

Bu komut "Bölgeler" kuruluş birimini "Bölgeler" olarak yeniden adlandırır:

Rename-ADObject -Identity "OU=Regions,OU=IT,DC=enterprise,DC=COM" -NewName Districts

Alternatif olarak, Get-ADOrganizationalUnit cmdlet'ini -Filter parametresiyle birlikte kullanabilirsiniz; OU'ya giden LDAP yolunun tamamını gerektirmez. Ancak bu cmdlet tüm AD'yi arayacak ve eylem, adlarında arama terimini içeren tüm kuruluş birimlerine uygulanacaktır:

Get-ADOrganizationalUnit -Filter "Name -eq 'Regions'" | Rename-ADObject -NewName Countries

Bir kuruluş birimine Grup İlkesi uygulama

Bir kuruluş birimine Grup İlkesi atamak için, temel olarak belirtilen Grup İlkesi nesnesi (GPO) ile kuruluş birimi arasında bağlantı oluşturan New-GPLink cmdlet'ini kullanın. Bağlantı için aşağıdaki özelliklerden herhangi birini belirtebilirsiniz:

  • Etkin — Bağlantı etkinleştirilirse, site, etki alanı veya kuruluş birimi için Grup İlkesi işlendiğinde GPO'nun ayarları uygulanır.
  • Zorunlu — Bağlantı zorunlu kılınırsa daha düşük düzeydeki bir kapsayıcıda engellenemez.
  • Sıra — Sıra, GPO ayarlarının önceliğini belirtir.

Aşağıdaki komut, "Yazılımı Engelle" GPO'sunu, bağlantının hem etkin hem de zorunlu olduğu "Bölgeler" OU'suna bağlar:

New-GPLink -Name "Block Software" -Target "OU=Districts,OU=IT,dc=enterprise,dc=com" -LinkEnabled Yes -Enforced Yes

Bilgisayarları ve Kullanıcıları Yeni Bir Kuruluş Birimine Taşıyın

Bir kuruluş birimi oluşturup isteğe bağlı olarak bir GPO'ya bağladıktan sonra, onu kullanıcılar ve bilgisayarlarla doldurmanın zamanı gelmiştir. PowerShell Move-ADObject cmdlet'i herhangi bir nesneyi veya nesne kümesini (kullanıcı, bilgisayar, grup veya başka bir kuruluş birimi gibi) farklı bir kuruluş birimine taşır. -Identity parametresi hangi Active Directory nesnesinin veya kapsayıcısının taşınacağını belirtir. Nesnenin tam LDAP yolunu veya SID'sini girmeniz gerektiğini unutmayın; SamAccountName'i kullanamazsınız. Aşağıdaki örnek, bir kullanıcının (John Brown) "Bölgeler" kuruluş birimine nasıl taşınacağını gösterir:

Move-ADObject -Identity "CN=John Brown,CN=Users,DC=enterprise,DC=com" -TargetPath "OU=Districts,OU=IT,DC=Enterprise,DC=Com"

Bilgisayar nesnelerini taşımak için aynı sözdizimini kullanın. Aşağıdaki komut “R07GF” bilgisayarını “Bilgisayarlar” konteynerine taşıyacaktır:

Move-ADObject -Identity "CN=R07GF,OU=CEO,DC=enterprise,DC=com" -TargetPath "CN=Computers,DC=Enterprise,DC=Com

AD Bilgisayarlarını ve Kullanıcılarını CSV veya TXT Dosyası Kullanarak Başka Bir Kuruluş Birimine Taşıma

Taşınacak nesnelerin önceden tanımlanmış bir listesi varsa, bunu bir CSV dosyası olarak kaydedebilir ve ardından bu dosyayı Active Directory'ye aktarabilirsiniz. CSV listesi aşağıdaki formatta olmalıdır:

CSV dosyasında listelenen AD kullanıcı hesaplarını taşımak için bu PowerShell betiğini kullanın:

# Specify target OU. This is where users will be moved.
$TargetOU =  "OU=Districts,OU=IT,DC=enterprise,DC=com"
# Specify CSV path. Import CSV file and assign it to a variable. 
$Imported_csv = Import-Csv -Path "C:tempMoveList.csv" 

$Imported_csv | ForEach-Object {
     # Retrieve DN of user.
     $UserDN  = (Get-ADUser -Identity $_.Name).distinguishedName
     # Move user to target OU.
     Move-ADObject  -Identity $UserDN  -TargetPath $TargetOU
   
 }

Bir metin dosyasında listelenen AD bilgisayar hesaplarını taşımak için aşağıdaki PowerShell betiğini kullanın:

# Specify path to the text file with the computer account names.
$computers = Get-Content C:TempComputers.txt

# Specify the path to the OU where computers will be moved.
$TargetOU   =  "OU=Districts,OU=IT,DC=enterprise,DC=com" 
ForEach( $computer in $computers){
    Get-ADComputer $computer |
    Move-ADObject -TargetPath $TargetOU

}

AD'den bir kuruluş birimini kaldırma

Remove-ADOrganizationalUnit cmdlet'i bir kuruluş birimini kaldırır. Kuruluş biriminin kazara silinmeye karşı korunmaması gerekir. Get-ADorganizationalUnit ve Set-ADorganizationalUnit cmdlet'lerini kullanarak adında "Kıtalar" bulunan her kuruluş birimi için yanlışlıkla silme seçeneğini aşağıdaki gibi kaldırabilirsiniz:

Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Set-ADOrganizationalUnit  -ProtectedFromAccidentalDeletion $False

Adında "Kıtalar" bulunan her kuruluş birimini AD'den kaldırmak için aşağıdaki komutu kullanın:

Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Remove-ADOrganizationalUnit –Recursive

Silme işlemini onaylamanız istenecektir:

-Recursive parametresinin hem kuruluş birimini hem de onun tüm alt nesnelerini kaldırdığını unutmayın. Alt nesneler, silinmeye karşı koruma etkin olsa bile silinecektir.

Çözüm

Artık PowerShell betiklerini kullanarak Active Directory'deki kuruluş birimlerini nasıl yöneteceğinizi öğrendiğinize göre, kuruluş birimi yönetimiyle ilgili çeşitli basit işlemleri otomatikleştirebilirsiniz. Bu komutları denemeden önce, hatalı silme işlemlerini kolayca geri alabilmeniz için Active Directory Geri Dönüşüm Kutusu özelliğini etkinleştirdiğinizden emin olun. Kuruluş birimlerinizdeki tüm değişiklikleri dikkatle takip etmek de akıllıca olacaktır.

İlgili makaleler