Este é realmente um tópico longo, e provavelmente porque as respostas, embora corretas, não estão resolvendo a questão fundamental. Encontrei este site: Versão e números de compilação, que forneciam uma visão clara do que é o que no mundo do Microsoft Windows.
Como meu interesse é saber com qual sistema operacional exato do Windows estou lidando, deixei de lado a versão arco-íris inteira e, em vez disso, foquei no BuildNumber. O número da compilação pode ser alcançado por:
([Environment]::OSVersion.Version).Build
ou pela:
(Get-CimInstance Win32_OperatingSystem).buildNumber
a escolha é sua, da maneira que você preferir. Então, a partir daí, eu poderia fazer algo como:
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
Nota: Como você pode ver, usei o descrito acima apenas para sistemas de servidor, no entanto, ele pode ser facilmente aplicado a estações de trabalho ou mesmo estendido de maneira inteligente para suportar os dois ... mas deixarei isso para você.
Aproveite e divirta-se!