it-swarm.com.de

Wie finden Sie die Windows-Version über die PowerShell-Befehlszeile?

Wie finde ich heraus, welche Windows-Version ich verwende?

Ich verwende PowerShell 2.0 und habe es versucht:

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

Wie mache ich das?

85
jrara

Da Sie Zugriff auf die .NET-Bibliothek haben, können Sie auf die OSVersion - Eigenschaft der System.Environment -Klasse zugreifen, um diese Informationen abzurufen. Für die Versionsnummer gibt es die Version-Eigenschaft.

Zum Beispiel,

PS C:\> [System.Environment]::OSVersion.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
6      1      7601   65536

Details zu Windows-Versionen finden Sie hier .

125
Jeff Mercado
  1. Um die Windows-Versionsnummer zu erhalten, wie Jeff in seiner answer angibt, verwenden Sie:

    [Environment]::OSVersion
    

    Es ist erwähnenswert, dass das Ergebnis vom Typ [System.Version] ist. Daher können Sie beispielsweise nach Windows 7/Windows Server 2008 R2 und höher suchen

    [Environment]::OSVersion.Version -ge (new-object 'Version' 6,1)
    

    Dies sagt Ihnen jedoch nicht, ob es sich um ein Client- oder Server-Windows oder um den Namen der Version handelt.

  2. Verwenden Sie die WMI-Klasse Win32_OperatingSystem (immer eine Instanz), zum Beispiel:

    (Get-WmiObject -class Win32_OperatingSystem).Caption
    

    wird so etwas zurückgeben

    Microsoft® Windows Server® 2008 Standard

90
Richard
Get-WmiObject -Class Win32_OperatingSystem | ForEach-Object -MemberName Caption

Oder golfen

gwmi win32_operatingsystem | % caption

Ergebnis

 Microsoft Windows 7 Ultimate 
21
Steven Penny

Leider enthalten die meisten anderen Antworten keine Windows 10-spezifischen Informationen.

Windows 10 verfügt über versions : 1507, 1511, 1607, 1703 usw. . Das zeigt winver.

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

Command Prompt (CMD.EXE):
Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId

Siehe auch verwandte Frage zu Superuser .

Wie für andere Windows-Versionen verwenden Sie systeminfo. PowerShell-Wrapper:

PS C:\> systeminfo /fo csv | ConvertFrom-Csv | select OS*, System*, Hotfix* | Format-List


OS Name             : Microsoft Windows 7 Enterprise
OS Version          : 6.1.7601 Service Pack 1 Build 7601
OS Manufacturer     : Microsoft Corporation
OS Configuration    : Standalone Workstation
OS Build Type       : Multiprocessor Free
System Type         : x64-based PC
System Locale       : ru;Russian
Hotfix(s)           : 274 Hotfix(s) Installed.,[01]: KB2849697,[02]: KB2849697,[03]:...

Windows 10-Ausgabe für denselben Befehl:

OS Name             : Microsoft Windows 10 Enterprise N 2016 LTSB
OS Version          : 10.0.14393 N/A Build 14393
OS Manufacturer     : Microsoft Corporation
OS Configuration    : Standalone Workstation
OS Build Type       : Multiprocessor Free
System Type         : x64-based PC
System Directory    : C:\Windows\system32
System Locale       : en-us;English (United States)
Hotfix(s)           : N/A
19
Anton Krouglov

Dadurch erhalten Sie die Vollversion von Windows (einschließlich RevisionsBuild-Nummer) -/im Gegensatz zu allen oben genannten Lösungen:

(Get-ItemProperty -Path c:\windows\system32\hal.dll).VersionInfo.FileVersion

Ergebnis:

10.0.10240.16392 (th1_st1.150716-1608)
14
Ihor Zenich

Ich verfeinere eine der Antworten

Ich habe diese Frage erreicht, als ich versucht habe, die Ausgabe von winver.exe abzugleichen:

Version 1607 (OS Build 14393.351)

Ich konnte den Build-String extrahieren mit:

,((Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name BuildLabEx).BuildLabEx -split '\.') | % {  $_[0..1] -join '.' }  

Ergebnis: 14393.351

Aktualisiert : Hier ist ein leicht vereinfachtes Skript, das Regex verwendet

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

Wenn Sie zwischen Windows 8.1 (6.3.9600) und Windows 8 (6.2.9200) unterscheiden möchten, verwenden Sie 

(Get-CimInstance Win32_OperatingSystem).Version 

um die richtige Version zu erhalten. [Environment]::OSVersion funktioniert nicht ordnungsgemäß in Windows 8.1 (es wird eine Windows 8-Version zurückgegeben).

7
MoonStom

Seit PowerShell 5:

Get-ComputerInfo
Get-ComputerInfo -Property Windows*

Ich denke, dieser Befehl versucht die 1001 verschiedenen Möglichkeiten, Systeminformationen zu sammeln ...

6
Schadowy
PS C:\> Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer

kehrt zurück

WindowsProductName    WindowsVersion OsHardwareAbstractionLayer
------------------    -------------- --------------------------
Windows 10 Enterprise 1709           10.0.16299.371 
4
Lars Fosdal

Benutzen:

Get-WmiObject -class win32_operatingsystem -computer computername | Select-Object Caption
4
Mac

Wie MoonStom sagt, funktioniert [Environment]::OSVersion auf einem aktualisierten Windows 8.1 nicht richtig (es gibt eine Windows 8-Version zurück): link .

Wenn Sie zwischen Windows 8.1 (6.3.9600) und Windows 8 (6.2.9200) unterscheiden möchten, können Sie (Get-CimInstance Win32_OperatingSystem).Version verwenden, um die richtige Version zu erhalten. Dies funktioniert jedoch nicht in PowerShell 2. Verwenden Sie also Folgendes:

$version = $null
try {
    $version = (Get-CimInstance Win32_OperatingSystem).Version
}
catch {
    $version = [System.Environment]::OSVersion.Version | % {"{0}.{1}.{2}" -f $_.Major,$_.Minor,$_.Build}
}
4
mhu

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
}

Zur Anzeige (beide Versionen):

"{0}  ({1})" -f $windows.Caption, $windows.Version 
2
Vince Ypma

Ich nahm die oben genannten Skripte und bearbeitete sie ein wenig, um Folgendes herauszufinden:

$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

Um ein Ergebnis wie dieses zu erhalten:

Microsoft Windows 10 Home 64-Bit-Version: 1709 Build: 16299.431 @ {WindowsInstallDateFromRegistry = 18-01-01 2:29:11 AM}

Hinweis: Ich würde mich freuen, wenn eine Hand den Präfixtext vom Installationsdatum entfernt, damit ich ihn durch eine lesbarere Kopfzeile ersetzen kann. 

2
Ron MVP
(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name BuildLabEx).BuildLabEx
1
Test

Wenn Sie versuchen, Informationen zu entschlüsseln, die MS auf ihrer Patch-Site ablegt, beispielsweise https://technet.Microsoft.com/en-us/library/security/ms17-010.aspx

sie benötigen eine Kombination wie:

$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-Bit 1703

1
Michael Joyce

Dadurch erhalten Sie die vollständige und RICHTIGE (dieselbe Versionsnummer, die Sie beim Ausführen von winver.exe finden) (einschließlich Revisions-/Build-Nummer) von Windows im Gegensatz zu allen anderen Lösungen (getestet unter Windows 10):

Function Get-OSVersion {
Param($ComputerName)
    Invoke-Command -ComputerName $ComputerName -ScriptBlock {
        $all = @()
        (Get-Childitem c:\windows\system32) | ? Length | Foreach {

            $all += (Get-ItemProperty -Path $_.FullName).VersionInfo.Productversion
        }
        $version = [System.Environment]::OSVersion.Version
        $osversion = "$($version.major).0.$($version.build)"
        $minor = @()
        $all | ? {$_ -like "$osversion*"} | Foreach {
            $minor += [int]($_ -replace".*\.")
        }
        $minor = $minor | sort | Select -Last 1

        return "$osversion.$minor"
    }
}
0
PowerShellGirl

Ich habe viel gesucht, um die genaue Version herauszufinden, da der WSUS-Server die falsche Version zeigt.

    $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
Ali

Sie können Python verwenden, um Dinge zu vereinfachen (funktioniert auf allen Windows-Versionen und allen anderen Plattformen):

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
Ruben Kelevra

So erstellen Sie eine identische Ausgabe zu winver.exe in PowerShell v5 unter Windows 10 1809:

$Version = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\'
"Version $($Version.ReleaseId) (OS Build $($Version.CurrentBuildNumber).$($Version.UBR))"
0
James Russell

Mit Windows Powershell können Sie die benötigten Daten auf folgende Weise abrufen

Bildbeschriftung:

(Get-WmiObject -class Win32_OperatingSystem).Caption

ReleaseId:

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

ausführung:

(Get-CimInstance Win32_OperatingSystem).version
0
Dan Steve