Crea informes de computadoras en Active Directory con PowerShell. Para encontrar cualquier cosa relacionada con los objetos de computadora en el directorio activo (AD) y sus propiedades, usaremos principalmente el cmdlet Get-ADComputer. Por ejemplo, en un dominio de Active Directory, podemos usar el cmdlet Get-ADComputer de PowerShell para obtener información sobre los objetos de cuenta de computadora (servidores y estaciones de trabajo). Este cmdlet es uno de los más útiles para buscar computadoras de AD según diversos criterios.
Este artículo discute los diversos usos del cmdlet Get-ADComputer y cómo podemos convertirlo en un informe completo y valioso.
Empecemos con el artículo del blog Crear Informes de Computadoras en Active Directory con PowerShell.
Crear informes de equipos de Active Directory con Powershell
Prerrequisitos
Si deseamos seguir los scripts de ejemplo en este artículo, asegúrate de tener lo siguiente:
- Un entorno de AD con al menos un equipo unido al dominio.
- Nivel funcional del dominio – Windows Server 2016.
- Herramientas de administración del servidor remoto (RSAT) para Active Directory instaladas en tu equipo unido al dominio.
- La última versión de PowerShell, o al menos PowerShell 7.x y superior, es requerida para ejecutar los scripts.
Bueno, ¿cómo crear informes de equipos del Directorio Activo con PowerShell? Vamos a averiguarlo.
Entendiendo el comando Get-ADComputer de PowerShell
Antes de comenzar, deberíamos familiarizarnos con el comando Get-ADComputer. No necesitamos privilegios de administrador de dominio para obtener información del Directorio Activo. Usar una cuenta de usuario regular miembro del grupo de usuarios del dominio o Usuarios Autenticados es suficiente.
Bien, el Get-Help comando, como es habitual, proporciona una lista de todos los otros parámetros para el cmdlet Get-ADComputer:
$command = Get-ADComputer
Get-Help $command
Salida de ejemplo:
Alternativamente, podemos acceder a la documentación oficial del comando Get-ADComputer aquí.
Después de desplazarnos por la larga lista de parámetros en nuestra línea de comandos y documentación, podemos comenzar a escribir scripts. Recuerda, el parámetro más crucial que acompaña al comando Get-ADComputer es el Identity parámetro.
Para obtener información sobre una cuenta de equipo específica en el dominio, utilice el parámetro -Identity con su nombre como argumento:
Get-ADComputer -Identity DC01
Aquí está el resultado de muestra:
DistinguishedName : CN=DC01,OU=Servers,OU=DC,OU=IT,DC=infrasos,DC=com
DNSHostName : DC01.infrasos.com
Enabled : True
Name : DC01
ObjectClass : computer
ObjectGUID : 87654321-1204-5578-0000-123462341264
SamAccountName : DC01
SID : S-1-5-21-123656780-1234667890-0986654321-1264
Como resultado, el cmdlet Get-ADComputer devolvió solo las propiedades fundamentales del objeto Equipo desde AD. Sin embargo, ejecutar el comando anterior solo proporciona la información de nivel superior sobre el objeto del equipo. Entonces, si queremos profundizar y mostrar las propiedades disponibles del objeto, podemos utilizar el parámetro -Properties.
Para listar todas las propiedades del objeto, añada el parámetro -Properties y agregue un valor de asterisco (*). El valor de asterisco es el valor comodín que indica TODOS:
Get-ADComputer -Identity DC01 -Properties *
Resultado de muestra:
Por otro lado, podemos navegar dentro de la consola de Usuarios y Computadoras de Active Directory (o dsa.msc) y ver las propiedades desde allí. Finalmente, selecciona un objeto de computadora y navega hasta la pestaña del Editor de Atributos para ver la lista de propiedades del objeto de computadora.
Filtrando Resultados de Get-ADComputer
Un inconveniente es que podríamos mostrar más información sobre cosas que no necesariamente necesitamos. Usando el conducto de PowerShell, el cmdlet Get-ADComputer nos permite mostrar propiedades específicas de la computadora en la línea de comando. Por ejemplo, podemos dejar solo los valores de Nombre y ÚltimaFechaDeInicioDeSesión en la salida mediante el paso del comando Format-Table a la sintaxis principal:
Get-ADComputer -Identity DC01 -Properties * | Format-Table Name, LastLogonDate -Autosize
Salida de ejemplo:
Aquí, Windows PowerShell calcula anchos de columna en función de los datos reales mostrados si especificamos el parámetro AutoSize cuando ejecutamos el comando Format-Table. En resumen, este parámetro hace que las columnas sean legibles.
Sin embargo, el comando anterior solo busca un objeto de equipo de AD único. Por lo tanto, si quisiéramos información sobre todos los equipos en el dominio, podemos reemplazar el Identidad parámetro con Filtro:
Get-ADComputer -Filter * -Properties * | Format-Table Name, Created -Autosize
Vea la salida de muestra:
Obtenemos una tabla con formato simple que contiene solo dos campos: el nombre del equipo y la fecha de creación del objeto. Podemos agregar otras columnas del objeto de equipo de AD a esta tabla agregando propiedades en el Format-Table sección del pipeline.
Básicamente, para obtener información sobre los objetos de equipo en una unidad organizativa (OU) en particular, podemos usar el –SearchBase parámetro:
Get-ADComputer -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Filter * -Properties * | Format-Table Name, Created -Autosize
Además, también podemos ordenar los resultados de la consulta insertando el Sort-Object cmdlet en la canalización:
Get-ADComputer -Filter * -Properties * | Sort-Object Created | Format-Table Name, Created -Autosize
En el comando anterior, el comando Sort-Object ordena los resultados del Get-ADComputer primero por Created y luego lo pasa a Format-Table para su visualización.
Usar filtros de búsqueda con Get-ADComputer
Utilizamos el Get-ADComputer cmdlet’s -Filter argumento para buscar múltiples AD computadoras basadas en criterios específicos. Como se mencionó, podemos usar comodines y operadores de comparación lógica en este caso. Ciertamente, como filtros, solo podemos usar atributos primarios de objetos de computadora.
Igualmente, utilizamos el Where-Object para aplicar filtros de búsqueda en atributos extendidos de la computadora. Los siguientes son ejemplos más prácticos de cómo consultar y buscar objetos de computadora en el dominio utilizando el Get-ADComputer comando.
Obtener el número total de todas las computadoras activas y no bloqueadas en Active Directory:
Buscamos computadoras utilizando múltiples filtros al mismo tiempo. Utilice PowerShell operadores de comparación lógica para lograr esto.
(Get-ADComputer -Filter {Enabled -eq "true"}).Count
Mostrar todos los hosts de Windows Server en el dominio de AD:
Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*' }
Obtener una lista de todas las computadoras en un OU específico cuyos nombres comiencen con DC:
Get-ADComputer -Filter {Name -like "DC*"} -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Properties * | Format-Table Name
Al buscar en el OU, podemos usar el –SearchScope1 parámetro para limitar nuestra búsqueda solo al OU raíz. La -SearchScope2 opción realiza una búsqueda recursiva de computadoras en todos los OUs.
Administrar múltiples computadoras con Get-ADComputer
Debemos usar el Foreach-Object bucle para realizar una acción específica en todas las computadoras de la lista resultante.En este ejemplo, podemos consultar múltiples computadoras de AD de forma remota utilizando Windows Management Instrumentation o Common Information Classes:
Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Foreach-Object {
Get-CimInstance Win32_Bios -ComputerName $_.Name -ErrorAction SilentlyContinue |
Select-Object PSComputerName
}
Evidentemente, en este ejemplo, si queremos una lista de hosts de Windows Server en el dominio, junto con su modelo y fabricante, utilizamos el mismo método de bucle y obtenemos las propiedades de la computadora.
$Computers = Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*'}
Foreach ($Computer in $Computers){
$Hostname = $Computer.Name
$ComputerInfo = (Get-WmiObject -Computername $Hostname Win32_ComputerSystem)
$Manufacturer = $Computer.Manufacturer
$Model = $Computer.Model
Write-Output "Name: $Hostname"
Write-Output "Manufacturer: $Manufacturer"
Write-Output "Model: $Model"
Write-Output " "
}
Entonces, la información obtenida de los ejemplos anteriores está disponible de manera inmediata a través de los servicios de dominio ya que estas computadoras forman parte de AD. Sin embargo, no todas las computadoras publican sus propiedades en el dominio. ¿Cómo podemos obtenerlas?
A continuación, hacemos uso del Invoke-Command. Por lo tanto, este cmdlet de PowerShell ejecuta comandos locales en la computadora remota. Por ejemplo, supongamos que necesitamos ejecutar un comando específico en todas las computadoras de un OU en particular. En este ejemplo, usemos el Invoke-Command para ejecutar un comando de actualización de directiva de grupo en todos los servidores:
Get-ADComputer -SearchBase "OU=DC,DC=infrasos,DC=com" -Filter * |
%{ Invoke-Command -Computer $_.Name -ScriptBlock { gpupdate /force } }
Generar informes de AD con Get-ADComputer en PowerShell
En Windows PowerShell, exportamos la salida de nuestros comandos en múltiples formatos de informe. Aquí hay algunos ejemplos a continuación.
Primero, exportamos el resultado del comando Get-ADComputer a un archivo de texto:
Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2019*' } -Properties * |
Select Name, OperatingSystem |
Format-Table -AutoSize C:\Temp\2019_servers.txt
En segundo lugar, también obtenemos una lista de todos los equipos y la exportamos a un valor separado por comas(CSV) archivo:
Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Export-CSV All-Computers.csv -NoTypeInformation
En tercer lugar, también podemos exportar nuestro informe y obtener un formato de página web HTML con una lista de todos los equipos y propiedades esenciales:
Get-ADComputer -Filter * -Properties * |
Select-Object Name,OperatingSystem |
ConvertTo-Html |
Out-File C:\ps\ad_all_computers.html
Debería verse algo como esto:
Gracias por leer Crear informes de equipos de Active Directory con PowerShell. Lo concluiremos.
También lea Implementación de monitoreo de Azure AD
Conclusión de informes de equipos de Active Directory utilizando Powershell
En este artículo, hemos discutido el comando Get-ADComputer de manera exhaustiva. Aprendimos que con este comando, podemos obtener una lista detallada de propiedades e información para una máquina en particular. Además, con una lista exhaustiva, hemos aprendido cómo filtrar estas propiedades solo para obtener la información que necesitamos.
Source:
https://infrasos.com/create-active-directory-computer-reports-with-powershell/