Functions/Public/Get-WindowsVersion.ps1
|
function Get-WindowsVersion { <# .SYNOPSIS Converts a Windows OS version string to a friendly Windows version name. .DESCRIPTION The Get-WindowsVersion function takes a Windows version string (e.g., "10.0.22000") and returns the friendly name (e.g., "Windows 11"). Useful for device inventory and reporting scenarios. .PARAMETER OSVersion The OS version string to convert. Can be in format "10.0.22000" or "10.0.22000.1234". .PARAMETER IncludeBuild If specified, includes the build number in the output (e.g., "Windows 11 (22000)"). .INPUTS System.String. You can pipe version strings to Get-WindowsVersion. .OUTPUTS System.String. The friendly Windows version name. .EXAMPLE Get-WindowsVersion -OSVersion "10.0.22000" Returns: "Windows 11" .EXAMPLE Get-WindowsVersion -OSVersion "10.0.19045" Returns: "Windows 10" .EXAMPLE "10.0.22621" | Get-WindowsVersion -IncludeBuild Returns: "Windows 11 (22621)" .EXAMPLE Get-CimInstance Win32_OperatingSystem | Select-Object -ExpandProperty Version | Get-WindowsVersion Gets the friendly name for the current Windows version. .NOTES Author: Sune Alexandersen Narud Version: 1.0.0 Date: February 2026 Build Number Reference: - Windows 11: 22000+ - Windows 10: 10240-19045 - Windows 8.1: 6.3.x - Windows 8: 6.2.x - Windows 7: 6.1.x .LINK https://docs.microsoft.com/en-us/windows/release-health/release-information #> [CmdletBinding()] [OutputType([string])] param ( [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)] [ValidateNotNullOrEmpty()] [string]$OSVersion, [Parameter()] [switch]$IncludeBuild ) process { # Extract numeric parts using regex if ($OSVersion -notmatch '(\d+)\.(\d+)\.(\d+)') { return $OSVersion } $versionParts = $OSVersion -split '\.' $majorVersion = [int]$versionParts[0] $minorVersion = [int]$versionParts[1] $buildNumber = [int]$versionParts[2] # Determine the Windows version $windowsName = switch ("$majorVersion.$minorVersion") { "10.0" { if ($buildNumber -ge 22000) { "Windows 11" } elseif ($buildNumber -ge 10240) { "Windows 10" } else { "Windows 10 Preview" } } "6.3" { "Windows 8.1" } "6.2" { "Windows 8" } "6.1" { "Windows 7" } "6.0" { "Windows Vista" } "5.2" { "Windows Server 2003 / XP x64" } "5.1" { "Windows XP" } "5.0" { "Windows 2000" } default { "Unknown Windows Version ($OSVersion)" } } if ($IncludeBuild -and $buildNumber) { return "$windowsName ($buildNumber)" } return $windowsName } } |