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”
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
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:
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.
Contenuti correlati selezionati
- Come trovare utenti e computer disabilitati o inattivi in AD utilizzando PowerShell
- Come rilevare modifiche alle unità organizzative e ai gruppi in Active Directory
- Come ottenere un rapporto dei permessi di un OU di Active Directory
- Come ottenere un elenco di tutti gli utenti da una specifica OU
- Come elencare tutti i computer in una OU
- Come rilevare chi ha modificato i permessi di un OU
Condividi su
Scopri di più
Informazioni sull'autore
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.
Scopri di più su questo argomento
Leggi sulla Privacy dei Dati per Stato: Diversi Approcci alla Protezione della Privacy
Esempio di Analisi del Rischio: Come Valutare i Rischi
Il Triangolo CIA e la sua applicazione nel mondo reale
Cos'è la gestione dei documenti elettronici?
Analisi quantitativa del rischio: Aspettativa di perdita annuale