Це справді довга нитка, і, мабуть, тому, що відповіді, хоч і правильні, не вирішують принципового питання. Я натрапив на цей сайт: Версії та збірки номерів які дали чіткий огляд того, що є у світі Microsoft Windows.
Оскільки мені цікаво знати, з якими саме ОС Windows я маю справу, я залишив осторонь всю версію веселки і замість цього зосередився на 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
Примітка. Як ви бачите, я використав це вище лише для серверних систем, однак це може бути легко застосовано до робочих станцій або навіть розумно розширено для підтримки обох ..., але це я залишу вам.
Насолоджуйтесь і отримуйте задоволення!