Найдите версии и сборки ОС Windows в Active Directory
Давайте рассмотрим несколько способов инвентаризации версий и сборок ОС Windows в домене Active Directory (особенно актуально для Windows 10). Если у вас нет инструментов для автоматического получения конфигураций компьютера, таких как SCCM, GLPI с FusionInventory или хотя бы узла Windows Server Update (WSUS) (он также позволяет получать версию Windows на обнаруженных компьютерах), вы можете использовать Скрипт PowerShell для поиска версий/сборок Windows на компьютерах домена.
На автономном компьютере вы можете получить версию Windows и номер сборки из реестра или с помощью SystemInfo:
Get-ItemProperty 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object ProductName, ReleaseID, CurrentBuildGet-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 (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'
}
}Затем, чтобы получить список версий 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 .\windows_version_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:SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object ProductName, ReleaseID, CurrentBuild} -ComputerName wsk-w12b21| Select-Object PSComputerName,ProductName, ReleaseID, CurrentBuild
Вы можете получить версии Windows на нескольких компьютерах согласно списку в файле TXT:
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Вы можете использовать эти сценарии Powershell для получения версий и сборок Windows на компьютерах домена, поиска компьютеров со старыми (неподдерживаемыми) сборками Windows 10 и их обновления (Как обновить сборку Windows 10 с помощью командной строки?).




