Get-ADObject: cómo buscar y obtener objetos AD con PowerShell
Cada usuario, computadora, contenedor u unidad organizativa en Active Directory es un objeto. Para cada uno de ellos hay cmdlets dedicados que podemos usar para recuperar o actualizar información. Pero para obtener objetos eliminados necesitaremos usar el cmdlet Get-ADObject.
El cmdlet Get-ADObject puede recuperar todos los objetos de Active Directory. Con la ayuda de filtros, podemos seleccionar la información que necesitamos. El cmdlet también nos permite recuperar toda la información del AD con un solo comando, lo que lo hace excelente para exportar estructuras de Active Directory.
En este artículo, veremos cómo utilizar el cmdlet Get-ADObject y recuperar objetos eliminados.
Instalar el módulo Active Directory
Para poder utilizar el cmdlet Get-ADObject en PowerShell, necesitará tener instalado el módulo Active Directory. De forma predeterminada, está instalado en el controlador de dominio, pero en Windows 10 u 11 deberá instalarlo.
Puede ejecutar el siguiente comando de PowerShell en Windows 10 u 11 para instalar el módulo:
Add-WindowsCapability -online -Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”Buscar objetos con Get ADObject en PowerShell
El cmdlet Get-ADObject nos permite buscar objetos en Active Directory y extraer información de ellos. El verdadero poder de este cmdlet es que viene con diferentes opciones para encontrar esos objetos.
Disponemos de las siguientes opciones a la hora de buscar objetos:
Identidad : busque un objeto según su identidad. Esto devolverá solo un único objeto.
Filtro : recupera varios objetos según una consulta
LDAPFilter : utilice una cadena de consulta LDAP para filtrar objetos
SearchBase : especifique la ruta de Active Directory (OU) para buscar
SearchScope : especifique la profundidad con la que desea realizar la búsqueda (nivel base, un nivel o subárbol completo).
Para utilizar la identidad necesitará conocer el GUID o el nombre distinguido del objeto. En la mayoría de los casos, solo usó el parámetro de identidad cuando pasó un objeto a través de la canalización.
Uso del filtro
Para buscar y encontrar objetos, normalmente utilizará el parámetro -filter. Con el filtro podemos buscar uno o más objetos en Active Directory. El parámetro de filtro utiliza el lenguaje de expresión de PowerShell para filtrar el resultado. Esto significa que podemos utilizar los siguientes operadores en nuestras consultas:
- -eq
igual
- -le
-
Menos que o igual a
- -ge
Mayor o igual a
- -ne
No igual a
- -lt
Menos que
- -gt
mayor entonces
- -like
Como
- -notlike
Diferente a
- -and -or
y/o
- -not
No
Echemos un vistazo a un par de ejemplos para recuperar objetos de Active Directory usando el filtro.
Podemos buscar todos los objetos según su nombre. Este puede ser el nombre exacto, o podemos usar el parámetro -like para filtrar una parte del nombre. Tenga en cuenta que puede utilizar un * como comodín en el filtro Me gusta:
# Get all objects that have the name Amsterdam:
Get-ADObject -Filter "Name -eq 'Amsterdam'"
# Get all ojects where the name starts with LA-
Get-ADObject -Filter "Name -like 'LA-*'"Un ejemplo más realista para el cmdlet Get-ADObject es obtener todos los objetos que se modifican después de una fecha específica. Para esto, primero necesitaremos crear un objeto de fecha, que luego podremos usar para filtrar los objetos:
$ChangeDate = Get-Date("01 may 2023")
Get-ADObject -Filter 'whenChanged -gt $ChangeDate'Puedes usar el mismo principio para obtener todos los objetos que se crean después de una fecha específica:
$CreatedDate = Get-Date("01 may 2023")
Get-ADObject -Filter 'whenCreated -gt $CreatedDate'Filtrado por ObjectClass
Cada objeto en Active Directory tiene una clase de objeto. La clase determina el tipo de objeto. Podemos usar ObjectClass en nuestros filtros cuando buscamos objetos con el cmdlet Get-ADObject.
Hay muchas clases en AD, alrededor de 50 en total. No voy a enumerarlas todas aquí, pero a continuación encontrará las clases más utilizadas que podemos usar:
computadora
contacto
grupo
unidad organizacional
usuario
Para ver todas las clases, puede usar el siguiente comando en PowerShell
Get-Adobject -filter * | Select objectClass -unique | sort-object ObjectClassCombinación de filtros
También podemos expandir nuestra consulta de filtro con múltiples expresiones. Esto le permite limitar aún más sus consultas de filtro. Por ejemplo, solo queremos obtener todas las computadoras que se crearon en los últimos 30 días:
$CreatedDate = (Get-Date) - (New-TimeSpan -Days 30)
Get-ADObject -Filter 'whenCreated -gt $CreatedDate -and objectCategory -eq "computer"'Obtener ADObject SearchBase
El cmdlet Get-ADObject devuelve todos los objetos (limitados a 1000 de forma predeterminada) cuando se utilizan filtros. Probablemente quieras limitar los resultados de la búsqueda. Para hacer esto podemos usar el parámetro -SearchBase. Esto nos permite especificar la unidad organizativa (nombredistinguido) donde queremos buscar.
Para especificar la unidad organizativa donde queremos buscar, debemos escribir el nombre distinguido de abajo hacia arriba. Por lo tanto, la cadena comienza con la unidad organizativa donde desea buscar y termina con el nombre de dominio.
Tome la siguiente estructura de Active Directory, queremos obtener todos los usuarios de la unidad organizativa de TI:
La cadena SearchBase , en este caso, sería:
1: IT
2: Amsterdam
3: Sites
4: Lazyadmin
5: NL
"OU=IT,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL"Por lo tanto, para obtener todos los objetos del departamento de TI en Ámsterdam podemos usar el siguiente comando de PowerShell:
Get-ADObject -Filter * -SearchBase "OU=IT,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" | ftUso de SearchScope
De forma predeterminada, el parámetro -SearchBase devolverá todos los objetos de la unidad organizativa especificada y de las unidades organizativas anidadas. Esto no siempre es lo que se desea, es posible que solo desee devolver los resultados de la unidad organizativa especificada o solo de un nivel de profundidad. Con el parámetro -SearchScope podemos especificar con qué profundidad queremos o no buscar en el árbol de Active Directory. Puede utilizar los siguientes valores para SearchScope:
Base
Un nivel
Subárbol
Para obtener solo los objetos de la unidad organizativa Amsterdam podemos usar el parámetro SearchScope Base. Esto nos permite limitar SearchBase solo al nivel actual:
Get-ADUser -Filter * -SearchBase "OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" -SearchScope OneLevel | ftObtener objetos eliminados
Los cmdlets dedicados, como Get-ADUser y Get-ADComputer, no pueden recuperar los objetos eliminados de Active Directory. Para obtener objetos eliminados del AD, necesitaremos usar el cmdlet Get-ADObject con el parámetro IncludeDeletedObjects.
Nota
Asegúrese de haber habilitado la papelera de reciclaje de Active Directory. De lo contrario, no podrás encontrar los objetos eliminados.
Para obtener todas las computadoras eliminadas, podemos usar el siguiente comando. Tenga en cuenta que también necesitamos agregar el filtro isDeleted -eq $true. De esta forma sólo se devuelven los objetos que se eliminan. También filtramos los objetos según la clase de objeto:
Get-ADObject -Filter 'objectClass -eq "computer" -and isDeleted -eq $True' -IncludeDeletedObjects | ftNo todos los objetos eliminados también se pueden restaurar. El siguiente comando devuelve solo los objetos que se eliminan y que se pueden restaurar. También filtra el contenedor de Objetos eliminados del resultado:
Get-ADObject -Filter 'isDeleted -eq $True -and -not (isRecycled -eq $True) -and name -ne "Deleted Objects"' -IncludeDeletedObjects Conclusión
El cmdlet Get-ADObject le permite recuperar todos los objetos del AD con un solo cmdlet. El uso de los diferentes filtros le permite recuperar sólo la información que realmente necesita. Puede exportar los resultados del cmdlet fácilmente con el cmdlet Export-CSV.
Asegúrate de consultar también mis artículos sobre Get-ADUser y Get-ADComputer, ambos con un script completo para exportar toda la información que necesitas.
Si tiene alguna pregunta, simplemente deje un comentario a continuación.

