Hoe vind ik welke Windows-versie ik gebruik?
Ik gebruik PowerShell 2.0 en heb geprobeerd:
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
Hoe doe ik dit?
Antwoord 1, autoriteit 100%
Aangezien je toegang hebt tot de .NET-bibliotheek, zou je ook toegang kunnen krijgen tot de OSVersion
eigenschap van de System.Environment
klasse om deze informatie te verkrijgen. Voor het versienummer is er de eigenschap Version
.
Bijvoorbeeld
PS C:\> [System.Environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
6 1 7601 65536
Details van Windows-versies zijn te vinden hier.
Antwoord 2, autoriteit 54%
-
Om het Windows-versienummer te krijgen, zoals Jeff opmerkt in zijn antwoord, gebruikt u:
[Environment]::OSVersion
Het is vermeldenswaard dat het resultaat van het type
[System.Version]
, dus het is mogelijk om te controleren op bijvoorbeeld Windows 7/Windows Server 2008 R2 en hoger met[Environment]::OSVersion.Version -ge (new-object 'Version' 6,1)
Dit zal u echter niet vertellen of het client of server Windows is, noch de naam van de versie.
-
Gebruik
Win32_OperatingSystem
klasse (altijd één instantie), bijvoorbeeld:(Get-WmiObject -class Win32_OperatingSystem).Caption
zal iets teruggeven als
Microsoft® Windows Server® 2008 Standard
Antwoord 3, autoriteit 39%
Helaas geven de meeste andere antwoorden geen informatie die specifiek is voor Windows 10.
Windows 10 heeft versiesvan zijn eigen: 1507, 1511, 1607, 1703, enz. Dit is wat winver
laat zien.
Powershell:
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId
Command prompt (CMD.EXE):
Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId
Zie ook gerelateerde vraag over superuser.
Zoals andere Windows-versies gebruiken 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-uitgang voor dezelfde opdracht:
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
4, Autoriteit 17%
Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
Retourneren
WindowsProductName WindowsVersion OsHardwareAbstractionLayer
------------------ -------------- --------------------------
Windows 10 Enterprise 1709 10.0.16299.371
Antwoord 5, autoriteit 7%
Sinds PowerShell 5:
Get-ComputerInfo
Get-ComputerInfo -Property Windows*
Ik denk dat dit commando de 1001 verschillende manieren die tot nu toe zijn ontdekt om systeeminformatie te verzamelen ongeveer probeert…
Antwoord 6, autoriteit 4%
Als u onderscheid wilt maken tussen Windows 8.1 (6.3.9600) en Windows 8 (6.2.9200), gebruik dan
(Get-CimInstance Win32_OperatingSystem).Version
om de juiste versie te krijgen. [Environment]::OSVersion
werkt niet goed in Windows 8.1 (het geeft een Windows 8-versie terug).
Antwoord 7, autoriteit 4%
Ik verfijn een van de antwoorden
Ik heb deze vraag bereikt terwijl ik probeerde de uitvoer van winver.exe te matchen:
Version 1607 (OS Build 14393.351)
Ik heb de build-string kunnen extraheren met:
,((Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name BuildLabEx).BuildLabEx -split '\.') | % { $_[0..1] -join '.' }
Resultaat: 14393.351
Bijgewerkt: hier is een enigszins vereenvoudigd script met regex
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").BuildLabEx -match '^[0-9]+\.[0-9]+' | % { $matches.Values }
8, Autoriteit 3%
Ik nam de scripts hierboven en tweaked ze een beetje om hiermee met deze te komen:
$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
Om een resultaat als volgt te krijgen:
Microsoft Windows 10 Home 64-bit Versie: 1709 Build: 16299.431 @ {WindowsInstallDateFromRegistry = 18-01-01 2:29:11 AM}
HINT: Ik zou een hand op prijs stellen die de voorvoegseltekst uit de installatiedatum zou strippen, zodat ik het kan vervangen door een meer leesbare koptekst.
9, Autoriteit 2%
om identieke uitvoer te produceren naar Winver.exe in PowerShell V5 op Windows 10 1809:
$Version = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\'
"Version $($Version.ReleaseId) (OS Build $($Version.CurrentBuildNumber).$($Version.UBR))"
10, Autoriteit 2%
Gebruik:
Get-WmiObject -class win32_operatingsystem -computer computername | Select-Object Caption
11, Autoriteit 2%
Als u probeert informatie te ontcijferen, plaatst MS op hun patching-site, zoals https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
U hebt een combo nodig, zoals:
$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
12
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
}
Voor weergave (beide versies):
"{0} ({1})" -f $windows.Caption, $windows.Version
Antwoord 13
Dit is echt een lange draad, en waarschijnlijk omdat de antwoorden, hoewel correct, de fundamentele vraag niet oplossen.
Ik kwam deze site tegen: Versie & Build-nummersdie een duidelijk overzicht gaven van wat er in de wereld van Microsoft Windows is.
Omdat het mijn interesse is om te weten met welk Windows-besturingssysteem ik te maken heb, heb ik de hele versie-regenboog weggelaten en in plaats daarvan gefocust op het buildnummer.
Het buildnummer kan worden bereikt door:
([Environment]::OSVersion.Version).Build
of door:
(Get-CimInstance Win32_OperatingSystem).buildNumber
de keuze is aan jou, hoe je het ook wilt.
Dus van daaruit zou ik iets kunnen doen in de trant van:
switch ((Get-CimInstance Win32_OperatingSystem).BuildNumber)
{
6001 {$OS = "W2K8"}
7600 {$OS = "W2K8R2"}
7601 {$OS = "W2K8R2SP1"}
9200 {$OS = "W2K12"}
9600 {$OS = "W2K12R2"}
14393 {$OS = "W2K16v1607"}
16229 {$OS = "W2K16v1709"}
default { $OS = "Not Listed"}
}
Write-Host "Server system: $OS" -foregroundcolor Green
Opmerking: zoals u kunt zien, gebruikte ik het bovenstaande alleen voor serversystemen, maar het kan eenvoudig worden toegepast op werkstations of zelfs slim uitgebreid tot ondersteuning van beide … maar ik laat dat aan u.
Geniet van, & amp; Veel plezier!
14
Moet zo eenvoudig zijn:
Get-ComputerInfo | select windowsversion
15
(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name BuildLabEx).BuildLabEx
16
Hiermee geeft u het volledige en correct (hetzelfde versienummer dat u vindt wanneer u WINVER.EXE) Versie van Windows (inclusief Revision / Build Number) op afstand, in tegenstelling tot alle andere oplossingen (getest op Windows & NBSP; 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"
}
}
17
Ik heb veel gezocht om de exacte versie te achterhalen, omdat de WSUS-server de verkeerde versie toont.
Het beste is om een revisie te krijgen van de UBR-registersleutel.
$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
Antwoord 18
Met Windows Powershell is het mogelijk om op de volgende manier de benodigde gegevens te verkrijgen
Bijschrift:
(Get-WmiObject -class Win32_OperatingSystem).Caption
Release-ID:
(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
versie:
(Get-CimInstance Win32_OperatingSystem).version
Antwoord 19
[opgelost]
#copy all the code below:
#save file as .ps1 run and see the magic
Get-WmiObject -Class Win32_OperatingSystem | ForEach-Object -MemberName Caption
(Get-CimInstance Win32_OperatingSystem).version
#-------------comment-------------#
#-----finding windows version-----#
$version= (Get-CimInstance Win32_OperatingSystem).version
$length= $version.Length
$index= $version.IndexOf(".")
[int]$windows= $version.Remove($index,$length-2)
$windows
#-----------end------------------#
#-----------comment-----------------#
20
Je zou ook zoiets kunnen gebruiken, door de Osversion.version.major te controleren:
IF ([System.Environment]::OSVersion.Version.Major -ge 10) {Write-Host "Windows 10 or above"}
IF ([System.Environment]::OSVersion.Version.Major -lt 10) {Write-Host "Windows 8.1 or below"}
21
HKLM \ SOFTWARING \ MICROSOFT \ Windows NT \ CurrentVersion \ Update \ TargetingINFO \ geïnstalleerd \ client.os.rs2.amd64 \ versie
‘Voor Win 10 Client’
HKLM \ SOFTWARING \ Microsoft \ Windows NT \ CurrentVersion \ Update \ TargetingINFO \ installed \ Server.os.amd64 \ versie
‘Voor server OS’
22
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Update\TargetingInfo\Installed\Client.OS.rs2.amd64').version
Op basis van het eerdere antwoord van Tim, is het leuke aan deze specifieke locatie dat het pand al in wat ik een voorkeursindeling zou noemen.
23
$OSVersion = [Version](Get-ItemProperty -Path "$($Env:Windir)\System32\hal.dll" -ErrorAction SilentlyContinue).VersionInfo.FileVersion.Split()[0]
Op Windows 10 Retourneren: 10.0.10586.420
U kunt de variabele vervolgens gebruiken om toegang te krijgen tot eigenschappen voor gedetailleerde vergelijking
$OSVersion.Major equals 10
$OSVersion.Minor equals 0
$OSVersion.Build equals 10586
$OSVersion.Revision equals 420
Bovendien kunt u versies van besturingssystemen vergelijken met behulp van de volgende
If ([Version]$OSVersion -ge [Version]"6.1")
{
#Do Something
}
Antwoord 24
Je kunt python gebruiken om dingen te vereenvoudigen (werkt op alle Windows-versies en alle andere platforms):
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