Libraries/OS.WindowsServer/OS.WindowsServer.psm1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
<#
.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-EnterFunction } Process { switch ($PSCmdlet.ParameterSetName) { 'ONLINE' { $CurrentVersion = Get-OSVersion -Online $CurrentBuild = Get-OSKernelVersion -Online $releaseId = OS.WinNT\Get-OSReleaseId -Online break } 'ROOT' { $CurrentVersion = Get-OSVersion -Root $Root $CurrentBuild = Get-OSKernelVersion -Root $Root $releaseId = OS.WinNT\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-LeaveFunction } } |