Cách tìm bản dựng / phiên bản Windows 10


19

Trong bản beta của Windows 10, thật khó để biết bạn đang chạy phiên bản nào trừ khi nó được đăng lên máy tính để bàn. Khi không có ở đó - làm thế nào để bạn biết phiên bản / bản dựng nào bạn đang chạy?

Điều này sẽ trở thành một vấn đề khi Microsoft bắt đầu phát hành nhiều bản dựng hơn với cơ chế cập nhật mới.


Tôi không tin rằng các bản cập nhật làm thay đổi số bản dựng.
joeqwerty

Câu trả lời:


19

GUI: Cài đặt, Hệ thống, Giới thiệu

Không chắc đây có phải là cách 'phù hợp' hay không, nhưng bạn có thể nhận được phiên bản Win10 được phát âm / nói về '(1511, 1607, v.v.) qua cmd này:

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

Đây là trang của Microsoft để tương quan các số bản dựng với 'phiên bản' của Win10 ( liên kết dự phòng [wiki] chỉ trong trường hợp ). Đã giúp tôi khi tôi nhận bản dựng # từ PC từ xa:wmic /node:HOSTNAME os get BuildNumber


6
Cảm ơn bạn - điều đó đã giúp tôi rất nhiều. Chỉ dành cho trường hợp - phiên bản PowerShell của lệnh của bạn sẽ là(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
Anton Krouglov

Điều này không hoạt động trên Windows 10 Enterprise LTSB. Chỉ các giải pháp đọc phiên bản từ powershell trực tiếp làm việc cho tôi
phuclv 19/03/18

Tôi đang tự chạy LTSB và nó hoạt động với tôi?
Gregg

nó cũng không hoạt động trong Windows 10 Pro mới nhất của tôi: trên 10.0.17730.1000 (tức là bản dựng 17730) mà nó mang lại ReleaseId REG_SZ 1803. Cái nàycái này hoạt động
phuclv

@AntonKrouglov đó là ID phát hành chứ không phải bản dựng hiện tại. Bạn cần sử dụng (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuildNumber).CurrentBuildNumberhoặc (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuild).CurrentBuildcho số bản dựng
phuclv

9

Kiểm tra phiên bản hoặc số bản dựng của Windows 10 không hữu ích lắm vì nó không thay đổi theo thời gian.

Hóa ra câu đầu tiên là sai; điều đó đúng trong tất cả các phiên bản Windows trước, nhưng hiện tại chúng ta đang ở trong một thế giới Windows 10 mới. Bản dựng nội bộ mới nhất có số bản dựng 10525so với "RTM" : 10240.

Có một số cách để lấy số bản dựng trên dòng lệnh:

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

Cuối cùng trong ba là nhanh nhất.

Nếu bạn thích GUI, bạn có thể sử dụng winver.exe hoặc About mục trong Helpmenu của hầu hết các ứng dụng máy tính để bàn Windows.

Không còn gói dịch vụ nào nữa, mức độ vá trên HĐH phụ thuộc vào các bản cập nhật đã cài đặt. Có một số cách để tìm những thứ này, GUI, systeminfo.exe, wmi, v.v.

Cách được đề xuất và mạnh mẽ nhất để thực hiện những việc như thế này là sử dụng PowerShell:

Get-HotFix

hiển thị một cái gì đó như:

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

Bạn có thể lọc các bản cập nhật trong 10 ngày qua:

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

Hoặc hiển thị ba bản cập nhật được cài đặt mới nhất:

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

Bạn có thể kiểm tra xem một bản cập nhật cụ thể đã được cài đặt chưa:

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

Trước tiên, bạn có thể tìm thấy số kb vá mới nhất trực tuyến như:

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

Và sau đó kiểm tra xem nó có tồn tại trên máy không.

Lưu ý: đây chỉ là một ví dụ. Tôi không biết về một trang hiện đang liệt kê những trang này và bạn vẫn phải phân tích nó.

Câu hỏi đặt ra là: Theo thời gian, Microsoft sẽ thay đổi chức năng của Windows 10 đến mức bạn phải kiểm tra để làm cho ứng dụng hoặc tập lệnh của bạn hoạt động.

Có thể là một ý tưởng tốt hơn để kiểm tra xem một tính năng cụ thể bạn cần có tồn tại trên hệ thống hay không, thay vì tìm kiếm số phiên bản.


"Điều đó đúng trong tất cả các phiên bản trước của Windows" Trên thực tế, điều đó đã không đúng kể từ Windows 95, ít nhất. Windows 95 và Windows 95 OSR2 có số bản dựng khác nhau. Windows 98 và Windows 98se cũng vậy. Cũng như Windows XP, Windows XP SP1, Windows XP SP2, v.v.
Cliff Armstrong

8

WMI hiện không có các thuộc tính có thể được sử dụng để xác định hoàn toàn phiên bản Windows 10 (như 1607) hoặc số bản dựng đầy đủ (như 10.0.14393.577). Như đã nêu trong các bình luận khác, thông tin này hiển thị trong sổ đăng ký theo khóa này:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Các giá trị sau trong khóa đó tương ứng với thông tin được hiển thị bởi chương trình 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)

Ngoài ra, số phiên bản nằm trong hai giá trị này từ khóa đăng ký đó:

CurrentMajorVersionNumber = 10
CurrentMinorVersionNumber = 0

Bản dựng thay đổi khi Phiên bản (như 1607) thay đổi hoặc khi bản dựng Người dùng nội bộ được cài đặt. Tuy nhiên, UBR (Bản cập nhật bản dựng bản cập nhật) không thay đổi với một số bản cập nhật nhất định như được nêu trong danh sách phát hành của Microsoft .

Trong PowerShell,

[System.Environment]::OSVersion.Version

trả về Major, Minor và Build giống như khóa registry, nhưng dường như nó luôn báo cáo Revision là 0. Một chút mã từ người dùng Reddit cung cấp một sự thay thế đầy đủ bao gồm UBR từ registry như số 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 tức là toàn bộ câu trả lời của anh ấy?!
oldmud0

@ oldmud0 tất nhiên là không; có một cái gì đó có thể chấp nhận được
Ramhound

@RamHound Cảm ơn bạn đã phản hồi. Tôi cắt một số cruft. Nếu nó vẫn còn quá dài dòng, hãy cho tôi biết.
Shem Sargent

Đây là câu trả lời chính xác. Nó bao gồm ReleaseID (ví dụ 1607), bản dựng (ví dụ 14393) và UBR (số thay đổi với mỗi bản phát hành hàng tháng). Lưu ý rằng ReleaseID và bản dựng là dự phòng ở chỗ có ánh xạ 1-1 giữa hai bản đồ; Tôi rất muốn đọc một cái gì đó từ Microsoft về lý do tại sao cả hai số này tồn tại.
aggieNick02

5

Tôi đã được hỏi điều này một vài lần vì vậy tôi nghĩ rằng tôi sẽ đăng nó. Có ba cách.

  1. Chạy winver.exe
  2. Chạy ver.exe
  3. Kiểm tra sổ đăng ký

Để biết thêm chi tiết, hãy xem tại đây: http : // my Dùtsonit.com / 2015/07 / what-build-version-of-windows-10-am-i-rucky /


2
Thật không may, Microsoft không cung cấp một cơ chế để xác định phiên bản cập nhật tích lũy. Vì họ không thực sự cung cấp gói dịch vụ hệ điều hành nữa, đó sẽ là thông tin hữu ích. Một cách khác là sử dụng lệnh WMIC để truy vấn phiên bản rollup cụ thể. Ví dụ: WMIC QFE GET HotfixID, InstalledOn, Description | FINDSTR /I "KB3081438"để xác định nếu CU ngày 15 tháng 8 năm 2015 được cài đặt. Một ngày InstalledOn trống cho biết hệ thống của họ chưa được khởi động lại để hoàn tất cài đặt.
Greg Askew

1
Buildnumber 10240 không thay đổi với các bản cập nhật. Số 16xxx cuối cùng thay đổi khi kernel được cập nhật.
magicandre1981

2
Trong cuốn sách của tôi đây là câu trả lời đúng duy nhất đúng. Mặc dù tuyên bố về việc nó không hiển thị "phiên bản cập nhật tích lũy" thực sự, nhưng giờ đây bạn cần phải biết bản dựng hiện tại thực sự là gì, để so sánh với nó nhưng không có câu trả lời nào khác giải quyết vấn đề đó.
Ramhound 15/03/2016

Chạy winver trên dòng lệnh hoạt động như một nét duyên dáng. Cảm ơn!
Andreas

điều này sẽ không hoạt động cho Windows 10 LTSB
phuclv

2

Không có cách nào được đăng trước đó hoạt động và không cách nào trong số chúng cung cấp cho OS Build như nó xuất hiện trong phần Cài đặtGiới thiệu . Đó là thiếu thông tin cập nhật tích lũy.

Bạn có thể làm một cái gì đó như thế này

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

trong tập lệnh PowerShell, nhưng nó cần một cái gì đó luôn luôn là một lớp lót và làm cho nó khó theo dõi hơn. Bạn có thể xem các bản cập nhật ở đây:

Lịch sử cập nhật Windows 10

Hy vọng Microsoft sẽ cập nhật các bản vá của họ để họ bắt đầu sửa đổi BuildNumber.


"Hy vọng Microsoft sẽ cập nhật các bản vá của họ để họ bắt đầu sửa đổi BuildNumber" xảy ra kể từ ngày 29 tháng 7 năm 2015 ......
Ramhound

@Ramhound nó đã xảy ra kể từ ngày 29 tháng 7 năm 2015 hay chưa? Bất cứ khi nào tôi gọi Win32_OperatingSystem.Version Tôi chưa nhận được số OS Build tôi nhận được 10.0.10586.0 khi hệ điều hành xây dựng trong Settings> System> Giới thiệu về là 10.0.10586.164
d4rkcell

Bản dựng không thay đổi cho đến Ngưỡng 2. Kể từ Ngưỡng 2, số bản dựng đã thay đổi, với các bản vá tích lũy. Tôi không bao giờ nói Win32_OperatingSystem.Versionnên làm việc theo cách bạn mô tả nhưng bản dựng đang thay đổi theo winver(nói cách khác tôi đang nói rằng kịch bản của bạn có lỗi).
Ramhound

Không, không có, nó có trong UI nhưng trong WMI, đặc biệt là khi truy vấn Win32_OperatingSystem, số Phiên bản ở đây vẫn nói 10.0.10586 và BuildNumber vẫn nói 10586. Tôi đang ở trên một máy có OSBuild 10586.164 trong Cài đặt> System About OS Build phần nhưng trong WMI thì không. Tại sao bạn không đọc những gì tôi gõ?
d4rkcell 17/03/2016

1

Msinfo32.exe vẫn còn (khoảng 8.1)? Cung cấp nhiều thông tin hữu ích, bao gồm số sê-ri và số kiểu có thể giúp ích rất nhiều cho máy tính xách tay.


(nếu có, nó sẽ nằm trong vùng tóm tắt hệ thống dưới Tên hệ điều hành ở trên cùng.)
radiks32

nhưng nó chỉ khởi động GUI và không phải là giải pháp dòng lệnh
phuclv

1

Bạn có thể kéo phiên bản từ sổ đăng ký. Đây là một snipit PowerShell để làm điều đó:

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 luôn là câu trả lời:

Get-CimInstance win32_operatingsystem

Thêm thông tin:

Get-CimInstance Win32_OperatingSystem | Select-Object buildnumber,version

Trả về:

phiên bản số bản dựng
----------- -------
10240 10.0.10240

Bạn có thể sử dụng thông tin này để thực sự nhanh chóng có được thông tin đó, ngoài ra, bạn có thể xây dựng nó thành một chức năng và sử dụng để lấy thông tin đó từ toàn bộ hạm đội của bạn nếu bạn cần.


2
Câu trả lời này có thể sử dụng một chút giải thích.
kasperd

0

Trong miền AD, bạn có thể sử dụng lệnh ghép ngắn Get-ADComputer của PowerShell

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

0

Bạn có thể sử dụng Reg Query trong lệnh FOR để lấy Buildversion, ví dụ: 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)

điều này không hoạt động giống như giải pháp được bình chọn hàng đầu hiện nay . 1607 không phải là phiên bản xây dựng mà là phiên bản có "Xây dựng hệ điều hành"
phuclv

0

Khi cố gắng tìm cách hiển thị phiên bản Windows 10 và phiên bản sửa đổi cho một máy tính từ xa duy nhất, tôi nhận thấy rằng phiên bản sửa đổi của PowerShell tuân theo phiên bản Windows.

Nó dẫn tôi xây dựng kịch bản sau đây. Tôi đã thêm một thử nghiệm để biết liệu máy tính từ xa có cần khởi động lại để hoàn thành cập nhật hay không.

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

Điều này mang lại cho loại kết quả này:

Computer_Name Version Windows 10 Enterprise 1703, revision 296

Trong miền AD , bạn có thể thay thế <Computer_Name> bằng một biến chứa toàn bộ máy tính của OU.


Tại sao bạn viết một kịch bản phức tạp như vậy? Nó không hoạt động trên PC cục bộ của tôi không tham gia vào bất kỳ miền nào. Và yêu cầu người dùng gõ tên máy tính không thân thiện. Có vẻ như lệnh quan trọng duy nhất ở đây là 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)", nhưng nó mang lại cho tôi Windows 10 Pro 1803, revision 1000vào ngày 10.0.17730.1000 không chính xác. Phiên bản xây dựng là 17730
phuclv

Rõ ràng bạn có hai tài khoản Siêu người dùng: Frantz KopanickiFrantz Kopanicki . Điều này sẽ can thiệp vào việc bình luận, chỉnh sửa bài đăng của riêng bạn và chấp nhận câu trả lời. Vui lòng dành thời gian để sử dụng hướng dẫn của Trung tâm trợ giúp này và yêu cầu nhân viên Siêu người dùng hợp nhất các tài khoản của bạn.
robinCTS

-1

Chúng tôi cần xác minh bản vá tích lũy nào được cài đặt để tuân thủ. sử dụng get-hotfix hoạt động nhưng gây ra sự cố nếu bản vá tích lũy sau này được cài đặt. Giải pháp tốt nhất là so sánh số bản dựng, bao gồm cả phần hotfix. Cách duy nhất để có được điều đó bằng dòng lệnh là sử dụng lệnh ver nhắc lệnh không hoạt động trực tiếp trong 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"}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.