Как получить версию Windows из командной строки или PowerShell

Версия для Windows

Есть несколько альтернатив, доступных для получения версии Windows, как показано ниже в командах power-shell: Но есть ли способ получить точную строку версии, используя вывод командной строки, подобный тому, который упомянут на изображении. Прилагается вывод команды winver из run. PS, я ищу пакетную или PowerShell команду.

8 ответов

ver Команда показывает что-то вроде этого:

> ver

Microsoft Windows [Versión 10.0.17134.228]

Но в PowerShell (или Git Bash) вы должны вызывать его через cmd команда:

> cmd /c ver

Эти команды помогут вам в этом, если вам нужна дополнительная информация, просто введите systeminfo

  • systeminfo | findstr / B / C: "Имя ОС" /C:"Версия ОС"

  • 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>вер.

Microsoft Windows [версия 10.0.19044.2130]

В PowerShell из:Как узнать версию Windows из командной строки PowerShell

$Version = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' "Версия $($Version.ReleaseId) (сборка ОС $($Version.CurrentBuildNumber).$($Version.UBR))"

Другие вопросы по тегам