All information relative to the Operating System installed can be retrieved from the registry and more especially in the following key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
.
Until Windows 8.1, the entry CurrentVersion could be used to retrieve the Windows OS version:
.
But, this entry is deprecated since Windows 10, and Microsoft recommends to use the following entries:
- CurrentMajorVersionNumber (exists only on Win 10)
- CurrentBuild
- ProductName
- ReleaseId (exists only on Win 10)
.
This PowerShell script does the following:
- Check if the OS is Windows 7 (using the registry CurrentVersion)
- If not Windows 7, check if the OS is Windows 10 (using the registry CurrentMajorVersionNumber)
## Check OS Write-Host "----- Checking OS -----" $CurVer = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").CurrentVersion If ($CurVer -eq "6.1") { Write-Host "CurrentVersion registry value is 6.1, OS is Windows 7" } Else { Write-Host "CurrentVersion registry value is not 6.1, OS is not Windows 7" $MajVer = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").CurrentMajorVersionNumber If (($MajVer -eq $null) -or ($MajVer.Length -eq 0)) { Write-Host "CurrentMajorVersionNumber registry entry does not exist, OS is not Windows 10" } Else { If ($MajVer -eq 10) { $CurBuild = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").CurrentBuild $WinName = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ProductName $RelID = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId Write-Host "CurrentMajorVersionNumber registry entry is 10, OS is Windows 10" Write-Host "Current Build is $CurBuild" Write-Host "Product Name is $WinName" Write-Host "Release ID is $RelID" } Else { Write-Host "CurrentMajorVersionNumber registry entry exists but is not equal to 10, OS is unknow at the time of the creation of this script..." } } }