Получить список версий и билдов Windows в домене Active Directory

В статье рассмотрим несколько способов инвентаризации версии и билдов Windows (особенно актуально это для Windows 10) в домене Active Directory. Если у вас средств автоматизации сбора конфигураций компьютеров, например SCCM, GLPI c FusionInventory , или хотя бы сервер обновлений WSUS (он также позволяет показать версию Windows на обнаруженных компьютерах), вы можете использовать PowerShell скрипт для получения билдов Windows на компьютерах.

На отдельно-стоящем компьютере Windows можно получить номер билда из реестра или из SystemInfo:

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

Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer

Для получения списка активных компьютеров в домене Active Directory и версий (билдов) Windows на них можно использовать командлет Get-ADComputers .

Не забывайте периодически отключать и удалять неактивные учетные записи компьютеров в домене .

Убедитесь, что на вашем компьютере установлен модуль Active Directory PowerShell и выполните команду:

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

Чтобы преобразовать номер билда Windows 10 и 11 в более привычный формат (21H1, 21H2 и т.д.), нужно использовать дополнительную функцию.

function ConvertWindowsBuild{
[CmdletBinding()]
param(
[string] $OperatingSystem,
[string] $OperatingSystemVersion
)
if (($OperatingSystem -like '*Windows 10*') –or ($OperatingSystem -like 'Windows 11*')) {
$WinBuilds= @{
'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'
}
}

Теперь, чтобы получить список версий Windows с названиями билдов, IP адресами, и датой последнего входа (регистрации) компьютера в домене, выполните следующий 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

Результат предоставлен в виде таблицы Out-Gridview либо экспортировать в CSV ( Export-Csv -Path .win_builds_report.csv -NoTypeInformation ).

Чтобы вывести суммарную статистику по количеству компьютеров с разными версиями Windows в домене:

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

Также можно удаленно опрашивать компьютеры и получить версию Windows на них через PowerShell Remoting. Этот метод намного более медленный, но позволить получить версию Windows на компьютерах, которые находятся в рабочей группе (как через PSRemoting удаленно подключиться к компьютеру в рабочей группе ). Для получения информации с удаленных компьютеров можно использовать командлет Invoke-Command :

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

Можно получить версию Windows на нескольких компьютеров по списку из txt файла:

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

С помощью рассмотренных PowerShell скриптов вы сможете определить версии и билды Windows на компьютерах домена, найти компьютеры с устаревшими билдами Windows 10 и обновить их (пример обновления билда Windows 10 из командной строки ).

admin

Share
Published by
admin

Recent Posts

Apple: история логотипа

Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…

2 месяца ago

Security Boot Fail при загрузке Acer — решение проблемы

Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…

2 месяца ago

Ноутбук не включается — варианты решения

Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…

2 месяца ago

The AC power adapter wattage and type cannot be determined — причины и решение

The AC power adapter wattage and type cannot be determined — причины и решение При…

2 месяца ago

Свистит или звенит блок питания компьютера — причины и решения

Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…

2 месяца ago

Мигает Caps Lock на ноутбуке HP — почему и что делать?

Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…

2 месяца ago