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 por Get-ADUser).

  • .SamAccountName es la propiedad que contiene el nombre de usuario.

  • -eq "NombreUsuario" es el operador de igualdad para comparar el valor de la propiedad SamAccountName 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