16

Во время бета-тестирования Windows 10 было трудно узнать, какую версию вы используете, если она не была размещена на рабочем столе. Как только этого не было - как сказать, какую версию / сборку вы используете?

Это станет большей проблемой, так как Microsoft начинает выпускать больше сборок с новым механизмом обновления.

12 ответов12

16

GUI: Настройки, Система, О программе

Не уверен, что это «правильный» способ, но вы можете получить Win10 озвученную / обсуждаемую «версию» (1511, 1607 и т.д.) С помощью этого cmd:

Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId

8

Проверка версии или номера сборки Windows 10 не очень полезна, поскольку со временем она не меняется.

Оказывается, первое предложение неверно; это было верно во всех предыдущих версиях Windows, но сейчас мы находимся в новом мире Windows 10. Последняя сборка инсайдеров имеет номер сборки 10525 по сравнению с "RTM": 10240 .

Есть несколько способов получить номер сборки в командной строке:

systeminfo.exe
(Get-CimInstance -ClassName Win32_OperatingSystem -Namespace root/cimv2).BuildNumber
(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuild).CurrentBuild

Последний из трех самый быстрый.

Если вы предпочитаете графический интерфейс, вы можете использовать winver.exe или пункт « About в меню « Help большинства приложений Windows для настольных ПК.

Поскольку никаких пакетов обновлений больше нет, уровень исправлений в ОС зависит от установленных обновлений. Есть несколько способов найти их: графический интерфейс, systeminfo.exe, wmi и т.д.

Рекомендуемый и наиболее эффективный способ сделать подобные вещи - использовать PowerShell:

Get-HotFix

показывает что-то вроде:

Source        Description      HotFixID      InstalledBy          InstalledOn
------        -----------      --------      -----------          -----------
WIN10         Security Update  KB3074663     NT AUTHORITY\SYSTEM  7/17/2015 12:00:00 AM
WIN10         Security Update  KB3074667     NT AUTHORITY\SYSTEM  7/21/2015 12:00:00 AM
WIN10         Security Update  KB3074674     NT AUTHORITY\SYSTEM  7/24/2015 12:00:00 AM
WIN10         Update           KB3074678     NT AUTHORITY\SYSTEM  7/31/2015 12:00:00 AM

Вы можете фильтровать обновления за последние 10 дней:

Get-Hotfix | Where {$_.InstalledOn -gt $(Get-Date).AddDays(-10) -and $_.Description -eq "Update"}

Или покажите последние три установленных обновления:

Get-Hotfix | Sort-object InstalledOn -Descending | Select -First 3

Вы можете проверить, установлено ли конкретное обновление:

if ((get-hotfix -id kb3087916) -ne $null) {"patched..."}

Сначала вы можете найти последний номер патча kb онлайн:

(New-Object Net.WebClient).DownloadString('https://microsoft.com/...')

А затем проверьте, существует ли он на машине.

Примечание: это всего лишь пример. Я не знаю ни одной страницы, на которой они перечислены, и вам все равно придется ее анализировать.

Вопрос в следующем: со временем Microsoft так сильно изменит функциональность Windows 10, что вам придется проверить, чтобы приложение или скрипт работали.

Возможно, лучше проверить, существует ли в системе нужная вам функция, а не искать номер версии.

6

В настоящее время WMI не имеет свойств, которые можно использовать для полной идентификации версии Windows 10 (например, 1607) или полного номера сборки (например, 10.0.14393.577). Как отмечается в других комментариях, эта информация отображается в реестре в этом ключе:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Следующие значения в этом ключе соответствуют информации, отображаемой программой winver.exe:

ReleaseID = Version (name based on year/month of release: 1507, 1511, 1607, 1703, etc.)
CurrentBuild or CurrentBuildNumber = OS Build (part before period)
UBR = OS Build (part after period)

Кроме того, номера версий находятся в этих двух значениях из этого раздела реестра:

CurrentMajorVersionNumber = 10
CurrentMinorVersionNumber = 0

Сборка изменяется при изменении версии (например, 1607) или при установке сборок Insider. Тем не менее, UBR (Update Build Revision) действительно меняется с некоторыми обновлениями, как указано в списке выпусков Microsoft.

В PowerShell

[System.Environment]::OSVersion.Version

возвращает Major, Minor и Build так же, как ключ реестра, но всегда кажется, что Revision имеет значение 0. Часть кода от пользователя Reddit обеспечивает адекватную замену, которая включает UBR из реестра в качестве номера редакции:

$WinVer = New-Object -TypeName PSObject
$WinVer | Add-Member -MemberType NoteProperty -Name Major -Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' CurrentMajorVersionNumber).CurrentMajorVersionNumber
$WinVer | Add-Member -MemberType NoteProperty -Name Minor -Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' CurrentMinorVersionNumber).CurrentMinorVersionNumber
$WinVer | Add-Member -MemberType NoteProperty -Name Build -Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' CurrentBuild).CurrentBuild
$WinVer | Add-Member -MemberType NoteProperty -Name Revision -Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' UBR).UBR
$WinVer
5

Меня несколько раз спрашивали об этом, поэтому я решил опубликовать это. Есть три способа.

  1. Запустите winver.exe
  2. Запустите ver.exe
  3. Проверьте реестр

Для получения более подробной информации смотрите здесь:http://myhorstsonit.com/2015/07/what-build-version-of-windows-10-am-i-running/

2

Ни один из ранее опубликованных способов не работает, и ни один из них не дает сборку ОС, как показано в разделе «Настройки» → « О программе ». Отсутствует накопленная информация об обновлении.

Вы могли бы сделать что-то вроде этого

$OSmBuild = (Get-WmiObject Win32_OperatingSystem).Version

if($OSmBuild -eq '10.0.10586')
{
    # Windows 10.0.10586.0
    $164 = Get-HotFix | where { $_.HotFixID -eq 'KB3140768' }
    $122 = Get-HotFix | where { $_.HotFixID -eq 'KB3140743' }
    $104 = Get-Hotfix | where { $_.HotfixID -eq 'KB3135173' }

    if($104 -and (!($122)) -and (!($164)))
    {
        Write-Host '104 installed'
    }
    elseif($104 -and $122 -and (!($164)))
    {
        Write-Host '122 installed'
    }
    elseif($104 -and $122 -and $164)
    {
        Write-Host '164 installed'
    }
}

в сценарии PowerShell, но он берет то, что всегда было однострочным, и усложняет мониторинг. Вы можете увидеть обновления здесь:

История обновлений Windows 10

Надеемся, что Microsoft обновит их патчи, чтобы они начали модифицировать BuildNumber.

1

Msinfo32.exe все еще существует (был на 8.1)? Дает много полезной информации, в том числе серийные # и номера моделей, которые могут помочь ноутбукам.

1

PowerShell - это всегда ответ:

Get-CimInstance win32_operatingsystem

Дополнительная информация:

Get-CimInstance Win32_OperatingSystem | Select-Object buildnumber,version

Возвращает:

версия buildnumber
----------- -------
10240 10.0.10240

Вы можете использовать это, чтобы действительно быстро получить эту информацию, плюс вы можете встроить ее в функцию и использовать для получения этой информации от всего вашего парка, если вам нужно.

1

Вы можете вытащить версию из реестра. Вот фрагмент PowerShell для этого:

function Get-RegistryValue($key, $value) {
(Get-ItemProperty $key $value).$value
}
$a1 = Get-RegistryValue "HKLM:\software\microsoft\windows nt\currentversion" CurrentBuild
$a2 = Get-RegistryValue "HKLM:\software\microsoft\windows nt\currentversion" UBR
Write-Host Version $a1'.'$a2
0

Пытаясь найти способ отображения версии Windows 10 и ее версии для одного удаленного компьютера, я заметил, что версия PowerShell соответствует версии Windows.

Это привело меня к созданию следующего сценария. Я добавил тест, чтобы узнать, нужно ли перезагрузить удаленный компьютер для завершения обновления.

$OSChecked = (Read-Host "Computer Name?")
if (Test-Connection -ComputerName $OSChecked -Count 1 -ErrorAction SilentlyContinue)
{
    if ($((Get-Service WinRM -ComputerName $OSChecked).Status) -eq "stopped")
    {
        (Get-Service WinRM -ComputerName $OSChecked).Start()
    }
    Write-Host "`n$((Get-WmiObject win32_computersystem -ComputerName $OSChecked).Name) " -NoNewline ; Invoke-Command -ComputerName $OSChecked -ScriptBlock{if (Get-Item "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" -ErrorAction SilentlyContinue) {Write-Host "Restart Required!" -BackgroundColor DarkYellow -ForegroundColor White}}
    Invoke-Command -ComputerName $OSChecked -ScriptBlock{Write-Host "Version $((Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ProductName) $((Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId), revision $(($PSVersionTable).PSVersion.Revision)"}
}

Это дает такой тип результата:

Computer_Name Version Windows 10 Enterprise 1703, revision 296

В домене AD вы можете заменить свое одиночное <Computer_Name> на переменную, которая содержит целые компьютеры OU.

0

В домене AD вы можете использовать командлет Get-ADComputer PowerShell

Get-ADComputer -Filter {OperatingSystem -eq "Windows 10 Pro"} -Property * | Format-Table Name,OperatingSystem,OperatingSystemVersion -Wrap -Auto
0

Вы можете использовать Reg Query в команде FOR для получения Buildversion, например, 1607:

for /f "usebackq skip=2 tokens=3" %f in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseID`) do (set buildver=%f)
-1

Нам нужно проверить, какой накопительный патч установлен на соответствие. Использование get-hotfix работает, но вызывает проблемы, если установлено позднее накопительное исправление. Лучшее решение - сравнить номер сборки, включая часть исправления. Единственный способ получить это с помощью командной строки - использовать команду командной строки ver, которая не работает напрямую в PowerShell.

$verstring = cmd.exe /c ver
[version]$Winbuild = [regex]::Match($verstring,"(\d+\.\d+\.\d+\.\d+)").value
if ($verstring -ge [version]"10.0.16299.755") {write-host "Compliant"}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .