Active Directory - PowerShell

PowerShell e Active Directory: Gestione delle Organizational Unit

Le Organizational Unit (OU) sono contenitori Active Directory utilizzati per organizzare utenti, computer e gruppi, e per applicare Group Policy in modo granulare. Con PowerShell è possibile creare e gestire l’intera struttura delle OU senza aprire la console grafica.

Sintassi dei comandi

Visualizzare tutte le OU del dominio

Get-ADOrganizationalUnit -Filter * | Select-Object Name, DistinguishedName

Visualizzare tutte le OU sotto un percorso specifico

Get-ADOrganizationalUnit -Filter * -SearchBase "OU=Azienda,DC=dominio,DC=local" |
    Select-Object Name, DistinguishedName

Creare una nuova OU

New-ADOrganizationalUnit `
    -Name "Utenti" `
    -Path "DC=dominio,DC=local" `
    -Description "Contenitore utenti aziendali" `
    -ProtectedFromAccidentalDeletion $true

Per creare una struttura di OU annidate, prima si crea la OU padre, poi le OU figlie che vi risiedono all’interno

# Creazione OU padre
New-ADOrganizationalUnit -Name "Azienda" -Path "DC=dominio,DC=local"

# Creazopme OU figlie
New-ADOrganizationalUnit -Name "Utenti"   -Path "OU=Azienda,DC=dominio,DC=local"
New-ADOrganizationalUnit -Name "Gruppi"   -Path "OU=Azienda,DC=dominio,DC=local"
New-ADOrganizationalUnit -Name "Computer" -Path "OU=Azienda,DC=dominio,DC=local"
New-ADOrganizationalUnit -Name "Server"   -Path "OU=Azienda,DC=dominio,DC=local"

Per modificare la descrizione di una OU

Set-ADOrganizationalUnit -Identity "OU=Utenti,OU=Azienda,DC=dominio,DC=local" `
    -Description "Utenti del dominio aziendale"

Per rinominare una OU non si usa Set-ADOrganizationalUnit, il nome fa parte del Distinguished Name, ma Rename-ADObject

Rename-ADObject -Identity "OU=Utenti,OU=Azienda,DC=dominio,DC=local" -NewName "Dipendenti"

Spostare un oggetto in un’altra OU (ad esempio un singolo utente)

Move-ADObject `
    -Identity "CN=Mario Rossi,OU=Utenti,DC=dominio,DC=local" `
    -TargetPath "OU=Utenti,OU=Azienda,DC=dominio,DC=local"

Rimuovere la protezione da cancellazione accidentale

Set-ADOrganizationalUnit -Identity "OU=Utenti,OU=Azienda,DC=dominio,DC=local" `
    -ProtectedFromAccidentalDeletion $false

Spostare un oggetto in un’altra OU

Move-ADObject `
    -Identity "CN=Mario Rossi,OU=Utenti,DC=dominio,DC=local" `
    -TargetPath "OU=Utenti,OU=Azienda,DC=dominio,DC=local"

Spostare un’intera OU con tutto il contenuto. La OU, con tutto ciò che contiene, diventa una sotto-OU della destinazione, senza bisogno di spostare i singoli oggetti al suo interno. Il comando funziona se la protezione da cancellazione accidentale è disattivata

Move-ADObject `
    -Identity "OU=Utenti,DC=dominio,DC=local" `
    -TargetPath "OU=Azienda,DC=dominio,DC=local"

Eliminare una OU

# OU senza contenuto
Remove-ADOrganizationalUnit -Identity "OU=Utenti,OU=Azienda,DC=dominio,DC=local" -Confirm:$false

# OU con tutto il contenuto (eliminazione ricorsiva)
Remove-ADOrganizationalUnit -Identity "OU=Utenti,OU=Azienda,DC=dominio,DC=local" `
    -Recursive -Confirm:$false

Esempio di utilizzo

Scenario: creare la struttura base delle OU per una nuova azienda, spostare un utente esistente nella OU corretta e verificare il risultato.

Creare la struttura gerarchica con protezione da cancellazione accidentale

New-ADOrganizationalUnit -Name "Azienda" -Path "DC=dominio,DC=local" -ProtectedFromAccidentalDeletion $true

New-ADOrganizationalUnit -Name "Utenti"   -Path "OU=Azienda,DC=dominio,DC=local" -ProtectedFromAccidentalDeletion $true
New-ADOrganizationalUnit -Name "Gruppi"   -Path "OU=Azienda,DC=dominio,DC=local" -ProtectedFromAccidentalDeletion $true
New-ADOrganizationalUnit -Name "Computer" -Path "OU=Azienda,DC=dominio,DC=local" -ProtectedFromAccidentalDeletion $true

Spostare un utente già esistente nell’OU predefinita verso la OU corretta

Move-ADObject `
    -Identity "CN=Mario Rossi,CN=Users,DC=dominio,DC=local" `
    -TargetPath "OU=Utenti,OU=Azienda,DC=dominio,DC=local"

Verificare la nuova posizione dell’utente

Get-ADUser -Identity "mario.rossi" | Select-Object Name, DistinguishedName

# Output atteso
Name        DistinguishedName
----        -----------------
Mario Rossi CN=Mario Rossi,OU=Utenti,OU=Azienda,DC=dominio,DC=local

L’elenco degli articoli di questa serie può essere consultato qui