PowerShell para gestionar Active Directory
Listado de Cmdlets utiles para realizar operaciones y enumeración básica en Active Directory.
Importar módulo de Active Directory
Para utilizar la mayoria de los Cmdlets listados en este artículo, debemos importar en primer lugar el modulo ActiveDirectory.
Import-Module ActiveDirectory
Sistema
Obtener Variables de entorno
Get-ChildItem Env:
Obtener funciones en el scope de Powershell
Get-Command -CommandType Function
Obtener una lista de los modulos de PowerShell cargados
Get-Module
Listar comandos para un módulo específico
Get-Command -Module ActiveDirectory
Obtener información del Dominio
Get-ADDomain
Obtener ayuda de un cmd-let
Get-Help <cmd-let>
Obtener el estado actual de Windows Defender
Get-MpComputerStatus
Obtener AppLockerPolicy
Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
Usuarios
Crear un nuevo usuario
New-ADUser -Name "NombreUsuario" -SamAccountName "NombreUsuario" -UserPrincipalName "NombreUsuario@dominio.com" -AccountPassword (ConvertTo-SecureString -AsPlainText "Contraseña" -Force)
Filtrar por un nombre de usuario especifico
Get-ADUser -Filter * | Where-Object {$_.SamAccountName -eq "NombreUsuario"}
En este comando:
Get-ADUser -Filter *
obtiene todos los usuarios de Active Directory.Where-Object
se utiliza para filtrar los resultados.{}
delimita el script de bloque para la condición de filtro.$_
representa el objeto actual en el pipeline (en este caso, cada usuario obtenido porGet-ADUser
)..SamAccountName
es la propiedad que contiene el nombre de usuario.-eq "NombreUsuario"
es el operador de igualdad para comparar el valor de la propiedadSamAccountName
con el nombre de usuario que deseas buscar.
Filtrar por un usuario donde el campo ServicePrincipalName sea distinto de null
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName
Crear un nuevo usuario asignado algunos atributos
New-ADUser -Name "first last" -Accountpassword (Read-Host -AsSecureString "Super$ecurePassword!") -Enabled $true -OtherAttributes @{'title'="Analyst";'mail'="f.last@domain.com"}
Agregar un usuario a un grupo específico
Add-ADGroupMember -Identity "NombreGrupo" -Members "NombreUsuario"
Cambiar la contraseña de un usuario
Set-ADAccountPassword -Identity "NombreUsuario" -NewPassword (ConvertTo-SecureString -AsPlainText "NuevaContraseña" -Force) -Reset
Forzar el cambio de contraseña en el proximo inicio de sesión
Set-ADUser -Identity amasters -ChangePasswordAtLogon $true
Obtener los grupos del un usuario
$user = Get-ADUser -Identity "NombreUsuario"
$groups = Get-ADPrincipalGroupMembership -Identity $user
$groups | Select-Object -ExpandProperty Name
Quitar un usuario de un grupo
Remove-ADGroupMember -Identity "NombreGrupo" -Members "NombreUsuario"
Deshabilitar una cuenta de usuario
Disable-ADAccount -Identity "NombreUsuario"
Habilitar una cuenta de usuario
Enable-ADAccount -Identity "NombreUsuario"
Desbloquear una cuenta de usuario
Unlock-ADAccount -Identity "NombreUsuario"
Obtener información detallada de un usuario
Get-ADUser -Identity "NombreUsuario" -Properties *
Grupos
Crear un nuevo grupo
New-ADGroup -Name "NombreGrupo" -GroupCategory Security -GroupScope Global -DisplayName "Nombre Descriptivo del Grupo" -Description "Descripción del Grupo"
Listar los miembros de un grupo
Get-ADGroupMember -Identity "NombreGrupo" | Select-Object Name, SamAccountName
Obtener información detallada de un grupo
Get-ADGroup -Identity "NombreGrupo" -Properties *
Renombrar un grupo
Rename-ADObject -Identity "CN=NombreGrupo,OU=Origen,DC=dominio,DC=com" -NewName "NuevoNombreGrupo"
Eliminar un grupo
Remove-ADGroup -Identity "NombreGrupo"
Listar los grupos
Get-ADGroup -Filter * | select name
Obtener una lista de todos los grupos en una OU específica
Get-ADGroup -Filter * -SearchBase "OU=NombreOU,DC=dominio,DC=com"
Obtener una lista de todos los miembros de un grupo
Get-ADGroupMember -Identity "NombreGrupo"
Trusts (Confianzas)
Verificar las relaciones de confianza de dominio
Get-ADTrust -Filter *
Este cmdlet imprimirá las relaciones de confianza que tenga el dominio. Podemos determinar si son confianzas dentro de nuestro bosque o con dominios de otros bosques, el tipo de confianza, la dirección de la confianza y el nombre del dominio con el que está la relación.
Computadoras
Obtener información detallada de un equipo
Get-ADComputer -Identity "NombreEquipo" -Properties *
Obtener una lista de todos los equipos en un dominio
Get-ADComputer -Filter *
Obtener información detallada de un equipo específico
Get-ADComputer -Identity "NombreEquipo" -Properties *
Crear un nuevo objeto de equipo en Active Directory
New-ADComputer -Name "NombreEquipo" -Path "OU=NombreOU,DC=dominio,DC=com"
Cambiar el nombre de un equipo en Active Directory
Rename-ADObject -Identity "CN=NombreEquipo,OU=Origen,DC=dominio,DC=com" -NewName "NuevoNombreEquipo"
Deshabilitar una cuenta de equipo
Disable-ADAccount -Identity "NombreEquipo"
Habilitar una cuenta de equipo
Enable-ADAccount -Identity "NombreEquipo"
Eliminar un objeto de equipo de Active Directory
Remove-ADComputer -Identity "NombreEquipo"
Unidades Organizativas
Crear una nueva Unidad Organizativa
New-ADOrganizationalUnit -Name "NombreOU" -Path "OU=ParentOU,DC=dominio,DC=com"
Mover un objeto (usuario, grupo, etc.) a una OU diferente
Move-ADObject -Identity "CN=NombreObjeto,OU=Origen,DC=dominio,DC=com" -TargetPath "OU=Destino,DC=dominio,DC=com"
Obtener una lista de todas las unidades organizativas
Get-ADOrganizationalUnit -Filter *
Mover un equipo a una unidad organizativa diferente
Move-ADObject -Identity "CN=NombreEquipo,OU=Origen,DC=dominio,DC=com" -TargetPath "OU=Destino,DC=dominio,DC=com"
GPO (Group Policy Object)
Obtener una lista de todas las GPO
Get-GPO -All
Obtener una lista de todas las GPO en un dominio específico
Get-GPO -All -Domain "NombreDominio"
Crear una nueva GPO
New-GPO -Name "NombreGPO"
Cambiar el nombre de una GPO
Rename-GPO -Name "NombreActualGPO" -NewName "NuevoNombreGPO"
Copiar una GPO
Copy-GPO -SourceName "NombreGPOOrigen" -TargetName "NombreGPODestino"
Eliminar una GPO
Remove-GPO -Name "NombreGPO"
Obtener la configuración de una GPO
Get-GPOReport -Name "NombreGPO" -ReportType XML
Establecer la configuración de una GPO
Set-GPRegistryValue -Name "NombreGPO" -Key "HKEY_CURRENT_USER\Software\Ejemplo" -ValueName "Ejemplo" -Type String -Value "ValorEjemplo"
Enlace de una GPO a una OU específica
New-GPLink -Name "NombreGPO" -Target "OU=NombreOU,DC=dominio,DC=com"
Desenlace de una GPO de una OU específica
Remove-GPLink -Name "NombreGPO" -Target "OU=NombreOU,DC=dominio,DC=com"
Realizar una copia de seguridad y restauración de una GPO
Para realizar una copia de seguridad:
Backup-GPO -Name "NombreGPO" -Path "C:\Ruta\Backup"
Para restaurar desde una copia de seguridad:
Restore-GPO -Name "NombreGPO" -Path "C:\Ruta\Backup"
Última actualización