Как найти версию Windows из командной строки PowerShell - PullRequest
100 голосов
/ 07 сентября 2011

Как мне узнать, какую версию Windows я использую?

Я использую PowerShell 2.0 и попробовал:

PS C:\> ver
The term 'ver' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify tha
t the path is correct and try again.
At line:1 char:4
+ ver <<<< 
    + CategoryInfo          : ObjectNotFound: (ver:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Как мне это сделать?

Ответы [ 21 ]

4 голосов
/ 30 мая 2013

Использование:

Get-WmiObject -class win32_operatingsystem -computer computername | Select-Object Caption
3 голосов
/ 20 июня 2018

Я взял приведенные выше сценарии и немного их подправил, чтобы придумать:

$name=(Get-WmiObject Win32_OperatingSystem).caption
$bit=(Get-WmiObject Win32_OperatingSystem).OSArchitecture

$vert = " Version:"
$ver=(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId

$buildt = " Build:"
$build= (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").BuildLabEx -match '^[0-9]+\.[0-9]+' |  % { $matches.Values }

$installd = Get-ComputerInfo -Property WindowsInstallDateFromRegistry

Write-host $installd
Write-Host $name, $bit, $vert, $ver, `enter code here`$buildt, $build, $installd

Чтобы получить такой результат:

Microsoft Windows 10 Home 64-битная версия: 1709 сборка: 16299.431 @ {WindowsInstallDateFromRegistry = 18-01-01 2:29:11 AM}

Подсказка: я был бы признателен за то, чтобы вручную убрать текст префикса с даты установки, чтобы я мог заменить егос более читаемым заголовком.

2 голосов
/ 18 мая 2017

Если вы пытаетесь расшифровать информацию, которую MS размещает на своем сайте исправлений, например https://technet.microsoft.com/en-us/library/security/ms17-010.aspx

, вам потребуется комбо, например:

$name=(Get-WmiObject Win32_OperatingSystem).caption $bit=(Get-WmiObject Win32_OperatingSystem).OSArchitecture $ver=(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId Write-Host $name, $bit, $ver

Microsoft Windows 10 Home 64-битная 1703

2 голосов
/ 01 августа 2015

Windows PowerShell 2.0:

$windows = New-Object -Type PSObject |
           Add-Member -MemberType NoteProperty -Name Caption -Value (Get-WmiObject -Class Win32_OperatingSystem).Caption -PassThru |
           Add-Member -MemberType NoteProperty -Name Version -Value [Environment]::OSVersion.Version                     -PassThru

Windows PowerShell 3.0:

$windows = [PSCustomObject]@{
    Caption = (Get-WmiObject -Class Win32_OperatingSystem).Caption
    Version = [Environment]::OSVersion.Version
}

Для отображения (обе версии):

"{0}  ({1})" -f $windows.Caption, $windows.Version 
1 голос
/ 03 августа 2016
(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name BuildLabEx).BuildLabEx
0 голосов
/ 23 октября 2018

Вы можете использовать python для упрощения вещей (работает на всех версиях Windows и на всех других платформах):

import platform

print(platform.system()) # returns 'Windows', 'Linux' etc.
print(platform.release()) # returns for Windows 10 or Server 2019 '10'

if platform.system() = 'Windows':
    print(platform.win32_ver()) # returns (10, 10.0.17744, SP0, Multiprocessor Free) on windows server 2019
0 голосов
/ 07 марта 2019

Используя Windows Powershell, можно получить необходимые данные следующим образом

Заголовок:

(Get-WmiObject -class Win32_OperatingSystem).Caption

ReleaseId:

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

версия:

(Get-CimInstance Win32_OperatingSystem).version
0 голосов
/ 14 июля 2016
$OSVersion = [Version](Get-ItemProperty -Path "$($Env:Windir)\System32\hal.dll" -ErrorAction SilentlyContinue).VersionInfo.FileVersion.Split()[0]

В Windows 10 возвращается: 10.0.10586.420

Затем вы можете использовать переменную для доступа к свойствам для гранулярного сравнения

$OSVersion.Major equals 10
$OSVersion.Minor equals 0
$OSVersion.Build equals 10586
$OSVersion.Revision equals 420

Кроме того, вы можете сравнить версии операционной системы, используя следующее

If ([Version]$OSVersion -ge [Version]"6.1")
   {
       #Do Something
   }
0 голосов
/ 14 июня 2018

Я много искал, чтобы узнать точную версию, потому что сервер WSUS показывает неправильную версию. Лучше всего получить ревизию из реестра UBR KEY.

    $WinVer = New-Object –TypeName PSObject
$WinVer | Add-Member –MemberType NoteProperty –Name Major –Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' CurrentMajorVersionNumber).CurrentMajorVersionNumber
$WinVer | Add-Member –MemberType NoteProperty –Name Minor –Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' CurrentMinorVersionNumber).CurrentMinorVersionNumber
$WinVer | Add-Member –MemberType NoteProperty –Name Build –Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' CurrentBuild).CurrentBuild
$WinVer | Add-Member –MemberType NoteProperty –Name Revision –Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' UBR).UBR
$WinVer
0 голосов
/ 17 апреля 2019

Чтобы создать идентичный вывод для winver.exe в PowerShell v5 в Windows 10 1809:

$Version = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\'
"Version $($Version.ReleaseId) (OS Build $($Version.CurrentBuildNumber).$($Version.UBR))"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...