Это действительно длинная цепочка, и, вероятно, потому, что ответы, хотя и верные, не решают фундаментального вопроса. Я наткнулся на этот сайт: Номера версий и сборок который дает четкое представление о том, что есть что в мире Microsoft Windows.
Поскольку меня интересует, с какой именно ОС Windows я имею дело, я оставил в стороне всю версию Rainbow и вместо этого сосредоточился на BuildNumber. Номер сборки может быть получен:
([Environment]::OSVersion.Version).Build
или по:
(Get-CimInstance Win32_OperatingSystem).buildNumber
выбор остается за вами, какой бы вы ни предпочли. Итак, оттуда я мог сделать что-то вроде:
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
Примечание. Как вы можете видеть, я использовал вышеуказанное только для серверных систем, однако его можно легко применить на рабочих станциях или даже разумно расширить для поддержки обоих ... но я оставлю это вам.
Наслаждайтесь и получайте удовольствие!