PowerShell y Active Directory: Los Comandos Más Importantes para Administradores Exigentes

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.

Geeknetic PowerShell y Active Directory: Los Comandos Más Importantes para Administradores Exigentes 1

 

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"

Geeknetic PowerShell y Active Directory: Los Comandos Más Importantes para Administradores Exigentes 2

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!

Temas Relacionados: Windows PowerShell ActiveDirectory
Redactor del Artículo: Raúl Unzué

Raúl Unzué

Soy un apasionado de la virtualización con más de 20 años de experiencia, especializado en soluciones como VMware(premio vExpert y vExpert Pro desde 2013), Proxmox e Hyper-V. Durante mi carrera, he ayudado a empresas a optimizar sus infraestructuras TI mientras comparto mis conocimientos como redactor IT. Mi objetivo es traducir lo complejo en algo práctico y accesible, combinando teoría con experiencia real. Si te interesa la virtualización, las herramientas TI o simplemente aprender algo nuevo, espero ayudarte con mis artículos.