Comment trouver la version / build de Windows 10


19

Pendant la version bêta de Windows 10, il était difficile de savoir quelle version vous utilisiez, à moins qu'elle ne soit publiée sur le bureau. Une fois que ce n'était pas le cas - comment savoir quelle version / build vous utilisez?

Cela deviendra plus problématique à mesure que Microsoft commencera à publier plus de builds avec le nouveau mécanisme de mise à jour.


Je ne pense pas que les mises à jour modifient le numéro de build.
joeqwerty

Réponses:


19

GUI: Paramètres, Système, À propos

Je ne sais pas si c'est la `` bonne '' façon, mais vous pouvez obtenir la `` version '' vocalisée / parlée de Win10 (1511, 1607, etc.) via ce cmd:

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

Voici la page de Microsoft pour corréler les numéros de build à la «version» de Win10 ( lien de sauvegarde [wiki] au cas où ). M'a aidé lorsque je reçois le build # à partir d'un PC distant:wmic /node:HOSTNAME os get BuildNumber


6
Merci - cela m'a beaucoup aidé. Juste pour le cas - la version PowerShell de votre commande serait(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
Anton Krouglov

Cela ne fonctionne pas sur Windows 10 Enterprise LTSB. Seules les solutions qui lisent la version de powershell fonctionnent directement pour moi
phuclv

J'exécute LTSB moi-même et cela fonctionne pour moi?
gregg

ça ne marche pas non plus dans mon dernier Windows 10 Pro: sur 10.0.17730.1000 (ie build 17730) ça donne ReleaseId REG_SZ 1803. Ceci et cela fonctionne
phuclv

@AntonKrouglov, c'est l'ID de version et non la version actuelle. Vous devez utiliser (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuildNumber).CurrentBuildNumberou (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuild).CurrentBuildpour le numéro de build
phuclv

9

Vérifier la version ou le numéro de build de Windows 10 n'est pas très utile car il ne change pas avec le temps.

Il s'avère que la première phrase est erronée; c'était vrai dans toutes les versions précédentes de Windows, mais nous sommes maintenant dans un nouveau monde Windows 10. Les dernières initiés construire a un numéro de version de 10525rapport à « RTM »: 10240.

Il existe plusieurs façons d'obtenir le numéro de build sur la ligne de commande:

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

Le dernier des trois est le plus rapide.

Si vous préférez l'interface graphique, vous pouvez utiliser winver.exe ou l' Aboutentrée dans le Helpmenu de la plupart des applications de bureau Windows.

En l'absence de service packs, le niveau de correctif sur le système d'exploitation dépend des mises à jour installées. Il existe plusieurs façons de les trouver, GUI, systeminfo.exe, wmi, etc.

La façon recommandée et la plus puissante de faire des choses comme ça utilise PowerShell:

Get-HotFix

montre quelque chose comme:

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

Vous pouvez filtrer les mises à jour des 10 derniers jours:

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

Ou affichez les trois dernières mises à jour installées:

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

Vous pouvez vérifier si une mise à jour spécifique est installée:

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

Vous pouvez d'abord trouver le dernier numéro de patch en ligne comme:

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

Vérifiez ensuite s'il existe sur la machine.

Remarque: ce n'est qu'un exemple. Je ne connais pas de page qui les répertorie actuellement, et vous devez encore l'analyser.

La question est la suivante: au fil du temps, Microsoft modifiera-t-il tellement les fonctionnalités de Windows 10 que vous devrez les vérifier pour faire fonctionner votre application ou votre script.

Il peut être préférable de vérifier si une fonctionnalité spécifique dont vous avez besoin existe sur le système, plutôt que de rechercher un numéro de version.


"c'était vrai dans toutes les versions précédentes de Windows" En fait, cela n'a pas été vrai depuis Windows 95, au moins. Windows 95 et Windows 95 OSR2 avaient des numéros de version différents. Tout comme Windows 98 et Windows 98se. Tout comme Windows XP, Windows XP SP1, Windows XP SP2, etc.
Cliff Armstrong

8

WMI ne dispose pas actuellement de propriétés qui peuvent être utilisées pour identifier complètement la version de Windows 10 (comme 1607) ou le numéro de version complet (comme 10.0.14393.577). Comme indiqué dans d'autres commentaires, ces informations sont visibles dans le registre sous cette clé:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Les valeurs suivantes dans cette clé correspondent aux informations affichées par le programme 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)

En outre, les numéros de version sont dans ces deux valeurs de cette clé de Registre:

CurrentMajorVersionNumber = 10
CurrentMinorVersionNumber = 0

La version change lorsque la version (comme 1607) change ou lorsque des versions Insider sont installées. Cependant, l'UBR (Update Build Revision) change avec certaines mises à jour comme indiqué dans la liste des versions de Microsoft .

Dans PowerShell,

[System.Environment]::OSVersion.Version

renvoie Major, Minor et Build identiques à la clé de registre, mais il semble toujours signaler la révision comme 0. Un peu de code d'un utilisateur Reddit fournit un remplacement adéquat qui inclut l'UBR du registre comme numéro de révision:

$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 c'est-à-dire toute sa réponse?!
oldmud0

@ oldmud0 bien sûr que non; il y a quelque chose qui est acceptable
Ramhound

@RamHound Merci pour la rétroaction. J'ai coupé de la cruauté. Si c'est encore trop verbeux, faites le moi savoir.
Shem Sargent

Ceci est la bonne réponse. Il comprend ReleaseID (par exemple 1607), build (par exemple 14393) et UBR (le nombre qui change avec chaque version mensuelle). Notez que ReleaseID et build sont redondants en ce sens qu'il existe un mappage 1-1 entre les deux; J'adorerais lire quelque chose de Microsoft sur la raison pour laquelle ces deux nombres existent.
aggieNick02

5

On m'a posé cette question plusieurs fois, alors j'ai pensé que je la publierais. Il y a trois façons.

  1. Exécutez winver.exe
  2. Exécutez ver.exe
  3. Vérifiez le registre

Pour plus de détails, regardez ici: http://myoughttsonit.com/2015/07/what-build-version-of-windows-10-am-i-running/


2
Malheureusement, Microsoft ne fournit pas de mécanisme pour déterminer la version de mise à jour cumulative. Puisqu'ils ne fournissent plus vraiment de service packs de système d'exploitation, ce serait des informations utiles. Une alternative serait d'utiliser la commande WMIC pour rechercher une version de cumul spécifique. Par exemple, WMIC QFE GET HotfixID, InstalledOn, Description | FINDSTR /I "KB3081438"pour déterminer si l'UC du 15 août 2015 est installée. Une date InstalledOn vierge indique que le système n'a pas redémarré pour terminer l'installation.
Greg Askew

1
Le numéro de build 10240 ne change pas avec les mises à jour. Le dernier numéro 16xxx change lorsque le noyau obtient une mise à jour.
magicandre1981

2
Dans mon livre, c'est la seule vraie bonne réponse. Malgré les affirmations selon lesquelles il n'affiche pas la "version de mise à jour cumulative", il est maintenant possible, étant donné que vous devez connaître la version actuelle, afin de la comparer, mais aucune des autres réponses ne traite ce problème non plus.
Ramhound

Exécuter winver sur la ligne de commande fonctionne comme un charme. Merci!
Andreas

cela ne fonctionnera pas pour Windows 10 LTSB
phuclv

2

Aucune des méthodes précédemment publiées ne fonctionne, et aucune ne donne le build du système d'exploitation tel qu'il apparaît dans la section ParamètresÀ propos . Il manque les informations de mise à jour cumulative.

Vous pourriez faire quelque chose comme ça

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

dans un script PowerShell, mais cela prend quelque chose qui a toujours été à une ligne et le rend plus difficile à surveiller. Vous pouvez voir les mises à jour ici:

Historique des mises à jour de Windows 10

Espérons que Microsoft mettra à jour leurs correctifs afin de commencer à modifier le BuildNumber.


"Espérons que Microsoft mettra à jour ses correctifs pour commencer à modifier le BuildNumber" qui s'est produit depuis le 29 juillet 2015 ......
Ramhound

@Ramhound c'est arrivé depuis le 29 juillet 2015 ou pas? Chaque fois que j'appelle Win32_OperatingSystem.Version, je n'ai pas le numéro de build du système d'exploitation, j'obtiens 10.0.10586.0 lorsque le build du système d'exploitation dans Paramètres> Système> À propos est 10.0.10586.164
d4rkcell

La version n'a pas changé avant le seuil 2. Depuis le seuil 2, le numéro de version a changé, avec les correctifs cumulatifs. Je n'ai jamais dit que cela Win32_OperatingSystem.Versiondevrait fonctionner comme vous le décrivez, mais la construction change selon winver(en d'autres termes, je dis que votre script est en faute).
Ramhound

Non, il l'a dans l'interface utilisateur, mais dans WMI, en particulier lors de l'interrogation de Win32_OperatingSystem, le numéro de version indique toujours 10.0.10586 et BuildNumber indique toujours 10586. Je suis sur une machine qui a OSBuild 10586.164 dans Paramètres> Système À propos de la construction du système d'exploitation mais pas dans WMI. Pourquoi ne lisez-vous pas ce que j'ai tapé?
d4rkcell

1

Est-ce que msinfo32.exe est toujours là (depuis la version 8.1)? Donne beaucoup d'informations pratiques, y compris les numéros de série et de modèle, ce qui peut être très utile pour les ordinateurs portables.


(si c'est le cas, il sera dans la zone de résumé du système sous OS Name en haut.)
radiks32

mais il ne fait que démarrer l'interface graphique et non une solution en ligne de commande
phuclv

1

Vous pouvez extraire la version du registre. Voici un snipit PowerShell pour ce faire:

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 est toujours la réponse:

Get-CimInstance win32_operatingsystem

Plus d'information:

Get-CimInstance Win32_OperatingSystem | Select-Object buildnumber,version

Retour:

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

Vous pouvez l'utiliser pour obtenir ces informations très rapidement, en plus, vous pouvez l'intégrer dans une fonction et l'utiliser pour récupérer ces informations de l'ensemble de votre flotte si vous en avez besoin.


2
Cette réponse pourrait utiliser un peu plus d'explications.
kasperd

0

Dans un domaine AD, vous pouvez utiliser l' applet de commande Get-ADComputer de PowerShell

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

0

Vous pouvez utiliser Reg Query dans une commande FOR pour obtenir la version de build, par exemple, 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)

cela ne fonctionne pas comme la solution actuellement la mieux votée . Le 1607 n'est pas la version de build qui est celle avec "OS build"
phuclv

0

En essayant de trouver un moyen d'afficher la version de Windows 10 et sa révision pour un seul ordinateur distant, j'ai remarqué que la révision de version de PowerShell suivait la révision de Windows.

Cela m'a amené à construire le script suivant. J'ai ajouté un test pour savoir si l'ordinateur distant doit redémarrer pour terminer la mise à jour.

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

Cela donne ce type de résultat:

Computer_Name Version Windows 10 Enterprise 1703, revision 296

Dans un domaine AD , vous pouvez remplacer votre <Computer_Name> unique par une variable qui contient l'ensemble des ordinateurs d'une unité d'organisation.


pourquoi écrivez-vous un script aussi complexe? Cela ne fonctionne pas sur mon PC local qui n'est associé à aucun domaine. Et demander aux utilisateurs de taper le nom de l'ordinateur n'est pas convivial. Il semble que la seule commande importante ici soit 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)", mais elle me donne Windows 10 Pro 1803, revision 1000le 10.0.17730.1000 qui est incorrect. La version de construction est 17730
phuclv

Apparemment, vous avez deux comptes Super User: Frantz Kopanicki et Frantz Kopanicki . Cela interférera avec les commentaires, la modification de vos propres messages et l'acceptation d'une réponse. Veuillez prendre le temps d'utiliser ce didacticiel du centre d'aide et demander au personnel superutilisateur de fusionner vos comptes.
robinCTS

-1

Nous devons vérifier quel correctif cumulatif est installé pour la conformité. l'utilisation de get-hotfix fonctionne mais pose des problèmes si un correctif cumulatif ultérieur est installé. La meilleure solution consiste à comparer le numéro de version, y compris la partie de correctif. La seule façon d'obtenir cela par ligne de commande est d'utiliser la commande ver d'invite de commande qui ne fonctionne pas directement dans 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"}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.