Windows 10 derlemesi / sürümü nasıl bulunur?


19

Windows 10'un beta sürümünde, masaüstüne gönderilmediği sürece hangi sürümü çalıştırdığınızı bilmek zordu. Bir zamanlar orada değildi - hangi sürümü / derlemeyi çalıştırdığınızı nasıl anlarsınız?

Microsoft, yeni güncelleştirme mekanizmasıyla daha fazla derleme yayınlamaya başladığında bu daha fazla sorun yaratacaktır.


Güncellemelerin yapı numarasını değiştirdiğine inanmıyorum.
joeqwerty

Yanıtlar:


19

GUI: Ayarlar, Sistem, Hakkında

Bunun 'uygun' yol olup olmadığından emin değilim, ancak bu cmd üzerinden Win10 sesli / sözlü 'sürümünü' (1511, 1607, vb.) Alabilirsiniz :

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

İşte Microsoft'un yapı numaralarını Win10 'sürüm' ile ilişkilendirme sayfası (her durumda yedek bağlantı [wiki] ). Uzak PC'den yapı # aldığımda bana yardımcı oldu:wmic /node:HOSTNAME os get BuildNumber


6
Teşekkür ederim - bu bana çok yardımcı oldu. Sadece dava için - Komutunuzun PowerShell sürümü(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
Anton Krouglov

Bu, Windows 10 Enterprise LTSB'de çalışmaz. Sadece powershell'den versiyonu okuyan çözümler doğrudan benim için çalışıyor
phuclv

LTSB'yi kendim çalıştırıyorum ve bu benim için çalışıyor mu?
gregg

en son Windows 10 Pro'mda da çalışmıyor: 10.0.17730.1000'de (yani, 17730'u) verir ReleaseId REG_SZ 1803. Bu ve bu çalışıyor
phuclv

@AntonKrouglov , mevcut sürüm değil , sürüm kimliği . Kullanmanız (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuildNumber).CurrentBuildNumberveya (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuild).CurrentBuildderleme numarası kullanmanız gerekir
phuclv

9

Windows 10'un sürümünü veya derleme numarasını kontrol etmek çok yararlı değildir, çünkü zamanla değişmez.

İlk cümlenin yanlış olduğu ortaya çıkıyor; Windows'un önceki tüm sürümlerinde doğruydu, ancak şimdi yeni bir Windows 10 dünyasındayız. Son içerdekilerin inşa bir yapı numarası olan 10525"RTM" ile karşılaştırıldığında: 10240.

Komut satırında yapı numarasını almanın birkaç yolu vardır:

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

Üçünün sonuncusu en hızlısı.

GUI'yi tercih ederseniz, winver.exe'yi veya çoğu Windows masaüstü uygulamasının menüsündeki Aboutgirişi kullanabilirsiniz Help.

Artık hiçbir hizmet paketi olmadığında, işletim sistemindeki yama düzeyi yüklü güncellemelere bağlıdır. Bunları bulmanın birkaç yolu vardır, GUI, systeminfo.exe, wmi, vb.

Bunun gibi şeyler yapmanın önerilen ve en güçlü yolu PowerShell kullanmaktır:

Get-HotFix

şuna benzer bir şey gösterir:

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

Son 10 gün içindeki güncellemelere filtre uygulayabilirsiniz:

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

Veya yüklenen son üç güncellemeyi göster:

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

Belirli bir güncellemenin yüklü olup olmadığını kontrol edebilirsiniz:

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

Önce en yeni yama kb numarasını çevrimiçi olarak bulabilirsiniz:

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

Ardından makinede olup olmadığını kontrol edin.

Not: Bu sadece bir örnektir. Şu anda bunları listeleyen bir sayfa bilmiyorum ve yine de ayrıştırmanız gerekiyor.

Soru şu: Microsoft zaman içinde Windows 10'un işlevselliğini o kadar çok değiştirecek ki uygulamanızın veya komut dosyanızın çalışmasını kontrol etmeniz gerekiyor.

Bir sürüm numarası aramak yerine, sistemde ihtiyacınız olan belirli bir özelliğin var olup olmadığını kontrol etmek daha iyi bir fikir olabilir.


"Windows'un önceki tüm sürümlerinde doğruydu" Aslında, en azından Windows 95'ten beri doğru değildi. Windows 95 ve Windows 95 OSR2 farklı sürüm numaralarına sahipti. Windows 98 ve Windows 98se gibi. Windows XP, Windows XP SP1, Windows XP SP2 ve benzeri gibi.
Cliff Armstrong

8

WMI şu anda Windows 10 sürümünü (1607 gibi) veya tam sürüm numarasını (10.0.14393.577 gibi) tamamen tanımlamak için kullanılabilecek özelliklere sahip değildir. Diğer açıklamalarda belirtildiği gibi, bu bilgiler ise bu anahtarın altında kayıt defterinde görünür:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Bu anahtardaki aşağıdaki değerler winver.exe programı tarafından görüntülenen bilgilere karşılık gelir:

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)

Ayrıca, sürüm numaraları bu kayıt defteri anahtarındaki şu iki değerdedir:

CurrentMajorVersionNumber = 10
CurrentMinorVersionNumber = 0

Sürüm (1607 gibi) değiştiğinde veya Insider sürümleri yüklendiğinde yapı değişir. Ancak, UBR (Güncelleştirme Derlemesi Revizyonu), Microsoft'un yayın listesinde belirtildiği gibi belirli güncelleştirmelerle değişir .

PowerShell'de,

[System.Environment]::OSVersion.Version

Majör ve Minör döndürür ve kayıt defteri anahtarı ile aynı oluşturun, ancak her zaman 0. olarak Revision rapor görünüyor bir Reddit kullanıcısı kod Biraz Revizyon numarası olarak kayıt defterinden UBR içeren yeterli bir yerleşim sunar:

$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 yani tüm cevabı ?!
oldmud0

@ oldmud0 tabii ki hayır; orada kabul edilebilir bir şey var
Ramhound

@RamHound Geri bildiriminiz için teşekkür ederiz. Biraz küfür ettim. Hala çok ayrıntılı ise, bana bildirin.
Shem Sargent

Bu doğru cevap. ReleaseID (örn. 1607), derleme (örn. 14393) ve UBR (her aylık sürümle değişen sayı) içerir. ReleaseID ve build, ikisi arasında 1-1 eşleme olması nedeniyle gereksizdir; Microsoft'tan bu sayıların her ikisinin de neden olduğu hakkında bir şeyler okumak isterim.
aggieNick02

5

Bunu birkaç kez istedim, bu yüzden göndereceğimi düşündüm. Üç yol var.

  1. Winver.exe dosyasını çalıştırın
  2. Ver.exe dosyasını çalıştırın
  3. Kayıt defterini kontrol edin

Daha fazla ayrıntı için buraya bakın: http://mythoughtsonit.com/2015/07/what-build-version-of-windows-10-am-i-running/


2
Ne yazık ki Microsoft toplu güncelleştirme sürümünü belirlemek için bir mekanizma sağlamaz. Artık işletim sistemi hizmet paketlerini artık sağlamadıkları için yararlı bilgiler olacaktır. Alternatif olarak, belirli bir toplama sürümünü sorgulamak için WMIC komutunu kullanmak olabilir. Örneğin WMIC QFE GET HotfixID, InstalledOn, Description | FINDSTR /I "KB3081438", 15 Ağustos 2015 CU'nun kurulu olup olmadığını belirlemek için. Boş bir InstalledOn tarihi, sistemin yüklemeyi tamamlamak için yeniden başlatılmadığını gösterir.
Greg Askew

1
th Buildnumber 10240 güncelleme ile değişmez. Çekirdek bir güncelleme aldığında son 16xxx sayısı değişir.
magicandre1981

2
Kitabımda bu doğru olan tek doğru cevap. "Kümülatif güncelleme sürümü" göstermediği iddialarına rağmen, aslında, şimdi karşılaştırmak için mevcut yapının gerçekte ne olduğunu bilmeniz gerekiyor, ancak diğer cevapların hiçbiri de bu sorunla ilgilenmiyor.
Mart'ta Ramhound

Komut satırında winver çalıştırmak bir cazibe gibi çalışıyor. Teşekkürler!
Andreas

bu Windows 10 LTSB için çalışmaz
phuclv

2

Önceden gönderilen yollardan hiçbiri işe yaramıyor ve hiçbiri OS Build'i AyarlarHakkında bölümünde göründüğü gibi vermiyor . Toplu güncelleştirme bilgileri eksik.

Böyle bir şey yapabilirsin

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

bir PowerShell betiğinde, ancak her zaman tek satırlık bir şey gerektirir ve izlenmesi zorlaşır. Güncellemeleri burada görebilirsiniz:

Windows 10 güncelleme geçmişi

İnşallah Microsoft yamaları güncelleyecek, böylece BuildNumber'ı değiştirmeye başlayacaklar.


"Umarım Microsoft, yamalarını güncelleyecek, böylece 29 Temmuz 2015'ten bu yana olan BuildNumber'ı değiştirmeye başlayacaklar"
Ramhound

@Ramhound 29 Temmuz 2015'ten beri oldu mu, değil mi? Win32_OperatingSystem.Version'u her çağırdığımda, OS Build ayarlarını almıyorum 10.0.10586.0 olsun OS Build Ayarlar> Sistem> Hakkında 10.0.10586.164
d4rkcell

Derleme Eşik 2'ye kadar değişmedi. Eşik 2'den bu yana derleme yamaları ile derleme numarası değişti. Ben asla Win32_OperatingSystem.Versiontarif ettiğiniz şekilde çalışması gerektiğini söyledi ama yapı başına değişiyor winver(başka bir deyişle betiğinizin hatalı olduğunu söylüyorum).
Mart'ta Ramhound

Hayır, UI'de değil, özellikle Win32_OperatingSystem'ı sorgularken WMI'da burada Sürüm numarası hala 10.0.10586 diyor ve BuildNumber hala 10586 diyor. Ayarlar> Sistem OS Derlemesi Hakkında OSBuild 10586.164 olan bir makinedeyim bölümü var ama WMI'da değil. Neden yazdığımı okumuyorsun?
d4rkcell

1

Msinfo32.exe hala çevresinde (8.1 itibariyle)? Dizüstü bilgisayarlar için çok yardımcı olabilecek seri numaraları ve model numaraları da dahil olmak üzere birçok kullanışlı bilgi verir.


(eğer öyleyse, üstte OS Name (Sistem Adı) altında sistem özeti alanında olacaktır.)
radiks32

ancak sadece GUI'yi başlatır ve bir komut satırı çözümü değil
phuclv

1

Sürümü kayıt defterinden alabilirsiniz. Bunu yapmak için bir PowerShell snipiti:

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 her zaman cevaptır:

Get-CimInstance win32_operatingsystem

Daha fazla bilgi:

Get-CimInstance Win32_OperatingSystem | Select-Object buildnumber,version

İadeler:

yapı numarası sürümü
----------- -------
10240 10.0.10240

Bu bilgiyi gerçekten hızlı bir şekilde elde etmek için kullanabilirsiniz, ayrıca, bir işleve dönüştürebilir ve ihtiyacınız olduğunda tüm filonuzdan bu bilgileri almak için kullanabilirsiniz.


2
Bu cevap biraz daha açıklama yapabilir.
kasperd

0

Bir AD etki alanında, PowerShell'in Get-ADComputer cmdlet'ini kullanabilirsiniz

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

0

Oluşturma'yı almak için bir FOR komutunda Reg Query'yi kullanabilirsiniz, örneğin, 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)

Bu , mevcut en iyi oy alan çözüm gibi çalışmaz . 1607 "OS derlemesi" olan derleme sürümü değildir
phuclv

0

Windows 10 sürümünü ve tek bir uzak bilgisayar için revizyonunu görüntülemenin bir yolunu bulmaya çalışırken, PowerShell'in sürüm revizyonunun Windows revizyonunu takip ettiğini fark ettim.

Aşağıdaki senaryoyu oluşturmama neden oldu. Uzak bilgisayarın güncelleme tamamlanması için yeniden başlatılması gerekip gerekmediğini bilmek için bir test ekledim.

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

Bu, bu tür bir sonuç verir:

Computer_Name Version Windows 10 Enterprise 1703, revision 296

Bir In AD etki, bir OU tüm bilgisayarları içeren bir değişken tarafından tek <Bilgisayar_Adı> yerini alabilir.


neden bu kadar karmaşık bir senaryo yazıyorsunuz? Herhangi bir etki alanına katılmamış yerel bilgisayarımda çalışmıyor. Kullanıcılardan bilgisayar adını yazmalarını istemek kolay değildir. Buradaki tek önemli komut gibi görünüyor 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)", ama bana Windows 10 Pro 1803, revision 100010.0.17730.1000 yanlış veriyor . Derleme sürümü 17730
phuclv

Görünüşe göre iki Süper Kullanıcı hesabınız var: Frantz Kopanicki ve Frantz Kopanicki . Bu, yorum yapmayı, kendi yayınlarınızı düzenlemenizi ve bir yanıtı kabul etmenizi engelleyecektir. Lütfen bu Yardım Merkezi eğitimini kullanmak için zaman ayırın ve Süper Kullanıcı personelinden hesaplarınızı birleştirmesini isteyin.
robinCTS

-1

Uyumluluk için hangi toplu düzeltme ekinin yüklü olduğunu doğrulamamız gerekir. get-hotfix kullanmak işe yarar, ancak daha sonraki bir toplu düzeltme eki yüklüyse sorunlara neden olur. En iyi çözüm, düzeltme bölümü de dahil olmak üzere yapı numarasını karşılaştırmaktır. Bunu komut satırından almanın tek yolu, doğrudan PowerShell'de çalışmayan komut istemi ver komutunu kullanmaktır.

$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"}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.