
PowerShell y Active Directory: Los Comandos Más Importantes para Administradores Exigentes
por Raúl UnzuéExplora los Comandos más potentes de PowerShell para Controlar Active Directory
Si alguna vez te has peleado con la interfaz gráfica de Active Directory para hacer cambios masivos, sabrás por qué PowerShell se ha convertido en el mejor amigo del administrador de sistemas. Es directo, flexible y te permite automatizar tareas repetitivas que antes te llevaban horas. En esta guía te traigo comandos PowerShell para gestionar Active Directory desde lo más básico, crear usuarios, moverlos o gestionar grupos, hasta acciones avanzadas como auditoría, migración de niveles funcionales, políticas de grupo (GPO) y manipulación masiva de objetos.
Active Directory (AD) sigue siendo la columna vertebral de muchas redes corporativas en 2025, y saber manejarlo desde consola no es solo una ventaja, es casi obligatorio si quieres ser un Sysadmin ágil y resolutivo. Con PowerShell no solo te ahorra clics, también te da control total, puedes crear cientos de usuarios en segundos, moverlos entre unidades organizativas, aplicar permisos con precisión quirúrgica, o incluso consultar relaciones entre objetos que de otra forma estarían ocultas a simple vista.
Porque al final del día, cuando toca lidiar con estructuras de AD heredadas, fusiones de dominios o despliegues de políticas a toda una organización, la GUI no da la talla. Y ahí es donde PowerShell se convierte en tu mejor aliado.
Operaciones Básicas con PowerShell y Active Directory
Crear un usuario nuevo
New-ADUser -Name "Carlos Ruiz" -SamAccountName "cruiz" -UserPrincipalName "cruiz@dominio.local" -Path "OU=Usuarios,DC=dominio,DC=local" -AccountPassword (ConvertTo-SecureString "Password123!" -AsPlainText -Force) -Enabled $true -ChangePasswordAtLogon $true -GivenName "Carlos" -Surname "Ruiz" -EmailAddress "cruiz@dominio.local"
Agregar un usuario a múltiples grupos
Add-ADGroupMember -Identity "TI","VPN_Users" -Members "cruiz"
Crear múltiples usuarios desde CSV
Import-Csv "usuarios.csv" | ForEach-Object {
New-ADUser -Name $_.Nombre -SamAccountName $_.Usuario -UserPrincipalName $_.Email -Path $_.RutaOU -AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) -Enabled $true
}
Cambiar múltiples contraseñas
Get-ADUser -Filter * -SearchBase "OU=TempUsers,DC=dominio,DC=local" | ForEach-Object {
Set-ADAccountPassword -Identity $_ -NewPassword (ConvertTo-SecureString "Temporal123!" -AsPlainText -Force)
}
Consultas y filtros útiles
Buscar usuarios inactivos en los últimos 90 días
Search-ADAccount -AccountInactive -UsersOnly -TimeSpan 90.00:00:00 | Select-Object Name, LastLogonDate
Usuarios bloqueados actualmente
Search-ADAccount -LockedOut | Select-Object Name, SamAccountName
Buscar duplicados por dirección de correo
Get-ADUser -Filter * -Properties EmailAddress | Group-Object EmailAddress | Where-Object { $_.Count -gt 1 }
Buscar todos los objetos de un tipo específico (como Impresoras)
Get-ADObject -Filter 'ObjectClass -eq "printQueue"' -SearchBase "DC=dominio,DC=local"
Consultar miembros de todos los grupos de seguridad
Get-ADGroup -Filter 'GroupCategory -eq "Security"' | ForEach-Object {
Get-ADGroupMember $_ | Select-Object Name, SamAccountName, @{Name="Grupo";Expression={$_.DistinguishedName}}
}
Gestión de GPOs desde PowerShell
Listar todas las GPOs
Get-GPO -All
Crear una nueva GPO
New-GPO -Name "BloqueoAutomaticoPantalla" -Comment "Bloqueo tras 10 minutos de inactividad"
Enlazar una GPO a una OU
New-GPLink -Name "BloqueoAutomaticoPantalla" -Target "OU=Usuarios,DC=dominio,DC=local" -LinkEnabled Yes
Ver configuraciones específicas de una GPO
Get-GPOReport -Name "BloqueoAutomaticoPantalla" -ReportType Html -Path C:\Informes\bloqueo.html
Aplicar backup y restore de GPOs
Backup-GPO -Name "SeguridadTI" -Path "C:\Backups\GPOs"
Restore-GPO -Name "SeguridadTI" -Path "C:\Backups\GPOs"
Administración avanzada
Listar todos los controladores de dominio y su estado
Get-ADDomainController -Filter * | Select-Object Name, IPv4Address, OperatingSystem, IsGlobalCatalog
Elevar un servidor a controlador de dominio
Install-ADDSDomainController -DomainName "dominio.local" -InstallDns -Credential (Get-Credential) -SiteName "Default-First-Site-Name"
Crear OU y delegar permisos
New-ADOrganizationalUnit -Name "Proyectos" -Path "DC=dominio,DC=local"
$ou = "OU=Proyectos,DC=dominio,DC=local"
$group = Get-ADGroup "TI"
dsacls $ou /G "$($group.SamAccountName):LCRP"
Migración y niveles funcionales
Ver esquema y nivel funcional del dominio
Get-ADObject (Get-ADRootDSE).schemaNamingContext -Property objectVersion
Get-ADDomain | Select-Object DomainMode
Get-ADForest | Select-Object ForestMode
Migración: preparar dominio y bosque
Desde ISO o medio de instalación del nuevo sistema (en cmd, no PowerShell):
adprep /forestprep
adprep /domainprep
Subir nivel funcional (solo si todos los DCs ya corren nueva versión)
Set-ADDomainMode -Identity "dominio.local" -DomainMode Windows2016Domain
Set-ADForestMode -Identity "dominio.local" -ForestMode Windows2016Forest
Otros comandos de PowerShell interesantes
Habilitar la papelera de reciclaje de AD
Enable-ADOptionalFeature 'Recycle Bin Feature' -Scope ForestOrConfigurationSet -Target 'dominio.local'
Obtener la OU de todos los usuarios
Get-ADUser -Filter * | Select-Object Name, DistinguishedName
Exportar todos los grupos de un usuario
Get-ADUser cruiz -Properties MemberOf | Select-Object -ExpandProperty MemberOf
Desactivar cuentas que no han iniciado sesión en 6 meses
Search-ADAccount -AccountInactive -UsersOnly -TimeSpan 180.00:00:00 | Disable-ADAccount
Buscar objetos que fueron modificados hoy
Get-ADObject -Filter * -Properties whenChanged | Where-Object { $_.whenChanged -gt (Get-Date).Date }
Active Directory + PowerShell: Automatización, GPOs y Consultas Avanzadas
La gestión de Active Directory con PowerShell te cambia la forma de trabajar. Ya no dependes del ratón ni de GUIs lentas. Desde crear usuarios en lote, hacer auditorías, buscar cuentas inactivas o incluso preparar una migración de versión, PowerShell te lo pone fácil y potente. Y si encima empiezas a integrar tareas con GPOs, la automatización y la gobernanza del entorno se disparan.
La clave está en probar en entorno de laboratorio, dominar los filtros y perderle el miedo al terminal. Porque cuando aprendes a controlar AD desde la consola, no solo automatizas, sino que también entiendes mucho mejor cómo funciona la estructura interna de tu dominio.
Fin del Artículo. ¡Cuéntanos algo en los Comentarios!