Libraries/Lib.Windows.WinNT.Windows.WindowsServer/Lib.Windows.WinNT.Windows.WindowsServer.psm1
<#
.SYNOPSIS Get the release ID of an OS .DESCRIPTION Windows Server (since Windows 10 / 2016) use the same ReleaseId as Windows Client. But to differentiate Servers from Clients, we will use the old "year" number like "2008", "2012r2" .PARAMETER Online True to specify to fetch information from the running OS .PARAMETER Root The path to the root of an OS. .EXAMPLE Get-OSReleaseId -Online .EXAMPLE Get-OSReleaseId -Root F:\ .NOTES General notes #> function Get-OSReleaseId { [CmdletBinding()][OutputType([String])]Param ( [Parameter(ParameterSetName = 'ONLINE')][switch]$Online, [Parameter(ParameterSetName = 'ROOT')][string]$Root ) Begin { Write-PwShFwOSEnterFunction } Process { switch ($PSCmdlet.ParameterSetName) { 'ONLINE' { $CurrentVersion = Get-OSVersion -Online $CurrentBuild = Get-OSKernelVersion -Online $releaseId = Lib.Windows\Get-OSReleaseId -Online break } 'ROOT' { $CurrentVersion = Get-OSVersion -Root $Root $CurrentBuild = Get-OSKernelVersion -Root $Root $releaseId = Lib.Windows\Get-OSReleaseId -Root $Root break } } switch ($CurrentVersion) { "5.0" { $releaseId = "2000" } "5.1" { $releaseId = "2003" } "5.2" { $releaseId = "2003r2" } "6.0" { switch ($CurrentBuild) { "6000" { $releaseId = "2008" break } "6001" { $releaseId = "2008sp1" break } "6002" { $releaseId = "2008sp2" break } } } "6.1" { switch ($CurrentBuild) { "7600" { $releaseId = "2008r2" break } "7001" { $releaseId = "2008r2sp1" break } } } "6.2" { switch ($CurrentBuild) { "9200" { $releaseId = "2012" break } } } "6.3" { switch ($CurrentBuild) { # * Windows 8 "9300" { $releaseId = "2012r2" break } # * Windows 8.1 "9600" { $releaseId = "2012r2sp1" break } # * Windows 10 # "10240", etc... default { switch ($ReleaseId) { '1607' { $releaseId = "2016" } '1809' { $releaseId = "2019" } '2009' { $releaseId = "2022" } } break } } } } # return $Distrib + "." + $ReleaseId.replace('.','') return "$ReleaseId" } End { Write-PwShFwOSLeaveFunction } } |