Esta guía le ayudará a crear un informe detallado de todos los equipos de su entorno de Active Directory. El informe incluirá información sobre si cada equipo está conectado, quién ha iniciado sesión y una lista de todos los equipos de su dominio. Estos pasos son útiles para los administradores de sistemas que intentan controlar su red, especialmente cuando la situación se vuelve caótica.

Prerrequisitos

  • Asegúrese de tener derechos de administrador en su servidor Windows (sin excepciones).
  • El módulo Active Directory debe instalarse en un controlador de dominio o en una máquina con herramientas RSAT.
  • Tenga PowerShell abierto, preferiblemente con privilegios de administrador.

Paso 1: Abra PowerShell como administrador

Simplemente busca PowerShell en el menú Inicio, haz clic derecho y selecciona » Ejecutar como administrador». Si ya usas una sesión con privilegios elevados, perfecto, ya tienes la mitad del camino recorrido.

Paso 2: Importar el módulo de Active Directory

Esto es imprescindible antes de ejecutar comandos de AD, especialmente si PowerShell genera errores sobre cmdlets faltantes. Ejecutar:

Import-Module ActiveDirectory

A veces, en los servidores, este módulo se carga automáticamente, pero normalmente hay que hacerlo manualmente. Esto ayuda a garantizar que comandos como Get-ADComputereste funcionen.

Paso 3: Toma tu lista de computadoras

Aquí es donde le indica a PowerShell que obtenga todos los nombres de máquinas en su dominio:

$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name

Esto extrae todos los objetos del equipo. Ten en cuenta que, si tu dominio es grande, esto puede tardar un segundo. Además, asegúrate de que tu cuenta tenga permisos de lectura desde AD.

Paso 4: Preparar una matriz para los resultados

Básicamente, configura un contenedor en blanco para almacenar la información a medida que avanzas:

$results = @()

Paso 5: Recorra cada computadora y verifique el estado

Esta es la parte complicada: envía un ping a cada máquina para comprobar si está conectada y luego intenta obtener al usuario conectado. Aquí tienes una versión simplificada:

 foreach ($computer in $computers) { if (Test-Connection -ComputerName $computer -Count 2 -Quiet) { try { $user = Invoke-Command -ComputerName $computer -ScriptBlock { (Get-WMIObject -Class Win32_ComputerSystem).UserName } -ErrorAction Stop $status = "Online" } catch { // Sometimes, remote commands fail even if ping works, weirdly.$user = "Access Denied" // Or just leave blank, depending.$status = "Online" } } else { $user = "N/A" $status = "Offline" } $results += [PSCustomObject]@{ ComputerName = $computer Status = $status LoggedInUser = $user } } 

¿Cuál es el razonamiento? Ping comprueba la accesibilidad de la red; Invoke-Command intenta obtener información sobre quién ha iniciado sesión. Claro que los firewalls o los permisos pueden causar problemas. Si recibe errores de acceso denegado, verifique que la comunicación remota de PowerShell esté habilitada en las máquinas remotas ( el comando Enable-PSRemoting ayuda).A veces falla la primera vez que se ejecuta, pero vuelve a funcionar tras reiniciar o reiniciar rápidamente los servicios de WinRM.

Paso 6: Guardar los resultados en un archivo

Una vez que hayas recopilado toda la información, guárdala en un CSV para no tener que desplazarte por los mensajes de PowerShell:

$results | Export-Csv -Path "C:\ComputerListStatus.csv" -NoTypeInformation

Este archivo se guardará en C:\, o puede cambiar la ruta si lo prefiere. Puede abrirlo con Excel para una vista más clara.

Consejos adicionales y problemas comunes

Si algunos equipos no responden o recibe muchos mensajes de «Acceso denegado», verifique que los equipos permitan comandos remotos de PowerShell y que su usuario tenga los permisos correctos. Además, verifique los problemas de red; a veces, un puerto bloqueado ( 5985 para HTTP o 5986 para HTTPS) puede ser la causa.

O bien, si sus comandos parecen lentos o se bloquean, podría valer la pena ejecutar el script en unidades organizativas más pequeñas o filtrar las máquinas una por una. PowerShell puede ser un poco inestable, especialmente en entornos grandes.

Conclusión

Siguiendo estos pasos, obtendrá una visión general bastante precisa del estado de su red. Resulta útil para auditorías, resolución de problemas o planificación de actualizaciones. No sé por qué, pero a veces funciona a la perfección; otras veces, la configuración o los permisos de red lo alteran. Aun así, es mejor que adivinar.

Preguntas frecuentes

¿Qué pasa si no tengo instalado el módulo Active Directory?

Puede agregarlo a través de Configuración de Windows > Aplicaciones y características > Características opcionales o Administrador del servidor > Agregar roles y características. Busque las herramientas RSAT e instale el Módulo de Active Directory para Windows PowerShell.

¿Puedo cambiar la ruta del archivo CSV?

Sí, simplemente modifica la ruta en el comando de exportación. Por ejemplo, para guardar en Descargas, haz lo siguiente:

$results | Export-Csv -Path "$env:UserProfile\Downloads\ComputerStatus.csv" -NoTypeInformation

¿Cómo puedo comprobar sólo una máquina específica?

Reemplace el $computersbucle con una cadena de nombre de host fija, como:

$computerName = "DESKTOP-XYZ" if (Test-Connection -ComputerName $computerName -Count 2 -Quiet) {...}

Muy útil si solo quieres información sobre una máquina en lugar de todo el dominio.

Resumen

  • Asegúrese de que PowerShell tenga cargado el módulo AD.
  • Haga ping a cada máquina e intente realizar comprobaciones SCM remotas.
  • Recopilar información sobre el usuario que ha iniciado sesión actualmente.
  • Guárdelo como CSV para revisarlo fácilmente.

Crucemos los dedos para que esto ayude y le ahorre a alguien horas de comprobaciones manuales o de arrancarse el pelo.