Как получить версию Windows из командной строки или PowerShell
Есть несколько альтернатив, доступных для получения версии 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))"