在 Windows 10 测试版期间,除非将版本发布到桌面,否则很难知道您运行的是哪个版本。一旦没有发布到桌面,您如何知道您运行的是哪个版本/构建?
随着微软开始发布更多采用新更新机制的版本,这将成为一个更大的问题。
答案1
WMI 目前没有可用于完全识别 Windows 10 版本(如 1607)或完整内部版本号(如 10.0.14393.577)的属性。如其他评论所述,此信息是在注册表中的此项下可见:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
该项中的以下值与 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)
此外,版本数字该注册表项中的这两个值是:
CurrentMajorVersionNumber = 10
CurrentMinorVersionNumber = 0
当版本(如 1607)更改或安装 Insider 版本时,版本会发生变化。但是,UBR(更新版本修订版)会随着某些更新而发生变化,如下所示在微软的发布列表中。
在 PowerShell 中,
[System.Environment]::OSVersion.Version
返回与注册表项相同的 Major、Minor 和 Build,但它似乎总是将 Revision 报告为 0。来自 Reddit 用户的一段代码提供了适当的替代方案,其中包括来自注册表的 UBR 作为修订号:
$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
答案2
GUI:设置、系统、关于
不确定这是否是“正确”的方法,但你可以得到Win10 发声/谈论的“版本”(1511、1607 等)通过这个cmd:
Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId
这是微软将版本号与 Win10“版本”关联的页面(备份链接[wiki] 以防万一)。当我从远程 PC 获取构建编号时,它帮助了我:wmic /node:HOSTNAME os get BuildNumber
答案3
检查 Windows 10 的版本或内部版本号没有什么帮助,因为它不会随着时间的推移而改变。
事实证明,第一句话是错误的;这在以前所有版本的 Windows 中都是正确的,但我们现在处于一个新的 Windows 10 世界中。10525
与“RTM”相比,最新的内部版本的内部版本号为:10240
。
有几种方法可以在命令行上获取版本号:
systeminfo.exe
(Get-CimInstance -ClassName Win32_OperatingSystem -Namespace root/cimv2).BuildNumber
(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name CurrentBuild).CurrentBuild
三个中最后一个是最快的。
如果您更喜欢 GUI,您可以使用 winver.exe 或大多数 Windows 桌面应用程序菜单About
中的条目。Help
由于不再提供服务包,操作系统上的补丁级别取决于已安装的更新。有几种方法可以找到这些更新,GUI、systeminfo.exe、wmi 等。
执行此类操作的最推荐且最有效的方法是使用 PowerShell:
Get-HotFix
显示类似以下内容:
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
您可以过滤过去 10 天的更新:
Get-Hotfix | Where {$_.InstalledOn -gt $(Get-Date).AddDays(-10) -and $_.Description -eq "Update"}
或者显示最近安装的三个更新:
Get-Hotfix | Sort-object InstalledOn -Descending | Select -First 3
您可以检查是否安装了特定更新:
if ((get-hotfix -id kb3087916) -ne $null) {"patched..."}
您可以首先在线查找最新的补丁 kb 号,例如:
(New-Object Net.WebClient).DownloadString('https://microsoft.com/...')
然后检查它是否存在于机器上。
注意:这只是一个例子。我不知道目前有哪个页面列出了这些内容,你仍然需要解析它。
问题是:随着时间的推移,微软是否会对 Windows 10 的功能进行大量改变,以至于您必须检查它才能使您的应用程序或脚本正常运行。
检查系统上是否存在您需要的特定功能可能比查找版本号更好。
答案4
PowerShell 始终是答案:
Get-CimInstance win32_operatingsystem
更多信息:
Get-CimInstance Win32_OperatingSystem | Select-Object buildnumber,version
返回:
版本号
----------- -------
10240 10.0.10240
您可以使用它来快速获取该信息,此外,您可以将其构建为一个函数并使用它来从整个车队中获取该信息(如果需要)。