Encuentre versiones y compilaciones del sistema operativo Windows en Active Directory

Veamos varias formas de inventariar versiones y compilaciones de sistemas operativos Windows en un dominio de Active Directory (es especialmente relevante para Windows 10). Si no tiene ninguna herramienta para obtener automáticamente las configuraciones de la computadora, como SCCM, GLPI con FusionInventory, o al menos el host Windows Server Update (WSUS) (también le permite obtener la versión de Windows en las computadoras descubiertas), puede usar un Script de PowerShell para buscar versiones/compilaciones de Windows en equipos de dominio.

En una computadora independiente, puede obtener una versión de Windows y un número de compilación del registro o con SystemInfo:

Get-ItemProperty 'HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion' | Select-Object ProductName, ReleaseID, CurrentBuild

¿Cómo encontrar la versión de Windows y compilar desde PowerShell?

Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer

Para obtener una lista de equipos activos en un dominio de Active Directory y versiones de Windows (compilaciones) en ellos, puede usar el cmdlet Get-ADComputers.

Asegúrese de que el módulo de Active Directory para PowerShell esté instalado en su computadora y ejecute el siguiente comando:

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

Obtenga una lista de computadoras de dominio con versiones de sistema operativo y compilaciones de Windows

Para convertir el número de compilación de Windows 10 y 11 a un formato más conveniente (21H1, 21H2, etc.), debe usar una función adicional.

function ConvertWindowsBuild{
[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'
}
}

Luego, para obtener una lista de versiones de Windows con nombres de host, números de compilación, direcciones IP y el último inicio de sesión en el dominio de la computadora, ejecute el siguiente script de PowerShell:

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

Puede mostrar el resultado como una tabla Out-GridView o exportar la lista de equipos a un archivo CSV (Export-Csv -Path .windows_version_report.csv -NoTypeInformation).

Script de PowerShell para generar un informe de los sistemas Windows 10 por número de compilación en Active Directory

Para mostrar un resumen de estadísticas en una cantidad de computadoras con diferentes versiones y compilaciones de Windows en su dominio:

$CompList | Group-Object -Property Build | Format-Table -Property Name, Count

Encontrar versiones de Windows en Active Directory

También puede consultar sus computadoras de forma remota y obtener versiones de Windows usando PowerShell Remoting. Este método es más lento, pero le permite obtener versiones de Windows en equipos en un entorno de grupo de trabajo (PSRemoting en un grupo de trabajo). Para obtener información de equipos remotos, puede usar el cmdlet Invoke-Command:

Invoke-Command -ScriptBlock {Get-ItemProperty 'HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion' | Select-Object ProductName, ReleaseID, CurrentBuild} -ComputerName wsk-w12b21| Select-Object PSComputerName,ProductName, ReleaseID, CurrentBuild

Puede obtener versiones de Windows en varias computadoras de acuerdo con la lista en un archivo TXT:

Invoke-Command –ComputerName (Get-Content c:psPC_list.txt) -ScriptBlock {Get-ItemProperty 'HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion' | Select-Object ProductName, ReleaseID, CurrentBuild}|Select-Object PSComputerName,ProductName, ReleaseID, CurrentBuild

Obtenga la versión/compilación de Windows en una computadora remota con PowerShe

Puede usar estos scripts de Powershell para obtener versiones y compilaciones de Windows en computadoras de dominio, encontrar computadoras con compilaciones antiguas (no compatibles) de Windows 10 y actualizarlas (¿Cómo actualizar la compilación de Windows 10 con la línea de comandos?)

Artículos Interesantes