So finden Sie die Build / Version von Windows 10


19

Während der Beta-Phase von Windows 10 war es schwierig zu wissen, welche Version Sie verwenden, es sei denn, sie wurde auf dem Desktop veröffentlicht. Sobald das nicht da war - wie erfährst du, welche Version / welchen Build du ausführst?

Dies wird zu einem größeren Problem, da Microsoft mit dem neuen Update-Mechanismus mehr Builds veröffentlicht.


Ich glaube nicht, dass Updates die Build-Nummer ändern.
Joeqwerty

Antworten:


19

GUI: Einstellungen, System, Über

Ich bin mir nicht sicher, ob dies der richtige Weg ist, aber Sie können die Win10-Version (1511, 1607 usw.) über diesen Befehl erhalten:

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

Hier ist Microsofts Seite, um Build-Nummern mit der 'Version' von Win10 zu korrelieren ( Backup-Link [Wiki] für alle Fälle ). Hat mir geholfen, wenn ich Build-Nr. Vom Remote-PC erhalte:wmic /node:HOSTNAME os get BuildNumber


6
Danke - das hat mir sehr geholfen. Nur für den Fall - PowerShell-Version Ihres Befehls wäre(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
Anton Krouglov

Dies funktioniert nicht unter Windows 10 Enterprise LTSB. Nur die Lösungen, die die Version von Powershell lesen, funktionieren direkt für mich
phuclv

Ich leite selbst LTSB und es funktioniert für mich?
Gregg

es funktioniert auch nicht in meinem neuesten Windows 10 Pro: auf 10.0.17730.1000 (dh Build 17730) gibt es ReleaseId REG_SZ 1803. Dies und das funktioniert
phuclv

@AntonKrouglov Das ist die Release-ID und nicht der aktuelle Build. Sie müssen (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuildNumber).CurrentBuildNumberoder (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuild).CurrentBuildfür die Build-Nummer verwenden
phuclv

9

Das Überprüfen der Version oder der Build-Nummer von Windows 10 ist nicht sehr hilfreich, da sich diese im Laufe der Zeit nicht ändert.

Es stellt sich heraus, dass der erste Satz falsch ist; Es stimmte in allen früheren Versionen von Windows, aber wir befinden uns jetzt in einer neuen Windows 10-Welt. Das neueste Insider-Build hat eine Build-Nummer im 10525Vergleich zu "RTM":10240 .

Es gibt verschiedene Möglichkeiten, die Build-Nummer in der Befehlszeile abzurufen:

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

Der letzte der drei ist der schnellste.

Wenn Sie die grafische Benutzeroberfläche bevorzugen, können Sie winver.exe oder den AboutEintrag im HelpMenü der meisten Windows-Desktopanwendungen verwenden.

Da es keine Service Packs mehr gibt, hängt der Patch-Level des Betriebssystems von den installierten Updates ab. Es gibt verschiedene Möglichkeiten, diese zu finden: GUI, systeminfo.exe, wmi usw.

Die empfohlene und leistungsstärkste Methode für solche Aufgaben ist die Verwendung von PowerShell:

Get-HotFix

zeigt so etwas wie:

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

Sie können nach Updates in den letzten 10 Tagen filtern:

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

Oder zeigen Sie die letzten drei installierten Updates an:

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

Sie können überprüfen, ob ein bestimmtes Update installiert ist:

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

Sie können die neueste Patch-KB-Nummer zuerst online finden, z. B .:

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

Überprüfen Sie anschließend, ob es auf dem Computer vorhanden ist.

Hinweis: Dies ist nur ein Beispiel. Ich kenne keine Seite, auf der diese aufgelistet sind, und Sie müssen sie trotzdem analysieren.

Die Frage ist: Wird Microsoft im Laufe der Zeit die Funktionalität von Windows 10 so stark verändern, dass Sie überprüfen müssen, ob Ihre App oder Ihr Skript funktioniert?

Es ist möglicherweise eine bessere Idee, zu überprüfen, ob eine bestimmte Funktion auf dem System vorhanden ist, als nach einer Versionsnummer zu suchen.


"Es stimmte in allen früheren Versionen von Windows" Tatsächlich stimmte es zumindest seit Windows 95 nicht mehr. Windows 95 und Windows 95 OSR2 hatten unterschiedliche Build-Nummern. Wie auch Windows 98 und Windows 98se. Wie Windows XP, Windows XP SP1, Windows XP SP2 und so weiter.
Cliff Armstrong

8

WMI verfügt derzeit nicht über Eigenschaften, mit denen die Windows 10-Version (wie 1607) oder die vollständige Build-Nummer (wie 10.0.14393.577) vollständig identifiziert werden können. Wie in anderen Kommentaren erwähnt, diese Information ist in der Registrierung unter diesem Schlüssel sichtbar:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Die folgenden Werte in diesem Schlüssel entsprechen den Informationen, die vom Programm winver.exe angezeigt werden:

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)

Darüber hinaus wird die Versionsnummern sind in diesen beiden Werten von diesem Registrierungsschlüssel:

CurrentMajorVersionNumber = 10
CurrentMinorVersionNumber = 0

Der Build ändert sich, wenn sich die Version (wie 1607) ändert oder wenn Insider-Builds installiert werden. Die UBR (Update Build Revision) ändert sich jedoch mit bestimmten Updates, wie in der Versionsliste von Microsoft angegeben .

In PowerShell

[System.Environment]::OSVersion.Version

gibt Major, Minor und Build wie der Registrierungsschlüssel zurück, aber es scheint immer, als würde die Revision als 0 gemeldet. Ein bisschen Code von einem Reddit-Benutzer bietet einen adäquaten Ersatz, der die UBR aus der Registrierung als Revisionsnummer enthält:

$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 dh seine ganze Antwort ?!
oldmud0

@ oldmud0 natürlich nicht; Es gibt etwas, das akzeptabel ist
Ramhound

@RamHound Danke für das Feedback. Ich habe Cruft geschnitten. Wenn es immer noch zu ausführlich ist, lassen Sie es mich wissen.
Shem Sargent

Das ist die richtige Antwort. Es enthält ReleaseID (z. B. 1607), Build (z. B. 14393) und UBR (die Nummer, die sich mit jedem monatlichen Release ändert). Beachten Sie, dass ReleaseID und Build insofern redundant sind, als zwischen beiden eine 1-1-Zuordnung besteht. Ich würde gerne etwas von Microsoft darüber lesen, warum diese beiden Nummern existieren.
AggieNick02

5

Ich wurde dies ein paar Mal gefragt, also dachte ich, ich würde es posten. Es gibt drei Möglichkeiten.

  1. Führen Sie winver.exe aus
  2. Führen Sie ver.exe aus
  3. Überprüfen Sie die Registrierung

Weitere Informationen finden Sie hier: http://mythoughtsonit.com/2015/07/what-build-version-of-windows-10-am-i-running/


2
Leider stellt Microsoft keinen Mechanismus zur Verfügung, um die kumulative Update-Version zu ermitteln. Da sie nicht mehr wirklich Service Packs für Betriebssysteme bereitstellen, wären dies nützliche Informationen. Eine Alternative wäre die Verwendung des WMIC-Befehls, um eine bestimmte Rollup-Version abzufragen. ZB WMIC QFE GET HotfixID, InstalledOn, Description | FINDSTR /I "KB3081438"um festzustellen, ob die CU für den 15. August 2015 installiert ist. Ein leeres InstalledOn-Datum zeigt an, dass das System nicht neu gestartet wurde, um die Installation abzuschließen.
Greg Askew

1
Die Build-Nummer 10240 ändert sich bei Updates nicht. Die letzte Nummer 16xxx ändert sich, wenn der Kernel ein Update erhält.
magicandre1981

2
In meinem Buch ist dies die einzig richtige Antwort. Trotz der Behauptung, dass es nicht die "kumulative Update-Version" anzeigt, die es tatsächlich gibt, müssen Sie jetzt wissen, was der aktuelle Build tatsächlich ist, um ihn zu vergleichen, aber auch keine der anderen Antworten befasst sich mit diesem Problem.
Ramhound

Das Ausführen von winver auf der Kommandozeile funktioniert wie ein Zauber. Vielen Dank!
Andreas

Dies funktioniert nicht für Windows 10 LTSB
phuclv

2

Keine der zuvor veröffentlichten Methoden funktioniert, und keine von ihnen erstellt das Betriebssystem so, wie es unter EinstellungenInfo angezeigt wird Abschnitt wird. Es fehlen die kumulativen Aktualisierungsinformationen.

Sie könnten so etwas tun

$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 einem PowerShell-Skript, aber es erfordert etwas, das immer einzeilig war, und erschwert die Überwachung. Sie können die Updates hier sehen:

Windows 10 Update-Verlauf

Hoffentlich aktualisiert Microsoft ihre Patches, damit sie die BuildNumber ändern können.


"Hoffentlich wird Microsoft ihre Patches aktualisieren, damit sie anfangen, die BuildNumber zu ändern", die seit dem 29. Juli 2015
stattgefunden hat

@Ramhound ist es seit dem 29. Juli 2015 passiert oder nicht? Immer wenn ich Win32_OperatingSystem.Version anrufe, erhalte ich die OS Build-Nummer nicht. Ich erhalte 10.0.10586.0, wenn OS Build in Settings> System> About 10.0.10586.164
d4rkcell

Der Build wurde erst ab Schwellenwert 2 geändert. Seit Schwellenwert 2 hat sich die Build-Nummer mit den kumulativen Patches geändert. Ich habe nie gesagt, dass es Win32_OperatingSystem.Versionso funktionieren sollte, wie Sie es beschreiben, aber der Build ändert sich pro winver(mit anderen Worten, ich sage, Ihr Skript ist schuld).
Ramhound

Nein, hat es nicht, es hat in der Benutzeroberfläche, aber in WMI, besonders wenn Win32_OperatingSystem abgefragt wird, sagt die Versionsnummer hier immer noch 10.0.10586 und BuildNumber sagt immer noch 10586. Ich bin auf einem Computer mit OSBuild 10586.164 in den Einstellungen> System About OS Build Abschnitt, aber in WMI nicht. Warum liest du nicht, was ich geschrieben habe?
d4rkcell

1

Gibt es noch msinfo32.exe (Stand 8.1)? Bietet viele nützliche Informationen, einschließlich Seriennummern und Modellnummern, die für Laptops sehr hilfreich sein können.


(Wenn dies der Fall ist, wird es oben im Systemzusammenfassungsbereich unter dem Namen des Betriebssystems
angezeigt

aber es startet nur die GUI und keine Befehlszeilenlösung
phuclv

1

Sie können die Version aus der Registrierung ziehen. Hier ist ein PowerShell-Snipit, um dies zu tun:

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 ist immer die Antwort:

Get-CimInstance win32_operatingsystem

Mehr Informationen:

Get-CimInstance Win32_OperatingSystem | Select-Object buildnumber,version

Kehrt zurück:

Buildnummer Version
----------- -------
10240 10.0.10240

Sie können dies verwenden, um diese Informationen wirklich schnell abzurufen. Außerdem können Sie sie zu einer Funktion ausbauen und verwenden, um diese Informationen bei Bedarf aus Ihrer gesamten Flotte abzurufen.


2
Diese Antwort könnte etwas mehr Erklärung gebrauchen.
Kasperd

0

In einer AD-Domäne können Sie das Cmdlet Get-ADComputer von PowerShell verwenden

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

0

Sie können Reg Query in einem FOR-Befehl verwenden, um die Buildversion abzurufen, z. B. 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)

Dies funktioniert nicht wie die derzeit am besten bewertete Lösung . Die 1607 ist nicht die Build-Version, die mit "OS Build"
phuclv

0

Beim Versuch, eine Möglichkeit zum Anzeigen der Windows 10-Version und ihrer Revision für einen einzelnen Remotecomputer zu finden, stellte ich fest, dass die PowerShell-Versionsrevision der Windows-Revision folgte.

Es hat mich dazu gebracht, das folgende Skript zu erstellen. Ich habe einen Test hinzugefügt, um festzustellen, ob der Remotecomputer zum Abschluss der Aktualisierung neu gestartet werden muss.

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

Dies ergibt diese Art von Ergebnis:

Computer_Name Version Windows 10 Enterprise 1703, revision 296

In einer AD- Domäne können Sie Ihren einzelnen <Computername> durch eine Variable ersetzen, die die gesamten Computer einer Organisationseinheit enthält.


Warum schreibst du so ein komplexes Drehbuch? Es funktioniert nicht auf meinem lokalen PC, der keiner Domäne zugeordnet ist. Das Auffordern von Benutzern, den Computernamen einzugeben, ist nicht freundlich. Es scheint, der einzige wichtige Befehl hier ist 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)", aber es gibt mir Windows 10 Pro 1803, revision 1000auf 10.0.17730.1000, was falsch ist. Die Build-Version ist 17730
phuclv

Anscheinend haben Sie zwei Super-User-Accounts: Frantz Kopanicki und Frantz Kopanicki . Dies beeinträchtigt das Kommentieren, Bearbeiten Ihrer eigenen Beiträge und das Akzeptieren einer Antwort. Nehmen Sie sich bitte die Zeit, um dieses Hilfetutorial zu nutzen, und bitten Sie die Mitarbeiter von Super User, Ihre Konten zusammenzuführen.
robinCTS

-1

Wir müssen überprüfen, welcher kumulative Patch installiert ist, um die Konformität zu gewährleisten. Die Verwendung von Get-Hotfix funktioniert, verursacht jedoch Probleme, wenn ein späterer kumulativer Patch installiert wird. Die beste Lösung besteht darin, die Build-Nummer einschließlich des Hotfix-Teils zu vergleichen. Die einzige Möglichkeit, dies über die Befehlszeile zu erreichen, ist die Verwendung des Befehls "Eingabeaufforderung ver", der in PowerShell nicht direkt funktioniert.

$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"}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.