Magic Quadrant™ per la gestione degli accessi privilegiati 2025: Netwrix riconosciuta per il quarto anno consecutivo. Scarica il report.

Piattaforma
Centro risorseBlog
Gestione delle OU e spostamento dei loro oggetti con PowerShell

Gestione delle OU e spostamento dei loro oggetti con PowerShell

Jun 26, 2018

Un'unità organizzativa (OU) è un contenitore in Active Directory dove possono essere memorizzati utenti, gruppi e computer, così come altre OU. Ogni AD domain può avere la propria gerarchia di unità organizzative.

In questo articolo, imparerai sulla gestione delle OU e come utilizzare gli script PowerShell per creare, spostare ed eliminare unità organizzative in AD; collegare una Group Policy a un'OU; e spostare account computer e utenti in un'altra OU.

PowerShell ISE è il miglior strumento per lavorare con gli script PowerShell. Avvia lo strumento PowerShell ISE con privilegi di amministratore premendo “Windows+R” e inserendo “runas /profile /user:Administrator PowerShell_ISE” nella finestra Esegui. Digita la password dell'amministratore quando richiesto. In alternativa, puoi fare clic con il tasto destro sull'icona di PowerShell ISE e scegliere l'opzione “Esegui come amministratore”.

Per lavorare con AD e i suoi oggetti, è necessario importare il modulo Active Directory per Windows PowerShell. In Microsoft Windows Server 2008 R2, è necessario abilitare questo modulo eseguendo il seguente comando:

      Import-Module ActiveDirectory
      

In Microsoft Windows Server 2012 e versioni successive, questo modulo è abilitato per impostazione predefinita.

Creare OU in un dominio Active Directory con PowerShell

È possibile creare una nuova unità organizzativa in Active Directory utilizzando il cmdlet New-ADOrganizationalUnit e specificando il nome di un nuovo oggetto OU. Per impostazione predefinita, PowerShell creerà l'OU nella radice del dominio. Il comando sottostante creerà un'OU chiamata “Regioni” sul DC:

      New-ADOrganizationalUnit “Regions”
      

Se hai bisogno di un percorso LDAP OU diverso, specifica il suo distinguished name utilizzando il parametro cmdlet –Path:

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

Sposta un'OU in un altro indirizzo LDAP

Se devi spostare un'OU in un'altra posizione, usa il cmdlet Move-ADObject. Nota che l'OU di destinazione non deve essere protetta dalla cancellazione accidentale. Se lo è, usa questo comando per rimuovere tale protezione:

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

Ora puoi spostare l'OU in un'altra posizione:

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

Rinomina un'OU

Per rinominare un'unità organizzativa, utilizzare il cmdlet Rename-ADObject. Il parametro -Identity specifica l'oggetto di Active Directory da rinominare e richiede il suo nome distinto (DN) o GUID.

Questo comando rinomina l'OU “Regions” in “Districts”:

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

In alternativa, puoi utilizzare il cmdlet Get-ADOrganizationalUnit con il parametro -Filter; non è necessario il percorso LDAP completo all'OU. Tuttavia, quel cmdlet cercherà in tutto l'AD e l'azione verrà applicata a tutte le OU che contengono il termine di ricerca nei loro nomi:

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

Applica una Criterio di Gruppo a un'OU

Per assegnare una Criteri di Gruppo a un'OU, utilizza il cmdlet New-GPLink che crea essenzialmente un collegamento tra l'oggetto Criteri di Gruppo (GPO) specificato e l'OU. Puoi specificare una delle seguenti proprietà per il collegamento:

  • Abilitato — Se il collegamento è abilitato, le impostazioni del GPO vengono applicate quando la Group Policy viene elaborata per il sito, il dominio o l'OU.
  • Enforced — Se il collegamento è enforced, non può essere bloccato in un contenitore di livello inferiore.
  • Ordine — L'ordine specifica la precedenza delle impostazioni GPO.

Il seguente comando collega il GPO “Block Software” all'OU “Districts” con il collegamento sia abilitato che applicato:

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

Sposta Computer e Utenti in una Nuova OU

Una volta che hai creato un'OU e opzionalmente l'hai collegata a un GPO, è il momento di riempirla con utenti e computer. Il cmdlet PowerShell Move-ADObject sposta qualsiasi oggetto o insieme di oggetti (come un utente, un computer, un gruppo o un'altra OU) in un'OU diversa. Il parametro -Identity specifica quale oggetto o contenitore di Active Directory spostare. Nota che devi inserire il percorso LDAP completo o il SID dell'oggetto; non puoi usare il suo SamAccountName. L'esempio seguente dimostra come spostare un utente (John Brown) nell'OU “Distretti”:

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

Utilizza la stessa sintassi per spostare gli oggetti computer. Il seguente comando sposterà il computer “R07GF” nel contenitore “Computers”:

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

Sposta computer e utenti di AD in un'altra OU utilizzando un file CSV o TXT

Se hai un elenco predefinito di oggetti da spostare, puoi salvarlo come file CSV e poi importare quel file in Active Directory. L'elenco CSV dovrebbe essere nel seguente formato:

Utilizza questo script PowerShell per spostare gli account utente AD elencati in un file CSV:

      # 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
   
 }
      

Per spostare gli account computer di AD elencati in un file di testo, utilizzare il seguente script PowerShell:

      # 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

}
      

Rimuovi un'OU da AD

Il cmdlet Remove-ADOrganizationalUnit rimuove un'OU. L'OU non deve essere protetta dalla cancellazione accidentale. È possibile rimuovere l'opzione di protezione dalla cancellazione accidentale per ogni OU che contiene “Continents” nel suo nome utilizzando i cmdlet Get-ADOrganizationalUnit e Set-ADOrganizationalUnit come segue:

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

Utilizza il seguente comando per rimuovere ogni OU che contiene “Continents” nel suo nome da AD:

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

Sarà richiesta la conferma per l'eliminazione:

Image

Si noti che il parametro -Recursive rimuove sia l'OU sia tutti i suoi oggetti figlio. Gli oggetti figlio verranno eliminati anche se per essi è attiva la protezione dalla cancellazione.

Conclusione

Ora che hai imparato a gestire le OU in Active Directory utilizzando script PowerShell, puoi automatizzare una varietà di operazioni semplici relative alla gestione delle OU. Prima di provare questi comandi, assicurati di abilitare la funzionalità Active Directory Recycle Bin feature in modo da poter facilmente annullare eventuali cancellazioni errate. È anche saggio tenere traccia con attenzione di tutti i cambiamenti alle tue unità organizzative.

Condividi su

Scopri di più

Informazioni sull'autore

Asset Not Found

Jeff Melnick

Direttore dell'Ingegneria dei Sistemi

Jeff è un ex Direttore dell'Ingegneria delle Soluzioni Globali presso Netwrix. È un blogger di Netwrix da lungo tempo, nonché relatore e presentatore. Nel blog di Netwrix, Jeff condivide lifehack, consigli e trucchi che possono migliorare notevolmente la tua esperienza di amministrazione del sistema.