Come trovare la build / versione di Windows 10


19

Durante la beta di Windows 10 era difficile sapere quale versione stavi eseguendo a meno che non fosse stata pubblicata sul desktop. Una volta che non c'era - come fai a sapere quale versione / build stai eseguendo?

Questo diventerà più un problema quando Microsoft inizierà a rilasciare più build con il nuovo meccanismo di aggiornamento.


Non credo che gli aggiornamenti alterino il numero di build.
joeqwerty,

Risposte:


19

GUI: Impostazioni, Sistema, Informazioni

Non sono sicuro se questo è il modo "corretto", ma puoi ottenere la versione "vocalizzata / parlata" di Win10 (1511, 1607, ecc.) Tramite questo cmd:

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

Ecco la pagina di Microsoft per correlare i numeri di build alla "versione" di Win10 ( collegamento di backup [wiki] per ogni evenienza ). Mi ha aiutato quando ho ricevuto build # dal PC remoto:wmic /node:HOSTNAME os get BuildNumber


6
Grazie - mi ha aiutato molto. Solo per il caso: la versione di PowerShell del tuo comando sarebbe(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
Anton Krouglov,

Questo non funziona su Windows 10 Enterprise LTSB. Solo le soluzioni che leggono la versione di PowerShell funzionano direttamente per me
phuclv

Sto gestendo LTSB da solo e funziona per me?
Gregg

non funziona neanche nel mio ultimo Windows 10 Pro: su 10.0.17730.1000 (ovvero build 17730) offre ReleaseId REG_SZ 1803. Questo e questo funziona
phuclv

@AntonKrouglov è l'ID di rilascio e non la build corrente. Devi usare (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuildNumber).CurrentBuildNumbero (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuild).CurrentBuildper il numero di build
phuclv

9

Controllare la versione o il numero di build di Windows 10 non è molto utile perché non cambia nel tempo.

Si scopre che la prima frase è sbagliata; era vero in tutte le versioni precedenti di Windows, ma ora siamo in un nuovo mondo di Windows 10. L'ultima addetti ai lavori di costruzione ha un numero di build di 10525rispetto al "RTM": 10240.

Esistono diversi modi per ottenere il numero di build sulla riga di comando:

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

L'ultimo dei tre è il più veloce.

Se si preferisce la GUI, è possibile utilizzare winver.exe o la Aboutvoce nel Helpmenu della maggior parte delle applicazioni desktop di Windows.

Senza più service pack, il livello di patch sul sistema operativo dipende dagli aggiornamenti installati. Esistono diversi modi per trovare questi, GUI, systeminfo.exe, wmi, ecc.

Il modo consigliato e più potente per fare cose come questa è usare PowerShell:

Get-HotFix

mostra qualcosa come:

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

Puoi filtrare gli aggiornamenti negli ultimi 10 giorni:

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

Oppure mostra gli ultimi tre aggiornamenti installati:

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

Puoi verificare se è installato un aggiornamento specifico:

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

Puoi prima trovare l'ultimo numero di patch kb online come:

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

E quindi controlla se esiste sulla macchina.

Nota: questo è solo un esempio. Non conosco una pagina che attualmente elenca questi e devi ancora analizzarli.

La domanda è: nel tempo, Microsoft cambierà le funzionalità di Windows 10 a tal punto che devi controllarlo per far funzionare la tua app o script.

Potrebbe essere un'idea migliore verificare se sul sistema esiste una funzione specifica di cui hai bisogno, piuttosto che cercare un numero di versione.


"era vero in tutte le versioni precedenti di Windows" In effetti, non lo è stato almeno da Windows 95. Windows 95 e Windows 95 OSR2 avevano numeri di build diversi. Così come Windows 98 e Windows 98se. Come Windows XP, Windows XP SP1, Windows XP SP2 e così via.
Cliff Armstrong,

8

Al momento WMI non ha proprietà che possono essere utilizzate per identificare completamente la versione di Windows 10 (come 1607) o il numero di build completo (come 10.0.14393.577). Come indicato in altri commenti, queste informazioni sono visibili nel registro sotto questa chiave:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

I seguenti valori in quella chiave corrispondono alle informazioni visualizzate dal programma 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)

Inoltre, i numeri di versione si trovano in questi due valori da quella chiave di registro:

CurrentMajorVersionNumber = 10
CurrentMinorVersionNumber = 0

La build cambia quando cambia la versione (come 1607) o quando sono installate build Insider. Tuttavia, UBR (Update Build Revision) cambia con alcuni aggiornamenti come indicato nell'elenco delle versioni di Microsoft .

In PowerShell,

[System.Environment]::OSVersion.Version

restituisce Major, Minor e Build uguale alla chiave del Registro di sistema, ma sembra sempre che Revision sia come 0. Un po 'di codice da un utente Reddit fornisce una sostituzione adeguata che include l'UBR dal registro come numero di Revision:

$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 cioè la sua intera risposta ?!
oldmud0,

@ oldmud0 ovviamente no; c'è qualcosa che è accettabile
Ramhound,

@RamHound Grazie per il feedback. Ho tagliato un po 'di trapianto. Se è ancora troppo prolisso, fammi sapere.
Shem Sargent,

Questa è la risposta corretta Include ReleaseID (ad es. 1607), build (ad es. 14393) e UBR (il numero che cambia con ogni versione mensile). Si noti che ReleaseID e build sono ridondanti in quanto esiste un mapping 1-1 tra i due; Mi piacerebbe leggere qualcosa da Microsoft sul perché entrambi questi numeri esistono.
aggieNick02,

5

Mi è stato chiesto questo alcune volte, quindi ho pensato di pubblicarlo. Ci sono tre modi.

  1. Esegui winver.exe
  2. Esegui ver.exe
  3. Controlla il registro

Per maggiori dettagli guarda qui: http://mythoughtsonit.com/2015/07/what-build-version-of-windows-10-am-i-running/


2
Purtroppo Microsoft non fornisce un meccanismo per determinare la versione di aggiornamento cumulativo. Dal momento che non forniscono più i service pack del sistema operativo, sarebbero utili informazioni. Un'alternativa sarebbe utilizzare il comando WMIC per eseguire una query per una versione di rollup specifica. Ad esempio WMIC QFE GET HotfixID, InstalledOn, Description | FINDSTR /I "KB3081438"per determinare se è installata la CU del 15 agosto 2015. Una data InstalledOn vuota indica che il sistema non è stato riavviato per completare l'installazione.
Greg Askew,

1
Il numero di build 10240 non cambia con gli aggiornamenti. L'ultimo numero 16xxx cambia quando il kernel ottiene un aggiornamento.
magicandre1981,

2
Nel mio libro questa è l'unica vera risposta corretta. Nonostante affermi che non mostra la "versione di aggiornamento cumulativo" che effettivamente fa, ora ti viene concesso di sapere qual è la build attuale, al fine di confrontarla con ma nessuna delle altre risposte affronta quel problema.
Ramhound,

L'esecuzione di Winver sulla riga di comando funziona come un incantesimo. Grazie!
Andreas,

questo non funzionerà per Windows 10 LTSB
phuclv

2

Nessuno dei modi precedentemente pubblicati funziona e nessuno di essi fornisce la build del sistema operativo come appare nella sezione ImpostazioniInformazioni . Manca l'informazione di aggiornamento cumulativo.

Potresti fare qualcosa del genere

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

in uno script di PowerShell, ma richiede qualcosa che è sempre stato un liner e rende più difficile il monitoraggio. Puoi vedere gli aggiornamenti qui:

Cronologia degli aggiornamenti di Windows 10

Si spera che Microsoft aggiornerà le proprie patch in modo che inizino a modificare BuildNumber.


"Speriamo che Microsoft aggiornerà le loro patch in modo che inizino a modificare il BuildNumber" che è successo dal 29 luglio 2015 ......
Ramhound

@Ramhound è successo dal 29 luglio 2015 o no? Ogni volta che chiamo Win32_OperatingSystem.Version non ottengo il numero di build del sistema operativo ottengo 10.0.10586.0 quando build del sistema operativo in Impostazioni> Sistema> Informazioni su 10.0.10586.164
d4rkcell

La build non è cambiata fino alla Soglia 2. Dalla Soglia 2, il numero di build è cambiato, con le patch cumulative. Non ho mai detto che Win32_OperatingSystem.Versiondovrebbe funzionare come descrivi, ma la build sta cambiando per winver(in altre parole sto dicendo che la tua sceneggiatura è in errore).
Ramhound,

No, non lo è, è presente nell'interfaccia utente ma in WMI, specialmente quando si esegue una query su Win32_OperatingSystem, il numero di versione qui dice ancora 10.0.10586 e BuildNumber dice ancora 10586. Sono su una macchina che ha OSBuild 10586.164 in Impostazioni> Sistema Informazioni su OS Build sezione ma in WMI no. Perché non leggi quello che ho scritto?
d4rkcell,

1

Msinfo32.exe è ancora disponibile (era 8.1)? Fornisce molte informazioni utili, inclusi numeri di serie e numeri di modello che possono aiutare molto per i laptop.


(se lo è, sarà nell'area di riepilogo del sistema sotto Nome OS in alto.)
radiks32

ma avvia solo la GUI e non una soluzione a riga di comando
phuclv,

1

Puoi estrarre la versione dal registro. Ecco uno snipit di PowerShell per farlo:

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

PowerShell è sempre la risposta:

Get-CimInstance win32_operatingsystem

Maggiori informazioni:

Get-CimInstance Win32_OperatingSystem | Select-Object buildnumber,version

Ritorna:

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

È possibile utilizzarlo per ottenere rapidamente tali informazioni, inoltre, è possibile trasformarle in una funzione e utilizzare per acquisire tali informazioni dall'intera flotta, se necessario.


2
Questa risposta potrebbe usare qualche spiegazione in più.
Kasperd,

0

In un dominio AD, è possibile utilizzare il cmdlet Get-ADComputer di PowerShell

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

0

È possibile utilizzare Reg Query in un comando FOR per ottenere Buildversion, ad esempio 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)

questo non funziona proprio come l' attuale soluzione più votata . Il 1607 non è la versione build che è quella con "build OS"
phuclv

0

Nel tentativo di trovare un modo per visualizzare la versione di Windows 10 e la sua revisione per un singolo computer remoto, ho notato che la revisione della versione di PowerShell ha seguito la revisione di Windows.

Mi ha portato a costruire il seguente script. Ho aggiunto un test per sapere se il computer remoto deve essere riavviato per il completamento dell'aggiornamento.

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

Questo dà questo tipo di risultato:

Computer_Name Version Windows 10 Enterprise 1703, revision 296

In un dominio AD , puoi sostituire il tuo <NomeComputer> singolo con una variabile che contiene l'intero computer di un'unità organizzativa.


perché scrivi una sceneggiatura così complessa? Non funziona sul mio PC locale che non fa parte di alcun dominio. E chiedere agli utenti di digitare il nome del computer non è amichevole. Sembra che l'unico comando importante qui sia 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)", ma mi dà Windows 10 Pro 1803, revision 1000il 10.0.17730.1000 che non è corretto. La versione build è 17730
phuclv

Apparentemente hai due account Super User: Frantz Kopanicki e Frantz Kopanicki . Ciò interferirà con i commenti, la modifica dei tuoi post e l'accettazione di una risposta. Prenditi il ​​tempo necessario per utilizzare questo tutorial del Centro assistenza e chiedere allo staff del Super User di unire i tuoi account.
robinCTS

-1

Dobbiamo verificare quale patch cumulativa è installata per la conformità. l'utilizzo di get-hotfix funziona ma causa problemi se è installata una patch cumulativa successiva. La soluzione migliore è confrontare il numero di build, inclusa la parte dell'aggiornamento rapido. L'unico modo per ottenerlo dalla riga di comando è utilizzare il comando ver prompt dei comandi che non funziona direttamente in 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"}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.