Получить список версий и билдов 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

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 недели ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 недели ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 недели ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 недели ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 недели ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 недели ago