Unitats Organitzatives Active Directory per PowerShell
Amb aquesta entrada s’automatitza el procés de creació de les estructures d’unitats organitzatives d’Active Directory a l’estàndard que desitgem. Amb la creació de grups de seguretat i usuaris operadors per defecte. És un procés molt fàcil i que segurament només utilitzarem un cop en les nostres instal·lacions. No obstant, en el camí del DevOps és necessari tenir aquesta part automatitzada.
Partim d’un entorn d’Active Directory verge, on encara no s’han creat les unitats organitzatives ni res per l’estil. En ella es creen les diferents Unitats Organitzatives que contindran els objectes:
- GRUPS DE SEGURETAT. On hi posem els diferents grups de seguretat que necessitem.
- EQUIPS. On hi posarem els equips que no són controladors de domini. S’estructura en altres unitats organitzatives per poder aplicar correctament les Polítiques de Grup i delegació.
- Estacions de Treball
- Mòbils
- VDIs
- Servidors membre
- Clústers
- Hipervisors
- NAS
- USUARIS. On hi posarem els usuaris. També s’estructura en altres unitats organitzatives per poder aplicar correctament les Polítiques de Grup i delegació.
- Administradors
- Empresa
- Externs
- Serveis
Per arrodonir-ho, a la Unitat Organitzativa Grups de Seguretat, es crearan els següents:
- Usuaris Wi-Fi
- Usuaris VPN
- Tècnics de HelpDesk
- Administradors de SQL Server
- Administradors de SharePoint
Per acabar amb dos usuaris Administradors de SQL Server i de SharePoint, creats a la Unitat Organitzativa Administradors:
- Operador
- Administrador Josep Maria Solanes
Crear Unitats Organitzatives
Les comandes són senzilles. També partirem de la variable on s’especifica el nom del domini:
$dominiLDAP="DC=jmsolanes,DC=local"
Per crear les unitats organitzatives, s’indica el nom, el nom amb què ha d’aparèixer i la ruta LDAP on s’han de crear:
New-ADOrganizationalUnit -DisplayName "USUARIS" -Name "USUARIS" -path $dominiLDAP New-ADOrganizationalUnit -DisplayName "EQUIPS" -Name "EQUIPS" -path $dominiLDAP etc...
Què avorrit si cada cop he de fer això! Perquè no ho millorem amb una funció que, a més, comprovi si existeix abans de crear-la:
function CreaEstructura { $NomOU = $args[0] $dominiLDAP = $args[1] $camiOU = ("OU="+$NomOU+","+$dominiLDAP) if ([adsi]::Exists(("LDAP://" + $camiOU))) { write-host ("La Unitat Organitzativa " + $NomOU + " ja existeix.") -ForegroundColor Yellow } else { new-ADOrganizationalUnit -DisplayName $NomOU -Name $NomOU -path $dominiLDAP } }
Amb la funció creada que treballa per nosaltres, només cal anar-la cridant per crear l’arbre de Unitats Organitzatives segons necessitem, indicant el nom de la nova unitat seguida dins quina carpeta s’ha de crear:
CreaEstructura "USUARIS" $dominiLDAP CreaEstructura "Administradors" ("OU=USUARIS,"+$dominiLDAP) CreaEstructura "Serveis" ("OU=USUARIS,"+$dominiLDAP) CreaEstructura "Empresa" ("OU=USUARIS,"+$dominiLDAP) CreaEstructura "Externs" ("OU=USUARIS,"+$dominiLDAP) CreaEstructura "EQUIPS" $dominiLDAP CreaEstructura "Estacions de Treball" ("OU=EQUIPS,"+$dominiLDAP) CreaEstructura "Mòbils" ("OU=EQUIPS,"+$dominiLDAP) CreaEstructura "VDIs" ("OU=EQUIPS,"+$dominiLDAP) CreaEstructura "Servidors membre" ("OU=EQUIPS,"+$dominiLDAP) CreaEstructura "NAS" ("OU=Servidors membre,OU=EQUIPS,"+$dominiLDAP) CreaEstructura "Hipervisors" ("OU=Servidors membre,OU=EQUIPS,"+$dominiLDAP) CreaEstructura "Clústers" ("OU=Servidors membre,OU=EQUIPS,"+$dominiLDAP) CreaEstructura "GRUPS DE SEGURETAT" $dominiLDAP
Crear els Grups de Seguretat
Amb l’estructura de Unitats Organitzatives creada, anem a pels grups de seguretat. Per exemple, el de Usuaris de la Wi-Fi:
New-ADGroup -DisplayName "Usuaris Wi-Fi" -Name "Usuaris Wi-Fi" -GroupScope DomainLocal -GroupCategory Security -Path "GRUPS DE SEGURETAT"
També ho podem millorar una mica oi? L’adaptem per crear una funció. Veieu que hi ha molts paràmetres quasi iguals amb la funció anterior oi? És pot simplificar i al final ho veureu. De moment, ho deixo per entendre els diferents apartats:
function NouGrupSeguretat { $NomGrup = $Args[0] $NomOU = "GRUPS DE SEGURETAT" $dominiLDAP = "DC=jmsolanes,DC=local" $camiOU = ("OU="+$NomOU+","+$dominiLDAP) if (Get-ADGroup -Filter {SamAccountName -eq $NomGrup}) { write-host ("El grup de seguretat " + $NomGrup + " ja existeix.") -ForegroundColor Yellow } else { New-ADGroup -DisplayName $NomGrup -Name $NomGrup -GroupScope DomainLocal -GroupCategory Security -Path $camiOU } }
Aquesta funció la cridarem indicant el nom del grup de seguretat a crear:
NouGrupSeguretat "Administradors Web"
Crear Usuaris
Tenim les Unitats Organitzatives i els Grups de Seguretat. El següent pas és crear usuaris. La comanda també és senzilla. Es crea l’usuari Operador amb la contrasenya P@ssw0rd, que l’haurà de canviar en el primer inici de sessió i que es crearà a la Unitat Organitzativa d’Administradors:
New-ADUser -DisplayName "Operador" -Name "Operador" -UserPrincipalName "Operador" -Enabled:$true -Path "OU=Administradors,OU=USUARIS,DC=jmsolanes,DC=local" -AccountPassword (ConvertTo-SecureString -string "P@ssw0rd" -AsPlainText -Force) -ChangePasswordAtLogon:$True
Com que és un usuari per administrar el sistema informàtic, l’afegim als grups de seguretat d’Administració:
Add-ADGroupMember -Identity "Administrador SQL Server" -Members Operador Add-ADGroupMember -Identity "Administrador SharePoint" -Members Operador
Tornem a crear una nova funció, en què agafem el nom de l’usuari que s’ha de visualitzar i el nom de logon:
function NouUsuari { $NomUsuari=$Args[0] $NomLogon=$Args[1] $NomOU = "OU=Administradors,OU=USUARIS" $dominiLDAP = "DC=jmsolanes,DC=local" $camiOU = ($NomOU+","+$dominiLDAP) if (Get-ADUser -Filter {SamAccountName -eq $NomLogon}) { write-host ("El compte d'usuari " + $NomLogon + " ja existeix.") -ForegroundColor Yellow } else { New-ADUser -DisplayName $NomUsuari -Name $NomLogon -UserPrincipalName $NomLogon -Enabled:$true -Path $camiOU -AccountPassword (ConvertTo-SecureString -string "P@ssw0rd" -AsPlainText -Force) -ChangePasswordAtLogon:$True } }
Aquesta funció la cridarem indicant el nom amb què s’ha de visualitzar seguit del nom de logon:
NouUsuari "Josep Solanes" "jmsolanes"
Ja tenim els tres apartats preparats. Anem a fer una barreja de tot plegat?
Script per crear una estructura estàndard de Unitats Organitzatives
No hi ha massa més a dir, adjuntem totes les parts en una de sola per generar l’estructura a partir de l’script.
# Variables generals $dominiLDAP = "DC=jmsolanes,DC=local" # Funció per crear un nou Grup de Seguretat function NouGrupSeguretat { $NomGrup = $Args[0] $NomOU = $Args[1] $dominiLDAP = $Args[2] $camiOU = ("OU="+$NomOU+","+$dominiLDAP) if (Get-ADGroup -Filter {SamAccountName -eq $NomGrup}) { write-host ("El grup de seguretat " + $NomGrup + " ja existeix.") -ForegroundColor Red } else { New-ADGroup -DisplayName $NomGrup -Name $NomGrup -GroupScope DomainLocal -GroupCategory Security -Path $camiOU } } # Funció per crear un nou Usuari, si es crea a la OU d'administradors, l'afegeix automàticament als Grups d'Administradors de SQL i SharePoint. function NouUsuari { $NomUsuari=$Args[0] $NomLogon=$Args[1] $NomOU = $Args[2] $dominiLDAP = $Args[3] $camiOU = ($NomOU+","+$dominiLDAP) if (Get-ADUser -Filter {SamAccountName -eq $NomLogon}) { write-host ("El compte d'usuari " + $NomLogon + " ja existeix.") -ForegroundColor Red } else { write-host("Creant l'usuari " + $NomLogon + " a la unitat organitzativa "+$camiOU) -ForegroundColor Green New-ADUser -DisplayName $NomUsuari -Name $NomLogon -UserPrincipalName $NomLogon -Enabled:$true -Path $camiOU -AccountPassword (ConvertTo-SecureString -string "P@ssw0rd" -AsPlainText -Force) -ChangePasswordAtLogon:$True } if ($NomOU="Administradors") { Add-ADGroupMember -Identity "Administradors de SQL Server" -Members $NomLogon Add-ADGroupMember -Identity "Administradors de SharePoint" -Members $NomLogon } } # Funció principal per crear l'estructura i a partir d'ella anar creant els grups de seguretat i usuaris. function CreaEstructura { $NomOU = $args[0] $dominiLDAP = $args[1] $camiOU = ("OU="+$NomOU+","+$dominiLDAP) Write-Host ("Creant Unitat Organitzativa: " + $camiOU) -ForegroundColor Yellow if ([adsi]::Exists(("LDAP://"+$camiOU))) { write-host ("La Unitat Organitzativa " + $NomOU + " ja existeix.") -ForegroundColor Red } else { write-host ("Creant la OU "+$NomOU+","+$dominiLDAP) -ForegroundColor Green new-ADOrganizationalUnit -DisplayName $NomOU -Name $NomOU -path $dominiLDAP } if ($NomOU -eq "GRUPS DE SEGURETAT") { write-host ("Estic a la OU "+$NomOU+" creant els grups de seguretat que pertoquen.") -ForegroundColor Green NouGrupSeguretat "Usuaris Wi-Fi" $NomOU $dominiLDAP NouGrupSeguretat "Usuaris VPN" $NomOU $dominiLDAP NouGrupSeguretat "Tècnics de HelpDesk" $NomOU $dominiLDAP NouGrupSeguretat "Administradors de SQL Server" $NomOU $dominiLDAP NouGrupSeguretat "Administradors de SharePoint" $NomOU $dominiLDAP } if ($NomOU -eq "Administradors") { write-host ("Estic a la OU "+$NomOU+"; creem els usuaris que pertoquen.") -ForegroundColor Green NouUsuari "Operador" "Operador" ("OU="+$NomOU) $dominiLDAP NouUsuari "Administrador Josep Solanes" "adminjmsolanes" ("OU="+$NomOU) $dominiLDAP } } #Executem la funció principal amb els noms de les OUs. CreaEstructura "GRUPS DE SEGURETAT" $dominiLDAP CreaEstructura "USUARIS" $dominiLDAP CreaEstructura "Administradors" ("OU=USUARIS,"+$dominiLDAP) CreaEstructura "Serveis" ("OU=USUARIS,"+$dominiLDAP) CreaEstructura "Empresa" ("OU=USUARIS,"+$dominiLDAP) CreaEstructura "Externs" ("OU=USUARIS,"+$dominiLDAP) CreaEstructura "EQUIPS" $dominiLDAP CreaEstructura "Estacions de Treball" ("OU=EQUIPS,"+$dominiLDAP) CreaEstructura "Mòbils" ("OU=EQUIPS,"+$dominiLDAP) CreaEstructura "VDIs" ("OU=EQUIPS,"+$dominiLDAP) CreaEstructura "Servidors membre" ("OU=EQUIPS,"+$dominiLDAP) CreaEstructura "NAS" ("OU=Servidors membre,OU=EQUIPS,"+$dominiLDAP) CreaEstructura "Hipervisors" ("OU=Servidors membre,OU=EQUIPS,"+$dominiLDAP) CreaEstructura "Clústers" ("OU=Servidors membre,OU=EQUIPS,"+$dominiLDAP)
Per acabar, quatre costelletes per esborrar objectes
Per esborrar un usuari (operador) de l’Active Directory
Get-ADUser -filter {SamAccountName -like "Operador*"} | Remove-ADUser
Per esborrar un grup (tots els que comencin per Tècnics) de l’Active Directory
get-adgroup -filter {SamAccountName -like "Tècnics*"} | Remove-ADGroup
Per esborrar una unitat organitzativa de l’Active Directory, a la què a més, s’ha de treure el piscu de protecció contra esborrat:
Get-ADOrganizationalUnit -Filter {Name -eq "nas"} | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion:$false Get-ADOrganizationalUnit -Filter {Name -eq "nas"} | Remove-ADOrganizationalUnit -confirm:$false
Esborrar les unitats organitzatives a partir d’una llista des d’un fitxer (OUs.txt) amb els noms de cadascuna d’elles en forma de llistat:
get-content .\OUs.txt | foreach-object {Get-ADOrganizationalUnit -Filter {Name -eq $_ } | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion:$false} get-content .\OUs.txt | foreach-object {Get-ADOrganizationalUnit -Filter {Name -eq $_ } | Remove-ADOrganizationalUnit -confirm:$false}
Ep, aquesta última idea és bona oi? Tenir-ho tot en un fitxer a partir del qual es crea tota l’estructura. Au, ja teniu feina.
Per acabar, si heu desplegat tot l’entorn anterior i es vol automatitzar l’esborrat i creació, perquè ens hem equivocat o estem jugant amb ella, aquí teniu l’script per fer-ho:
get-adgroup -filter * | ? {$_.Name -like "Tècnics*"} |Remove-ADGroup -Confirm:$false get-adgroup -filter * | ? {$_.Name -like "Usuaris*"} |Remove-ADGroup -Confirm:$false get-adgroup -filter * | ? {$_.Name -like "Administradors*"} | Remove-ADGroup -Confirm:$false get-aduser -filter {SamAccountName -eq "adminjmsolanes"} | Remove-ADUser -Confirm:$false get-aduser -filter {SamAccountName -eq "Operador"} | Remove-ADUser -Confirm:$false get-content .\OUs.txt | foreach-object {Get-ADOrganizationalUnit -Filter {Name -eq $_ } | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion:$false} get-content .\OUs.txt | foreach-object {Get-ADOrganizationalUnit -Filter {Name -eq $_ } | Remove-ADOrganizationalUnit -confirm:$false}
Com sempre podeu trobar els scripts en el meu repositori de GitHub (tots els scripts només són en castellà):
- Crear l’estructura 4_AD_Estructura_Unidades_Organizativas.ps1
- Esborrar l’estructura 4b_AD_Borra_Estructura.ps1
- Fitxer de text amb el nom de les unitats organitzatives OUs_es.txt
T’ha agradat l’article? El pots compartir a les xarxes socials. També pots deixar la teva opinió, comentari o suggeriment. Gràcies!
Similar Posts by The Author:
- Microsoft SQL Server con SMB3
- Microsoft SQL Server amb SMB3
- Containers en Linux
- Containers amb Linux
- Migrar el servidor de archivos a Windows Server 2019
- Migrar el servidor de fitxers a Windows Server 2019
- Puerta enlace a Azure en el Windows Admin Center
- Porta enllaç a Azure en el Windows Admin Center
- Hola mundo! WordPress 5 y Gutenberg
- Hola món! WordPress 5 i Gutenberg