Cree la estructura de unidades organizativas (OU) en Active Directory con PowerShell

Muy a menudo, al crear nuevas unidades organizativas (OU), un administrador de Active Directory tiene que crear una estructura de contenedores anidados dentro de una nueva OU. Por ejemplo, cuando una empresa abre una nueva sucursal, debe crear contenedores AD para usuarios, grupos, servidores y cuentas de servicio en la nueva unidad organizativa. Para evitar la creación manual de unidades organizativas anidadas y la asignación de permisos en el complemento ADUC (dsa.msc), puede usar el script de PowerShell de este artículo para crear y configurar unidades organizativas anidadas de forma masiva. El script no solo crea nuevas unidades organizativas, sino que también crea grupos de seguridad administrativos y les otorga permiso para nuevas unidades organizativas.

Para crear una unidad organizativa nueva en Active Directory, utilice el New-ADOrganizationalUnit cmdlet del módulo RSAT-AD-PowerShell. Para crear una unidad organizativa en el contenedor especificado, puede usar el siguiente comando:

Import-Module ActiveDirectory
New-ADOrganizationalUnit -Name "Users" -Path "OU=Berlin,OU=DE,DC=woshub,DC=com" –Description "Account container for Berlin users" -PassThru

Si no especifica el -Sendero parámetro, se creará una nueva unidad organizativa en la raíz de AD.

De forma predeterminada, al crear contenedores AD, el ProtegidoDeEliminaciónAccidental la opción está habilitada para ellos. Puede deshabilitarlo o cambiar cualquier otro atributo de la Unidad organizativa en Active Directory usando el Set-ADOrganizationalUnit cmdlet:

Get-ADOrganizationalUnit -Identity “OU=Users,OU=Berlin,OU=DE,DC=woshub,DC=com”| Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $false

Para eliminar una unidad organizativa con todos los objetos anidados, use el siguiente comando:

Remove-ADObject -Identity "OU=Users,OU=Berlin,OU=DE,DC=woshub,DC=com” -Recursive

Veamos un pequeño script de PowerShell para crear automáticamente una estructura de unidad organizativa típica en Active Directory para una nueva sucursal de la empresa.

Suponga que su empresa tiene una unidad organizativa separada para cada una de sus sucursales con la siguiente estructura de contenedores anidados:

Country
-City_name
--Admins
--Computers
--Contacts
--Groups
--Servers
--Service Accounts
--Users

Después de crear una estructura de unidad organizativa, debe crear grupos de administradores de sucursales en AD y delegarles privilegios en las nuevas unidades organizativas:

Jerarquía de unidades organizativas de Active Directory para sucursales

Aquí hay una versión básica de este script de PowerShell con comentarios. los CreateBranchOUs.ps1 el código del script está disponible en mi repositorio de GitHub:

#Create Active Directory OU structure, security groups and assign permissions for a new branch office
# Set the container name
$Country="DE"
$City = "HH"
$CityFull="Hamburg"
$DomainDN=(Get-ADDomain).DistinguishedName
$ParentOU= "OU="+$Country+",$DomainDN"
$OUs = @(
"Admins",
"Computers",
"Contacts",
"Groups",
"Servers",
"Service Accounts",
"Users"
)
# Create an OU for a new branch office
$newOU=New-ADOrganizationalUnit -Name $CityFull -path $ParentOU –Description “A container for $CityFull users” -PassThru
ForEach ($OU In $OUs) {
New-ADOrganizationalUnit -Name $OU -Path $newOU
}
#Create administrative groups
$adm_grp=New-ADGroup ($City+ "_admins") -path ("OU=Admins,OU="+$CityFull+","+$ParentOU) -GroupScope Global -PassThru –Verbose
$adm_wks=New-ADGroup ($City+ "_account_managers") -path ("OU=Admins,OU="+$CityFull+","+$ParentOU) -GroupScope Global -PassThru –Verbose
$adm_account=New-ADGroup ($City+ "_wks_admins") -path ("OU=Admins,OU="+$CityFull+","+$ParentOU) -GroupScope Global -PassThru –Verbose
##### An example of assigning password reset permissions for the _account_managers group on the Users OU
$confADRight = "ExtendedRight"
$confDelegatedObjectType = "bf967aba-0de6-11d0-a285-00aa003049e2" # User Object Type GUID
$confExtendedRight = "00299570-246d-11d0-a768-00aa006e0529" # Extended Right PasswordReset GUID
$acl=get-acl ("AD:OU=Users,OU="+$CityFull+","+$ParentOU)
$adm_accountSID = [System.Security.Principal.SecurityIdentifier]$adm_account.SID
#Build an Access Control Entry (ACE)string
$aceIdentity = [System.Security.Principal.IdentityReference] $adm_accountSID
$aceADRight = [System.DirectoryServices.ActiveDirectoryRights] $confADRight
$aceType = [System.Security.AccessControl.AccessControlType] "Allow"
$aceInheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance] "Descendents"
$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule($aceIdentity, $aceADRight, $aceType, $confExtendedRight, $aceInheritanceType,$confDelegatedObjectType)
# Apply ACL
$acl.AddAccessRule($ace)
Set-Acl -Path ("AD:OU=Users,OU="+$CityFull+","+$ParentOU) -AclObject $acl

Establezca las variables al comienzo del script y ejecútelo (no olvide verificar la configuración actual de la política de ejecución de PowerShell). El script creará una estructura de unidad organizativa y los grupos que necesita, y delegará los permisos de restablecimiento de contraseña a la unidad organizativa Usuarios.

Cree unidades organizativas anidadas, grupos y asigne permisos de AD con el script de PowerShell

Puede ampliar la secuencia de comandos agregando operaciones típicas que realiza al crear una unidad organizativa para una nueva sucursal.

Por ejemplo, puede crear objetos de directivas de grupo (GPO) mediante PowerShell y vincularlos a las unidades organizativas:

$wksGPO=New-GPO -Name ($City + “_WKS_Policy”) -Comment "$City Workstations Policy"
Get-GPO $wksGPO | New-GPLink -Target ("OU=Computers,OU="+$City+","+$ParentOU) -LinkEnabled Yes

Artículos Interesantes