33

视窗版。

但是有没有办法使用类似于图像中提到的命令行输出来获取确切的版本字符串?

附件是运行中“winver”命令的输出。PS:我正在寻找批处理或 PowerShell 命令。

有一些替代方法可用于获取 Windows 版本,例如此 PowerShell 命令:

[System.Environment]::OSVersion
4

7 回答 7

28

ver命令显示如下内容:

> ver

Microsoft Windows [Versión 10.0.17134.228]

但在 PowerShell(或 Git Bash)中,您必须通过以下cmd命令调用它:

> cmd /c ver
于 2018-09-01T16:27:42.117 回答
27

以下命令将帮助您。如果您需要更多信息,只需输入systeminfo

systeminfo | findstr /B /C:"OS Name" /C:"OS Version"

wmic os get Caption,CSDVersion /value
于 2017-03-14T06:19:28.600 回答
10

我在某个地方找到了它,PowerShell:

(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId
于 2017-12-19T00:56:21.990 回答
3

要添加到@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
于 2019-09-18T19:06:48.707 回答
1

使用系统信息,您只能获取具有该值的构建,然后去 Google 获取相应的版本。

但是,一种简单的方法是在命令行上搜索注册表:

REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | findstr REG_SZ
于 2018-08-08T15:33:30.793 回答
1

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

thetokens=3指的是原始输出中的第三个单词。

%如果在 bat 文件中运行,您将需要加倍。

echo %i您可以通过替换将输出设置为变量set build=%i

还要记住转义^任何特殊字符。

最后查看HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion具有所需值的字符串。您可能需要调整令牌计数。

于 2020-11-03T17:42:12.670 回答
0

对于它的价值,我将一些答案组合到这个 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
}
于 2022-02-17T01:23:03.960 回答