如何从命令提示符或 PowerShell 获取 Windows 版本

问题描述 投票:0回答:8

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

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

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

[System.Environment]::OSVersion
windows windows-10 windowsversion
8个回答
41
投票

ver
命令显示如下内容:

> ver

Microsoft Windows [Versión 10.0.17134.228]

但是在 PowerShell(或 Git Bash)中你必须通过

cmd
命令来调用它:

> cmd /c ver

34
投票

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

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

wmic os get Caption,CSDVersion /value

11
投票

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

(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId

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

1
投票

有了系统信息,您只能获取具有该值的版本,然后前往 Google 获取相应的版本。

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

REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | findstr REG_SZ

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

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

如果在 bat 文件中运行,则需要将

%
加倍。

您可以通过将

echo %i
替换为
set build=%i

将输出设置为变量

还记得转义

^
任何特殊字符。

最后查看

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
是否有具有所需值的字符串。您可能需要调整令牌数量。


1
投票

无论如何,我将一些答案合并到这个 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
}

0
投票

在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))”

© www.soinside.com 2019 - 2024. All rights reserved.