Cómo identificar versiones y compilaciones del sistema operativo Windows en Active Directory

Rastrear las versiones de Windows que se ejecutan en tu red puede ser un verdadero fastidio, especialmente si no cuentas con herramientas de administración adecuadas como SCCM o las habituales. Además, si administras una configuración mixta con Windows 10, 11 o versiones anteriores, la cosa se complica aún más. Por suerte, PowerShell es una gran ayuda en este caso. Tanto si ejecutas sistemas en un dominio como si solo revisas algunos dispositivos, hay maneras de recopilar toda esa información de versión rápidamente. Pero ten cuidado: a veces tendrás que ajustar algunos comandos o asegurarte de que los permisos sean correctos. Pero una vez configurado, ahorra mucho tiempo para rastrear actualizaciones o detectar versiones del sistema operativo no compatibles.

Cómo encontrar versiones y compilaciones de Windows en su red

Obtener información local desde una sola máquina

Esta es la parte más sencilla: si solo quiere ver qué versión de Windows está ejecutando una máquina específica, puede hacerlo directamente desde PowerShell. Ejecute estos comandos:

  • Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object ProductName, ReleaseID, CurrentBuild
  • Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer

Estos te darán el nombre del producto (como Windows 10 Pro), el ID de la versión (como 21H2) y el número de compilación. En algunas máquinas, el primer comando podría fallar la primera vez o no mostrar todos los detalles a menos que ejecutes PowerShell con privilegios de administrador. A veces, un reinicio rápido o ejecutar PowerShell como administrador ayuda.

Obtener información de varias máquinas en Active Directory

Si administra un dominio y desea ver qué hay disponible, puede usar el cmdlet Get-ADComputer. Asegúrese de que el módulo Active Directory esté instalado en su equipo (forma parte de las Herramientas de administración remota del servidor).A continuación, ejecute:

Get-ADComputer -Filter {(Enabled -eq $True)} -Property * | Select-Object Name, OperatingSystem, OperatingSystemVersion

Esto envía la lista de computadoras activas junto con la información de su sistema operativo. Ayuda a detectar versiones obsoletas del sistema operativo o compilaciones no compatibles, especialmente si intentas limpiar o planificar actualizaciones. Un aviso: elimina regularmente las cuentas inactivas para mantener todo ordenado.

Convertir números de compilación en etiquetas de versión más familiares

Windows 10 y 11 tienen números de compilación que no coinciden con las etiquetas comunes, lo que dificulta su identificación a simple vista. Puedes agregar una función rápida para traducir los números de compilación a nombres como 21H1, 22H2, etc. Aquí tienes una función práctica: cópiala en tu sesión de PowerShell:

function Convert-WindowsBuild { [CmdletBinding()] param( [string] $OperatingSystem, [string] $OperatingSystemVersion ) if (($OperatingSystem -like '*Windows 10*') -or ($OperatingSystem -like 'Windows 11*')) { $WinBuilds= @{ '10.0 (22621)' = "Windows 11 22H2"; '10.0 (19045)' = "Windows 10 22H2"; '10.0 (22000)' = "Windows 11 21H2"; '10.0 (19044)' = "Windows 10 21H2"; '10.0 (19043)' = "Windows 10 21H1"; '10.0 (19042)' = "Windows 10 20H2"; '10.0 (18362)' = "Windows 10 1903"; '10.0 (17763)' = "Windows 10 1809"; '10.0 (17134)' = "Windows 10 1803"; '10.0 (16299)' = "Windows 10 1709"; '10.0 (15063)' = "Windows 10 1703"; '10.0 (14393)' = "Windows 10 1607"; '10.0 (10586)' = "Windows 10 1511"; '10.0 (10240)' = "Windows 10 1507"; '10.0 (18898)'= 'Windows 10 Insider Preview' } $WinBuild= $WinBuilds[$OperatingSystemVersion] } else { $WinBuild = $OperatingSystem } if ($WinBuild) { $WinBuild } else { 'Unknown' } }

Esto ofrece una mejor visión al revisar varias máquinas diferentes. Nota: a veces, los datos de compilación pueden no ser perfectos o, si la información del sistema operativo no es estándar, podría indicar «Desconocido».No importa, no es perfecto, pero suele ser suficiente.

Recopilando toda la información en un informe

Si desea una instantánea del entorno Windows de su red (con nombres de host, IP, compilaciones e información del último inicio de sesión), este script es muy útil. Extrae datos de todos los equipos del dominio habilitados y los muestra de forma clara:

$Comps=Get-ADComputer -Filter {(Enabled -eq $True)} -Properties * $CompList=foreach ($Comp in $Comps) { [PSCustomObject] @{ Name = $Comp. Name; IPv4Address = $Comp. IPv4Address; OperatingSystem = $Comp. OperatingSystem; Build = Convert-WindowsBuild -OperatingSystem $Comp. OperatingSystem -OperatingSystemVersion $Comp. OperatingSystemVersion; LastLogonDate = $Comp. LastLogonDate } } $CompList | Out-GridView

O bien, guárdelo en un CSV si desea archivarlo o analizarlo más tarde:

$CompList | Export-Csv -Path.\windows_version_report.csv -NoTypeInformation

De esa manera, obtienes una descripción general rápida de qué sistemas están ejecutando compilaciones obsoletas o no compatibles y puedes planificar en consecuencia.

Obtener información de forma remota sobre las máquinas del grupo de trabajo

No todas las máquinas están en el dominio, así que un truco es consultar directamente a las computadoras remotas (más lento, pero flexible).Use Invoke-Command si la comunicación remota de PowerShell está habilitada en esas máquinas:

Invoke-Command -ScriptBlock {Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object ProductName, ReleaseID, CurrentBuild} -ComputerName wsk-w12b21 | Select-Object PSComputerName, ProductName, ReleaseID, CurrentBuild

Si tiene una lista de computadoras en un archivo de texto, puede automatizar esto para muchas máquinas a la vez:

Invoke-Command -ComputerName (Get-Content c:\ps\PC_list.txt) -ScriptBlock {Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object ProductName, ReleaseID, CurrentBuild} | Select-Object PSComputerName, ProductName, ReleaseID, CurrentBuild

Tenga en cuenta: la comunicación remota de PowerShell debe estar habilitada y configurada en todas las máquinas de destino, lo que no siempre es sencillo en grupos de trabajo.

¿Por qué tomar este camino?

Sinceramente, es la forma más sencilla de ver qué se está ejecutando: sin necesidad de manipular filtros WMI ni spam del navegador, solo scripts sencillos. También ayuda a identificar versiones obsoletas del sistema operativo o compilaciones sin soporte antes de que se conviertan en problemas más graves en el futuro. Además, puedes controlar tu red sin ningún problema.