但是有没有一种方法可以使用类似于图像中提到的命令行输出来获取确切的版本字符串?
附件是运行“winver”命令的输出。 PS:我正在寻找批处理或 PowerShell 命令。
有一些替代方法可用于获取 Windows 版本,例如以下 PowerShell 命令:
[System.Environment]::OSVersion
以下命令将帮助您。如果您需要更多信息,只需输入 systeminfo:
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
wmic os get Caption,CSDVersion /value
我在某个地方找到了它,PowerShell:
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId
添加@Bonifacio 的答案:
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | findstr ReleaseId
会更好,因为它只返回 ReleaseId 值,然后您可以将其通过管道传输到文件。如果您有多个主机需要处理,则特别有用。
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | findstr ReleaseId > any_path\%COMPUTERNAME%_OS_Version.txt
有了系统信息,您只能获取具有该值的版本,然后前往 Google 获取相应的版本。
但是,一种简单的方法是在命令行上搜索注册表:
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | findstr REG_SZ
reg查询方式建议所有输出都有点垃圾。
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | findstr ReleaseId
Output:
ReleaseId REG_SZ 2009
使用带有标记的 for 循环将输出干净的信息。
for /f "tokens=3" %i in ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" ^| findstr ReleaseId') do echo %i
Output:
2009
tokens=3
指的是原始输出中的第三个单词。
如果在 bat 文件中运行,则需要将
%
加倍。
您可以通过将
echo %i
替换为 set build=%i
将输出设置为变量
还记得转义
^
任何特殊字符。
最后查看
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
是否有具有所需值的字符串。您可能需要调整令牌数量。
无论如何,我将一些答案合并到这个 powershell 函数中。 (我使用 pwsh 7.2.1 对此进行了测试)。
<#
.SYNOPSIS
Gets information about the version of windows this session is running on.
.OUTPUTS
A hashtable with various key/value pairs containing version information.
.EXAMPLE
PS> $winver = Get-Winver
PS> $winver
Name Value
---- -----
DisplayVersion 21H2
ProductName Windows 10 Enterprise
CurrentBuildNumber 19044
KeyName HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion
Version 10.0.19044.0
VersionString Microsoft Windows NT 10.0.19044.0
OsVersion Microsoft Windows NT 10.0.19044.0
PS> $winver.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 19044 0
#>
function Get-Winver {
$keyName = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion"
$versionKey = (Get-Item $keyName)
$displayVersion = $versionKey.GetValue("DisplayVersion")
$productName = $versionKey.GetValue("ProductName")
$currentBuildNumber = $versionKey.GetValue("CurrentBuildNumber")
$osver = [System.Environment]::OSVersion
$winver = [Ordered]@{
"DisplayVersion" = $displayVersion
"ProductName" = $productName
"CurrentBuildNumber" = $currentBuildNumber
"KeyName" = $keyName
"Version" = $osver.Version
"VersionString" = $osver.VersionString
"OsVersion" = $osver
}
return $winver
}
在cmd中你可以使用-ver
C:\Users\user_user>ver
Microsoft Windows [版本 10.0.19044.2130]
在 PowerShell 中 从: 如何从 PowerShell 命令行查找 Windows 版本
$Version = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' “版本 $($Version.ReleaseId)(操作系统构建 $($Version.CurrentBuildNumber).$($Version.UBR))”