Cara menemukan versi build / Windows 10

19

Selama beta Windows 10 sulit mengetahui versi apa yang Anda jalankan kecuali itu diposting ke desktop. Setelah itu tidak ada - bagaimana Anda tahu versi / build apa yang Anda jalankan?

Ini akan menjadi masalah karena Microsoft mulai merilis lebih banyak build dengan mekanisme pembaruan baru.

Brian Lewis
sumber
Saya tidak percaya bahwa pembaruan mengubah nomor build.
joeqwerty

Jawaban:

19

GUI: Pengaturan, Sistem, Tentang

Tidak yakin apakah ini cara yang 'pantas', tetapi Anda bisa mendapatkan 'versi' Win10 yang disuarakan / dibicarakan (1511, 1607, dll.) Melalui cmd ini:

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

Berikut adalah halaman Microsoft untuk mengkorelasikan nomor build ke Win10 'versi' ( tautan cadangan [wiki] untuk berjaga-jaga ). Membantu saya ketika saya membangun # dari PC jarak jauh:wmic /node:HOSTNAME os get BuildNumber

gregg
sumber
6
Terima kasih - itu banyak membantu saya. Hanya untuk kasus ini - versi PowerShell dari perintah Anda adalah(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
Anton Krouglov
Ini tidak berfungsi pada Windows 10 Enterprise LTSB. Hanya solusi yang membaca versi dari powershell yang langsung bekerja untuk saya
phuclv
Saya menjalankan LTSB sendiri & ini bekerja untuk saya?
gregg
itu tidak bekerja di Windows 10 Pro terbaru saya baik: pada 10.0.17730.1000 (yaitu membangun 17730) itu memberikan ReleaseId REG_SZ 1803. Ini dan ini bekerja
phuclv
@AntonKrouglov itulah ID rilis dan bukan build saat ini. Anda perlu menggunakan (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuildNumber).CurrentBuildNumberatau (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuild).CurrentBuilduntuk nomor build
phuclv
9

Memeriksa versi atau nomor build Windows 10 tidak terlalu membantu karena tidak berubah seiring waktu.

Ternyata kalimat pertama itu salah; itu benar di semua versi Windows sebelumnya, tetapi kita berada di dunia Windows 10 baru sekarang. Orang dalam terbaru build memiliki sejumlah membangun dari 10525dibandingkan dengan "RTM": 10240.

Ada beberapa cara untuk mendapatkan nomor build di baris perintah:

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

Yang terakhir dari ketiganya adalah yang tercepat.

Jika Anda lebih suka GUI, Anda dapat menggunakan winver.exe atau Aboutentri di Helpmenu sebagian besar aplikasi desktop Windows.

Dengan tidak ada paket layanan di sekitar lagi, tingkat patch pada OS tergantung pada pembaruan yang diinstal. Ada beberapa cara untuk menemukan ini, GUI, systeminfo.exe, wmi, dll.

Cara yang disarankan dan paling ampuh untuk melakukan hal-hal seperti ini adalah menggunakan PowerShell:

Get-HotFix

menunjukkan sesuatu seperti:

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

Anda dapat memfilter untuk pembaruan dalam 10 hari terakhir:

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

Atau tampilkan tiga pembaruan terakhir yang diinstal:

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

Anda dapat memeriksa apakah pembaruan tertentu diinstal:

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

Pertama-tama Anda dapat menemukan nomor patch kb online terbaru seperti:

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

Dan kemudian periksa apakah ada di mesin.

Catatan: ini hanyalah sebuah contoh. Saya tidak tahu halaman yang saat ini mencantumkan ini, dan Anda masih harus menguraikannya.

Pertanyaannya adalah: Seiring waktu, apakah Microsoft akan mengubah fungsionalitas Windows 10 sehingga Anda harus memeriksanya untuk membuat aplikasi atau skrip Anda berfungsi.

Mungkin ide yang lebih baik untuk memeriksa apakah fitur spesifik yang Anda butuhkan ada di sistem, daripada mencari nomor versi.

Peter Hahndorf
sumber
"Itu benar di semua versi Windows sebelumnya" Bahkan, itu tidak benar sejak Windows 95, setidaknya. Windows 95 dan Windows 95 OSR2 memiliki nomor build yang berbeda. Seperti yang dilakukan Windows 98 dan Windows 98se. Seperti yang dilakukan Windows XP, Windows XP SP1, Windows XP SP2, dan sebagainya.
Cliff Armstrong
8

WMI saat ini tidak memiliki properti yang dapat digunakan untuk sepenuhnya mengidentifikasi versi Windows 10 (seperti 1607) atau angka build lengkap (seperti 10.0.14393.577). Sebagaimana dinyatakan dalam komentar lain, informasi ini terlihat di registri di bawah kunci ini:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Nilai-nilai berikut dalam kunci itu sesuai dengan informasi yang ditampilkan oleh program 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)

Selain itu, nomor versi dalam dua nilai ini dari kunci registri:

CurrentMajorVersionNumber = 10
CurrentMinorVersionNumber = 0

Build berubah ketika Versi (seperti 1607) berubah atau ketika build Insider diinstal. Namun, UBR (Update Build Revision) berubah dengan pembaruan tertentu seperti yang ditunjukkan dalam daftar rilis Microsoft .

Di PowerShell,

[System.Environment]::OSVersion.Version

mengembalikan Major, Minor, dan Build yang sama dengan kunci registri, tetapi sepertinya selalu melaporkan Revisi sebagai 0. Sedikit kode dari pengguna Reddit menyediakan pengganti yang memadai yang menyertakan UBR dari registri sebagai nomor Revisi:

$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
Semir Sargent
sumber
@Ramhound yaitu seluruh jawabannya ?!
oldmud0
@ oldmud0 tentu saja tidak; ada sesuatu di sana yang dapat diterima
Ramhound
@RamHound Terima kasih atas umpan baliknya. Saya memotong beberapa cruft. Jika masih terlalu bertele-tele, beri tahu saya.
Sem Sargent
Ini jawaban yang benar. Ini termasuk ReleaseID (mis. 1607), build (mis. 14393), dan UBR (angka yang berubah setiap rilis bulanan). Perhatikan bahwa ReleaseID dan build berlebihan karena ada pemetaan 1-1 di antara keduanya; Saya ingin membaca sesuatu dari Microsoft tentang mengapa kedua angka ini ada.
aggieNick02
5

Saya telah ditanyai ini beberapa kali jadi saya pikir saya akan mempostingnya. Ada tiga cara.

  1. Jalankan winver.exe
  2. Jalankan ver.exe
  3. Periksa registri

Untuk lebih jelasnya lihat di sini: http://mythoughtsonit.com/2015/07/what-build-version-of-windows-10-am-i-running/

Brian Lewis
sumber
2
Sayangnya Microsoft tidak menyediakan mekanisme untuk menentukan versi pembaruan kumulatif. Karena mereka tidak lagi menyediakan paket layanan sistem operasi, itu akan menjadi informasi yang berguna. Alternatifnya adalah dengan menggunakan perintah WMIC untuk meminta versi rollup tertentu. Misalnya WMIC QFE GET HotfixID, InstalledOn, Description | FINDSTR /I "KB3081438"untuk menentukan apakah CU 15 Agustus 2015 diinstal. Tanggal InstalledOn kosong menunjukkan bahwa sistem mereka belum memulai ulang untuk menyelesaikan instalasi.
Greg Askew
1
Buildnumber 10240 tidak berubah dengan pembaruan. Angka terakhir 16xxx berubah ketika kernel mendapatkan pembaruan.
magicandre1981
2
Dalam buku saya ini adalah satu-satunya jawaban benar yang benar. Meskipun klaim itu tidak menampilkan "versi pembaruan kumulatif" yang sebenarnya, sekarang diberikan Anda harus tahu apa sebenarnya bangunan saat ini, untuk membandingkannya tetapi tidak ada jawaban lain yang berurusan dengan masalah itu juga.
Ramhound
Menjalankan winver di baris perintah berfungsi seperti pesona. Terima kasih!
Andreas
ini tidak akan bekerja untuk Windows 10 LTSB
phuclv
2

Tidak ada satu pun dari cara yang diposting sebelumnya bekerja, dan tidak satupun dari mereka memberikan OS Build seperti yang muncul di PengaturanTentang bagian. Tidak ada informasi pembaruan kumulatif.

Anda bisa melakukan sesuatu seperti ini

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

dalam skrip PowerShell, tetapi dibutuhkan sesuatu yang selalu merupakan one-liner, dan membuatnya lebih sulit untuk dipantau. Anda dapat melihat pembaruan di sini:

Riwayat pembaruan Windows 10

Semoga Microsoft akan memperbarui tambalan mereka sehingga mereka mulai memodifikasi BuildNumber.

d4rkcell
sumber
"Semoga Microsoft akan memperbarui tambalan mereka sehingga mereka mulai memodifikasi BuildNumber" yang terjadi sejak 29 Juli 2015 ......
Ramhound
@Ramhound sudah terjadi sejak 29 Juli 2015 atau belum? Setiap kali saya menelepon Win32_OperatingSystem.Version saya tidak mendapatkan nomor OS Build saya mendapatkan 10.0.10586.0 ketika OS Build di Pengaturan> System> About adalah 10.0.10586.164
d4rkcell
Build tidak berubah sampai Threshold 2. Sejak Threshold 2, jumlah build telah berubah, dengan tambalan kumulatif. Saya tidak pernah mengatakan Win32_OperatingSystem.Versionharus bekerja seperti yang Anda gambarkan tetapi build berubah per winver(dengan kata lain saya katakan skrip Anda salah).
Ramhound
Tidak, belum ada di UI tetapi di WMI terutama ketika meminta Win32_OperatingSystem nomor Versi di sini masih mengatakan 10.0.10586 dan BuildNumber masih mengatakan 10586. Saya menggunakan mesin yang memiliki OSBuild 10586.164 di Pengaturan> Sistem Tentang OS Build Bagian tetapi dalam WMI tidak. Mengapa Anda tidak membaca apa yang saya ketikkan?
d4rkcell
1

Apakah msinfo32.exe masih ada (pada 8.1)? Memberi banyak informasi berguna, termasuk nomor seri dan nomor model yang dapat banyak membantu laptop.

radiks32
sumber
(jika ya, itu akan berada di area ringkasan sistem di bawah Nama OS di bagian atas.)
radiks32
tapi itu baru memulai GUI dan bukan solusi baris perintah
phuclv
1

Anda dapat menarik versi dari registri. Ini adalah snipit PowerShell untuk melakukan itu:

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
Brian Lewis
sumber
1

PowerShell selalu jawabannya:

Get-CimInstance win32_operatingsystem

Informasi lebih lanjut:

Get-CimInstance Win32_OperatingSystem | Select-Object buildnumber,version

Pengembalian:

versi buildnumber
----------- -------
10240 10.0.10240

Anda dapat menggunakan ini untuk mendapatkan informasi itu dengan sangat cepat, ditambah lagi, Anda dapat membangunnya menjadi sebuah fungsi dan menggunakannya untuk mengambil informasi itu dari seluruh armada Anda jika dibutuhkan.

qovert
sumber
2
Jawaban ini bisa menggunakan sedikit penjelasan.
kasperd
0

Dalam domain AD, Anda bisa menggunakan cmdlet Get-ADComputer PowerShell

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

Anda bisa menggunakan Reg Query dalam perintah FOR untuk mendapatkan Buildversion, misalnya, 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)
pengguna283868
sumber
ini tidak berfungsi seperti solusi terpilih teratas saat ini . 1607 bukan versi build yang merupakan versi dengan "OS build"
phuclv
0

Dalam mencoba menemukan cara untuk menampilkan versi Windows 10 dan revisinya untuk komputer jarak jauh tunggal, saya perhatikan bahwa revisi versi PowerShell mengikuti revisi Windows.

Itu membuat saya membangun skrip berikut. Saya menambahkan tes untuk mengetahui apakah komputer jarak jauh perlu memulai ulang untuk menyelesaikan pembaruan.

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

Ini memberikan jenis hasil:

Computer_Name Version Windows 10 Enterprise 1703, revision 296

Dalam domain AD , Anda dapat mengganti <Computer_Name> tunggal Anda dengan variabel yang berisi seluruh komputer OU.

Frantz Kopanicki
sumber
mengapa Anda menulis skrip yang sedemikian rumit? Ini tidak berfungsi pada PC lokal saya yang tidak bergabung dengan domain apa pun. Dan meminta pengguna untuk mengetik nama komputer tidak ramah. Tampaknya satu-satunya perintah penting di sini adalah 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)", tetapi memberi saya Windows 10 Pro 1803, revision 1000pada 10.0.17730.1000 yang tidak benar. Versi build adalah 17730
phuclv
Tampaknya Anda memiliki dua akun Pengguna Super: Frantz Kopanicki dan Frantz Kopanicki . Ini akan mengganggu komentar, mengedit posting Anda sendiri, dan menerima jawaban. Luangkan waktu untuk memanfaatkan tutorial Pusat Bantuan ini dan minta staf Pengguna Super untuk menggabungkan akun Anda.
robinCTS
-1

Kami perlu memverifikasi patch kumulatif mana yang diinstal untuk kepatuhan. menggunakan get-hotfix berfungsi tetapi menyebabkan masalah jika tambalan kumulatif yang diinstal kemudian. Solusi terbaik adalah membandingkan angka build, termasuk bagian perbaikan terbaru. Satu-satunya cara untuk mendapatkannya melalui baris perintah adalah dengan menggunakan command prompt ver command yang tidak berfungsi langsung di 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"}
Iconiu
sumber