Como encontrar a versão / compilação do Windows 10


19

Durante a versão beta do Windows 10, era difícil saber qual versão você estava executando, a menos que ela fosse postada na área de trabalho. Uma vez que não estava lá - como você diz qual versão / build você está executando?

Isso se tornará mais um problema, pois a Microsoft começa a lançar mais compilações com o novo mecanismo de atualização.


Não acredito que as atualizações alterem o número da compilação.
Joeqwerty 17/08/2015

Respostas:


19

GUI: Configurações, Sistema, Sobre

Não tenho certeza se esse é o caminho 'adequado', mas você pode obter a 'versão' vocalizada / comentada do Win10 (1511, 1607 etc.) através deste cmd:

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

Aqui está a página da Microsoft para correlacionar os números de compilação à 'versão' do Win10 ( link de backup [wiki] apenas no caso ). Ajudou-me quando recebo o build # do PC remoto:wmic /node:HOSTNAME os get BuildNumber


6
Obrigado - isso me ajudou muito. Apenas para o caso - versão PowerShell do seu comando seria(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
Anton Krouglov

Isso não funciona no Windows 10 Enterprise LTSB. Apenas as soluções que ler a versão do PowerShell diretamente trabalho para mim
phuclv

Estou executando o LTSB eu mesmo e funciona para mim?
Gregg

também não está funcionando no meu Windows 10 Pro mais recente: no 10.0.17730.1000 (isto é, compilação 17730) ele fornece ReleaseId REG_SZ 1803. Este e este obras
phuclv

@AntonKrouglov é o ID da versão e não a versão atual. Você precisa usar (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuildNumber).CurrentBuildNumberou (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuild).CurrentBuildpara o número de compilação
phuclv

9

Verificar a versão ou o número da compilação do Windows 10 não é muito útil, pois não muda com o tempo.

Acontece que a primeira frase está errada; isso era verdade em todas as versões anteriores do Windows, mas agora estamos em um novo mundo do Windows 10. A última insiders compilação tem um número de compilação de 10525comparação com "RTM": 10240.

Existem várias maneiras de obter o número da compilação na linha de comando:

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

O último dos três é o mais rápido.

Se você preferir a GUI, poderá usar o winver.exe ou a Aboutentrada no Helpmenu da maioria dos aplicativos da área de trabalho do Windows.

Com nenhum service pack disponível, o nível do patch no sistema operacional depende das atualizações instaladas. Existem várias maneiras de encontrar essas, GUI, systeminfo.exe, wmi, etc.

A maneira recomendada e mais poderosa de fazer coisas assim é usar o PowerShell:

Get-HotFix

mostra algo como:

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

Você pode filtrar por atualizações nos últimos 10 dias:

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

Ou mostre as três últimas atualizações instaladas:

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

Você pode verificar se uma atualização específica está instalada:

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

Você pode encontrar o número do patch kb mais recente on-line, como:

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

E depois verifique se existe na máquina.

Nota: este é apenas um exemplo. Não conheço uma página que atualmente as lista e você ainda precisa analisá-la.

A questão é: com o tempo, a Microsoft alterará tanto a funcionalidade do Windows 10 que você precisará verificar se o aplicativo ou script funciona.

Pode ser uma idéia melhor verificar se um recurso específico que você precisa existe no sistema, em vez de procurar um número de versão.


"era verdade em todas as versões anteriores do Windows" De fato, isso não ocorre desde o Windows 95, pelo menos. O Windows 95 e Windows 95 OSR2 tinham números de compilação diferentes. Assim como o Windows 98 e Windows 98se. Assim como o Windows XP, Windows XP SP1, Windows XP SP2 e assim por diante.
Cliff Armstrong

8

No momento, o WMI não possui propriedades que possam ser usadas para identificar completamente a versão do Windows 10 (como 1607) ou o número de compilação completo (como 10.0.14393.577). Conforme declarado em outros comentários, essas informações são visíveis no registro sob esta chave:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Os seguintes valores nessa chave correspondem às informações exibidas pelo programa 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)

Além disso, os números de versão estão nesses dois valores dessa chave do Registro:

CurrentMajorVersionNumber = 10
CurrentMinorVersionNumber = 0

A construção muda quando a Versão (como 1607) muda ou quando as construções do Insider são instaladas. No entanto, o UBR (Update Build Revision) muda com determinadas atualizações, conforme indicado na lista de versões da Microsoft .

No PowerShell,

[System.Environment]::OSVersion.Version

retorna Maior, Menor e Construa o mesmo que a chave do Registro, mas sempre parece reportar a Revisão como 0. Um pouco de código de um usuário do Reddit fornece uma substituição adequada que inclui o UBR do Registro como o número da Revisão:

$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

@ Ramhound ou seja, toda a sua resposta ?!
oldmud0

@ oldmud0 é claro que não; há algo que é aceitável
Ramhound

@RamHound Obrigado pelo feedback. Eu cortei alguns pedaços. Se ainda estiver muito detalhado, me avise.
Shem Sargent

Essa é a resposta correta. Inclui ReleaseID (por exemplo, 1607), build (por exemplo, 14393) e UBR (o número que muda a cada release mensal). Observe que ReleaseID e build são redundantes, pois existe um mapeamento 1-1 entre os dois; Eu adoraria ler algo da Microsoft sobre por que esses dois números existem.
aggieNick02

5

Me pediram isso algumas vezes, então pensei em publicá-lo. Existem três maneiras.

  1. Execute o winver.exe
  2. Execute o ver.exe
  3. Verifique o registro

Para obter mais detalhes, consulte aqui: http://mythoughtsonit.com/2015/07/what-build-version-of-windows-10-am-i-running/


2
Infelizmente, a Microsoft não fornece um mecanismo para determinar a versão da atualização cumulativa. Como eles realmente não fornecem mais service packs do sistema operacional, seriam informações úteis. Uma alternativa seria usar o comando WMIC para consultar uma versão de rollup específica. Por exemplo, WMIC QFE GET HotfixID, InstalledOn, Description | FINDSTR /I "KB3081438"para determinar se a UC de 15 de agosto de 2015 está instalada. Uma data InstalledOn em branco indica que o sistema não foi reiniciado para concluir a instalação.
Greg Askew

11
O Buildnumber 10240 não muda com as atualizações. O último número 16xxx muda quando o kernel recebe uma atualização.
magicandre1981

2
No meu livro, essa é a única resposta correta verdadeira. Apesar das alegações de que ele não exibe a "versão de atualização cumulativa" que realmente apresenta, agora você precisa saber qual é a versão atual, para compará-la, mas nenhuma das outras respostas também lida com esse problema.
Ramhound

Executar o winver na linha de comando funciona como um encanto. Obrigado!
Andreas

isso não funcionará no Windows 10 LTSB
phuclv

2

Nenhuma das formas postadas anteriormente funciona e nenhuma delas fornece o SO Build como aparece na seção ConfiguraçõesSobre . Faltam as informações de atualização cumulativa.

Você poderia fazer algo assim

$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'
    }
}

em um script do PowerShell, mas é necessário algo que sempre foi uma linha e torna mais difícil o monitoramento. Você pode ver as atualizações aqui:

Histórico de atualizações do Windows 10

Espero que a Microsoft atualize seus patches para começar a modificar o BuildNumber.


"Espero que a Microsoft atualize seus patches para começar a modificar o BuildNumber" que aconteceu desde 29 de julho de 2015 ......
Ramhound 15/03/16

@Ramhound acontece desde 29 de julho de 2015 ou não? Sempre que ligo para Win32_OperatingSystem.Version, não recebo o número de compilação do SO, recebo 10.0.10586.0 quando a compilação do SO em Configurações> Sistema> Sobre é 10.0.10586.164
d4rkcell

A compilação não foi alterada até o Limite 2. Desde o Limite 2, o número da compilação foi alterado, com os patches cumulativos. Eu nunca disse que Win32_OperatingSystem.Versiondeveria funcionar da maneira que você descreve, mas a compilação está mudando por winver(em outras palavras, estou dizendo que seu script está com falha).
Ramhound

Não, ele tem na interface do usuário, mas no WMI, especialmente ao consultar o Win32_OperatingSystem, o número da versão aqui ainda diz 10.0.10586 e o ​​BuildNumber ainda diz 10586. Estou em uma máquina com OSBuild 10586.164 em Configurações> Sistema sobre compilação do sistema operacional seção, mas no WMI não. Por que você não lê o que eu digitei?
d4rkcell

1

O msinfo32.exe ainda está por aí (a partir de 8.1)? Dá muitas informações úteis, incluindo números de série e números de modelo, o que pode ajudar bastante em laptops.


(se for, será na área de resumo do sistema sob OS Nome no topo.)
radiks32

mas só começa a GUI e não uma solução de linha de comando
phuclv

1

Você pode extrair a versão do registro. Aqui está um snipit do PowerShell para fazer isso:

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

1

O PowerShell é sempre a resposta:

Get-CimInstance win32_operatingsystem

Mais Informações:

Get-CimInstance Win32_OperatingSystem | Select-Object buildnumber,version

Devoluções:

versão buildnumber
----------- -------
10240 10.0.10240

Você pode usá-lo para obter rapidamente essas informações, além disso, pode transformá-las em uma função e usá-las para obter essas informações de toda a sua frota, se necessário.


2
Esta resposta poderia usar um pouco mais de explicação.
kasperd

0

Em um domínio do AD, você pode usar o cmdlet Get-ADComputer do PowerShell

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

0

Você pode usar a consulta de registro em um comando FOR para obter o Buildversion, por exemplo, 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)

isso não funciona exatamente como a atual solução votada . O 1607 é não a versão de compilação que é o único com "Build OS"
phuclv

0

Ao tentar encontrar uma maneira de exibir a versão do Windows 10 e sua revisão para um único computador remoto, notei que a revisão da versão do PowerShell seguia a revisão do Windows.

Isso me levou a criar o seguinte script. Adicionei um teste para saber se o computador remoto precisa reiniciar para concluir a atualização.

$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)"}
}

Isso fornece este tipo de resultado:

Computer_Name Version Windows 10 Enterprise 1703, revision 296

Em um domínio do AD , você pode substituir o seu <Computer_Name> único por uma variável que contém todos os computadores de uma UO.


por que você escreve um script tão complexo? Ele não funciona no meu PC local que não está associado a nenhum domínio. E pedir aos usuários para digitar o nome do computador não é amigável. Parece que o único comando importante aqui é 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)", mas ele me fornece Windows 10 Pro 1803, revision 100010.0.17730.1000, que está incorreto. A versão de compilação é 17730
phuclv

Aparentemente, você tem duas contas de superusuário : Frantz Kopanicki e Frantz Kopanicki . Isso interferirá nos comentários, na edição de suas próprias postagens e na aceitação de uma resposta. Reserve um tempo para utilizar este tutorial da Central de Ajuda e peça à equipe de superusuários para mesclar suas contas.
robinCTS

-1

Precisamos verificar qual patch cumulativo está instalado para conformidade. O uso de get-hotfix funciona, mas causa problemas se um patch cumulativo posterior estiver instalado. A melhor solução é comparar o número da compilação, incluindo a parte do hotfix. A única maneira de obter isso pela linha de comando é usar o comando ver prompt de comando que não funciona diretamente no 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"}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.