Búsqueda de sitios web

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, use el cmdlet New-ADOrganizationalUnit 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=a-d,DC=com" -Description "Account container for Berlin users" -PassThru

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

De forma predeterminada, al crear contenedores AD, la opción ProtectedFromAccidentalDeletion 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=a-d,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=a-d,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:

  • City_admins: administradores de sucursales (control total sobre todas las unidades organizativas de sucursales);

  • City_account_managers: usuarios con privilegios de operador de cuenta (creación de nuevos usuarios, restablecimiento de contraseña de AD, etc.). Asignar permisos solo a usuarios y unidades organizativas de cuentas de servicio;

  • City_wks_admins: equipo de soporte técnico con privilegios de administrador en las computadoras de la sucursal (asigne los permisos en la unidad organizativa de computadoras, agregue este grupo al grupo de administradores locales en las computadoras a través de GPO).

Aquí hay una versión básica de este script de PowerShell con comentarios. El código del script CreateBranchOUs.ps1 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.

Para asignar privilegios de AD, use el cmdlet Set-ACL, que también le permite asignar permisos NTFS en archivos y carpetas.

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 relacionados