Creare report dell’organizzazione dell’unità Active Directory con PowerShell. Un’unità organizzativa (OU) è un contenitore di Active Directory (AD) in cui possono essere archiviati utenti, gruppi, computer e altre OU. Ogni dominio AD può avere la propria gerarchia di unità organizzative. Questo articolo coprirà la gestione delle OU e come utilizzare script PowerShell di Windows per spostare, creare, eliminare e generare report sulle OU in AD, nonché collegare e applicare una policy di gruppo a un’OU.
Creare report dell’organizzazione dell’unità Active Directory con Powershell
Prerequisiti Se vogliamo seguire gli esempi di script di questo articolo, dovremo installare i componenti richiesti:
Se vogliamo seguire gli script di esempio in questo articolo, dobbiamo installare i componenti prerequisiti:
- Livello funzionale di dominio – Windows Server 2016.
- Strumenti di amministrazione remota del server (RSAT) per Active Directory installati sul tuo workstation connesso al dominio.
- La versione più recente di PowerShell, o almeno PowerShell 5. x e superiori sono richiesti per eseguire gli script.
Bene, come creare report di unità organizzative di Active Directory con PowerShell? Scopriamolo.
Comprendere i comandi delle Unità Organizzative
A Microsoft Active Directory domain container that can hold users, groups, and computers is an organizational unit (OU). It is the smallest unit to which a Windows system administrator can assign a Group Policy setting or account permission. An organizational unit may contain multiple OUs, but each attribute within the containing OU must be distinct.
Crea UO in Active Directory con PowerShell
Possiamo creare una nuova unità organizzativa in AD utilizzando il comando New-ADOrganizationalUnit e specificando il nome di un nuovo oggetto OU. Windows PowerShell creerà per impostazione predefinita l’unità organizzativa nella radice del dominio. Ad esempio, il seguente comando creerà un’OU denominata IT sul Controller di Dominio (DC):
New-ADOrganizationalUnit “IT”
Se abbiamo bisogno di un percorso LDAP OU diverso, utilizzare il parametro del cmdlet -Path per specificare il suo nome distinto (DN):
New-ADOrganizationalUnit “IT” –Path “OU=Users,DC=InfraSOS,DC=com”
Sposta un’OU in un Active Directory con PowerShell
Se abbiamo bisogno di spostare un OU in un’altra posizione, utilizzare il comando Move-ADObject. E’ essenziale notare che non dobbiamo proteggere il target OU da una cancellazione accidentale. Se così fosse, utilizzare il seguente comando per rimuovere la protezione:
Set-ADOrganizationalUnit -Identity "OU=IT,OU=Users,DC=InfraSOS,DC=Com" -ProtectedFromAccidentalDeletion $False
Ora possiamo spostare l’OU in un’altra posizione:
Move-ADObject -Identity "OU=Regions,OU=Managers,DC=InfraSOS,DC=Com" -TargetPath "OU=IT,DC=InfraSOS,DC=Com"
Ridenominare un OU in un Active Directory con PowerShell
Usa il comando Rename-ADObject per ridenominare una unità organizzativa. Il parametro Identity specifica l’oggetto AD da ridenominare e richiede sia il DN che il GUID. Ad esempio, questo comando cambia il nome dell’OU IT in Marketing:
Rename-ADObject -Identity "OU=Regions,OU=IT,DC=InfraSOS,DC=COM" -NewName Marketing
Possiamo anche utilizzare il Get-ADOrganizationalUnit cmdlet con il -Filter parametro, che non richiede l’intero percorso LDAP alla OU. Tuttavia, quel cmdlet cercherà l’intero AD e lo script applicherà l’azione del comando a tutte le Unità Organizzative con il termine di ricerca nei loro nomi:
Get-ADOrganizationalUnit -Filter "Name -eq 'Zones'" | Rename-ADObject -NewName Area
Discuteremo più comandi Get OU una volta che inizieremo a generare report.
Applicare un Group Policy a una OU in un Active Directory con PowerShell
Per assegnare una Criteri di Gruppo a una Unità Organizzativa, possiamo utilizzare il comando New-GPLink, che collega l’oggetto dei Criteri di Gruppo (GPO) specificato e l’Unità Organizzativa. Inoltre, possiamo identificare una delle seguenti proprietà per il collegamento:
- Abilitato – Se il collegamento ha uno stato Abilitato, le impostazioni elaborate del GPO vengono applicate quando i Criteri di Gruppo per il sito, il dominio e l’OU.
- Forzato – Se il collegamento ha uno stato Forzato, non possiamo bloccare l’OU in un contenitore di livello inferiore.
- Ordine – L’Ordinestato specifica la precedenza delle impostazioni del GPO.
Ad esempio, il seguente comando collega il GPO Block all’Unità Organizzativa IT con il collegamento sia abilitato che forzato:
New-GPLink -Name "Block" -Target "OU=Districts,OU=IT, DC=InfraSOS, DC=com" -LinkEnabled Yes -Enforced Yes
Sposta Utenti e Computer in una Nuova UO in un AD con PowerShell
Dopo aver creato un’Unità Organizzativa e, opzionalmente, averla collegata a un GPO, la popoleremo con utenti e computer. IlMove-ADObjectcmdlet in PowerShell sposta qualsiasi oggetto o insieme di oggetti di Active Directory in una diversa UO. Il–Identityparametro indica quale oggetto dovrebbe essere spostato. Oggetto Active Directory o contenitore.
È fondamentale notare che dobbiamo inserire il percorso completo LDAP dell’oggetto o il SID; non possiamo utilizzare il suo SamAccountName. Il seguente esempio mostra come spostare un utente nell’OU IT:
Move-ADObject -Identity "CN=marion,CN=Users,DC=InfraSOS,DC=com" -TargetPath "OU=IT,OU=Users,DC=InfraSOS,DC=com"
Usa la sintassi esatta per spostare gli oggetti computer. Ad esempio, il seguente comando trasferirà il computer DESKTOP-01 nel contenitore Computer:
Move-ADObject -Identity "CN=DESKTOP-01,OU=Computers,DC=InfraSOS,DC=com" -TargetPath "CN=Workstations,DC=InfraSOS,DC=com"
Sposta in massa computer e utenti AD in un’altra OU
Se abbiamo un elenco predefinito di oggetti da spostare, possiamo salvarlo come file di testo e quindi importarlo in Active Directory. Prepara il tuo elenco aggiungendo un oggetto AD per riga. Il file di testo contenente l’elenco dovrebbe essere simile a questo:

Usa questo script PowerShell per spostare gli account utente AD elencati in un file di testo:
$destOU = "OU=Users,OU=IT,DC=InfraSOS,DC=com"
$usersList = Get-Content -Path "C:\temp\users.txt"
$usersList | ForEach-Object {
$userName = (Get-ADUser -Identity $_.Name).distinguishedName
Move-ADObject -Identity $userName -TargetPath $destOU
}
Per spostare gli account computer AD elencati in un file di testo, usa il seguente script PowerShell:
$computers = Get-Content -Path "C:\Temp\Computers.txt"
$destOU = "OU=Computers,OU=IT,DC=InfraSOS,DC=com"
ForEach( $computer in $computers){
Get-ADComputer $computer |
Move-ADObject -TargetPath $destOU
}
Leggi anche Controlla i report di gruppo di Active Directory
Rimuovere un’OU da Active Directory con PowerShell
Il Remove-ADOrganizationalUnit cmdlet rimuove un’OU. Tuttavia, non dobbiamo proteggere l’OU da una rimozione accidentale. Utilizzando il Get-ADOrganizationalUnit e Set-ADOrganizationalUnit cmdlet, possiamo rimuovere l’opzione di eliminazione inaspettata per ogni OU con la parola Zones nel suo nome:
Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $False
Utilizzare il seguente cmdlet per rimuovere ogni OU che contiene Zones nel suo nome da AD:
Get-ADOrganizationalUnit -filter "Name -eq 'Zones'" | Remove-ADOrganizationalUnit –Recursive
Il sistema ci chiederà di confermare la cancellazione:
Nota che il -Recursive parametro rimuove sia l’OU che tutti i suoi oggetti figlio. AD eliminerà gli oggetti figlio anche se è attiva la protezione dall’eliminazione per loro.
Gestione delle Unità Organizzative in AD
Ora che abbiamo discusso dei comandi e dei parametri di base relativi alle Unità Organizzative, discuteremo ulteriormente come possiamo generare report OU con PowerShell.
Ottenere un elenco di tutte le UO con PowerShell
Useremo il Get-ADOrganizationalUnit cmdlet. Innanzitutto, ordina per CanonicalName. Questo comando visualizza una struttura OU più facile da leggere.
Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
Format-Table CanonicalName, DistinguishedName
Di seguito è riportato un esempio output in PowerShell quando eseguiamo il comando:
L’output con tutte le UO in AD è un elenco eccellente. Ma come facciamo a sapere se la UO contiene utenti?
Leggi anche Vedi i report dei gruppi di Active Directory
Ottenere un elenco di tutte le OU, compreso il conteggio utenti, con PowerShell
Ci piace utilizzare PowerShell per ottenere un elenco delle OU, compreso il conteggio utenti. Questo comando ci dirà se ci sono utenti nell’OU.
Get-ADOrganizationalUnit -Properties CanonicalName -Filter * |
Sort-Object CanonicalName |
ForEach-Object {
[pscustomobject]@{
Name = Split-Path $_.CanonicalName -Leaf
CanonicalName = $_.CanonicalName
UserCount = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
}
}
Mostrerà l’output con la proprietà della colonna UserCount. Se il valore della proprietà UserCount è zero, l’OU non contiene utenti. Non apparirà se l’OU contiene un oggetto computer. Questo comando controllerà e mostrerà solo il conteggio utenti.
Leggi anche Distribuisci Report Utenti Office 365
Esporta OU in AD in un file CSV con PowerShell
Vogliamo ora esportare l’elenco delle OU in AD. Quindi, lo script utilizzerà PowerShell per ottenere le Unità Organizzative e esportarle in un file di testo.
$results = Get-ADOrganizationalUnit -Properties CanonicalName -Filter * | Sort-Object CanonicalName |
ForEach-Object {
[pscustomobject]@{
Name = Split-Path $_.CanonicalName -Leaf
CanonicalName = $_.CanonicalName
UserCount = @(Get-AdUser -Filter * -SearchBase $_.DistinguishedName -SearchScope OneLevel).Count
}
}
$results | Out-File C:\export_OUs.txt -Encoding UTF8
Se vogliamo esportare in un file CSV, cambiamo l’ultima riga con il seguente comando:
$results | Export-Csv -Path C:\export_OUs.csv -NoTypeInformation -Encoding UTF8
Trova il file esportato nella specificata posizione dopo aver eseguito il comando sopra.
Grazie per aver letto “Creare rapporti OU attivi di Active Directory con PowerShell”. Concluderemo ora.
Leggi anche Scopri lo strumento di gestione di Office 365
Conclusione di “Creare rapporti OU attivi di Active Directory con PowerShell”
Ora che abbiamo imparato come gestire le OU in Active Directory utilizzando script PowerShell, possiamo automatizzare varie operazioni correlate alla gestione delle OU e generare rapporti di conseguenza. Assicurarsi di abilitare la funzionalità Cestino di Active Directory prima di provare questi comandi, per poter annullare facilmente eventuali eliminazioni errate. È anche consigliabile tenere traccia attentamente di tutte le modifiche alle unità organizzative della propria organizzazione.
Dai un’occhiata ai nostri contenuti PowerShell nel nostro blog qui.
Source:
https://infrasos.com/create-active-directory-ou-reports-with-powershell/