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

15

Durante a versão beta do Windows 10, era difícil saber qual versão você estava executando, a menos que 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 quando a Microsoft começar a liberar mais compilações com o novo mecanismo de atualização.

    
por Brian Lewis 17.08.2015 / 19:55

12 respostas

5

Já me perguntaram isso algumas vezes, então pensei em postar. Existem três maneiras.

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

Para mais detalhes, veja aqui: link

    
por 17.08.2015 / 19:55
15

GUI: configurações, sistema, sobre

Não tenho certeza se essa é a maneira "correta", mas você pode obter a Win10 vocalizou / falou sobre 'versão' (1511, 1607, etc.) através deste cmd:

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

    
por 01.12.2016 / 20:16
7

Verificar a versão ou o número de compilação do Windows 10 não é muito útil porque 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. Os últimos insiders builds têm um número de compilação de 10525 em comparaçã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 preferir a GUI, você pode usar o winver.exe ou a entrada About no menu Help da maioria dos aplicativos de área de trabalho do Windows.

Sem service packs, o nível de patch no sistema operacional depende das atualizações instaladas. Existem várias maneiras de encontrá-las, GUI, systeminfo.exe, wmi, etc.

A maneira recomendada e mais eficiente de fazer coisas como esta é 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 on-line o número do patch kb mais recente como:

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

E, em seguida, verifique se existe na máquina.

Nota: isto é apenas um exemplo. Eu não sei de uma página que atualmente lista isso, e você ainda tem que analisá-lo.

A pergunta é: com o tempo, a Microsoft mudará tanto a funcionalidade do Windows 10 que você terá que verificar se ela faz seu aplicativo ou script funcionar.

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

    
por 18.08.2015 / 04:58
6

O WMI não possui atualmente 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). Como afirmado em outros comentários, esta informação é visível 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, a versão números está nesses dois valores dessa chave de registro:

CurrentMajorVersionNumber = 10
CurrentMinorVersionNumber = 0

A compilação é alterada quando a versão (como 1607) é alterada ou quando as compilações internas são instaladas. No entanto, o UBR (Update Build Revision) muda com certas atualizações conforme indicado na lista de lançamentos da Microsoft .

No PowerShell,

[System.Environment]::OSVersion.Version

retorna Major, Minor e Build da mesma forma 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 de 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
    
por 26.12.2016 / 21:00
2

Nenhuma das formas postadas anteriormente funciona, e nenhuma delas fornece o Build do SO como aparece na seção Configurações Sobre . Está faltando 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 é preciso algo que sempre foi uma linha única e dificulta 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 que eles comecem a modificar o BuildNumber.

    
por 14.03.2016 / 15:11
1

O msinfo32.exe ainda está por aí (era a partir de 8.1)? Fornece muitas informações úteis, incluindo números de série e números de modelo que podem ajudar muito os portáteis.

    
por 17.08.2015 / 19:56
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
    
por 15.03.2016 / 22:51
1

O PowerShell é sempre a resposta:

Get-CimInstance win32_operatingsystem

Mais informações:

Get-CimInstance Win32_OperatingSystem | Select-Object buildnumber,version

Retorna:

buildnumber version
----------- -------
10240 10.0.10240

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

    
por 17.08.2015 / 20:03
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
    
por 12.07.2017 / 20:06
0

Você pode usar Reg Query 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)
    
por 04.04.2017 / 11:34
-1

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 de versão do PowerShell seguiu a revisão do Windows.

Isso me levou a construir o seguinte script. Eu adicionei um teste para saber se o computador remoto precisa ser reiniciado para a conclusão da 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 dá esse tipo de resultado:

Computer_Name Version Windows 10 Enterprise 1703, revision 296

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

    
por 20.05.2017 / 00:27
-1

Precisamos verificar qual patch cumulativo está instalado para conformidade. Usar o 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 por linha de comando é usar o comando comando ver ver 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"}
    
por 31.10.2018 / 19:08

Tags