2015-06-08 101 views
1

我需要在PowerShell中創建一個驗證OS版本(Pro,Enterprise,Home等)的腳本。我發現了許多關於如何使用操作系統版本(Vista,7,8,8.1等)的ID號進行驗證的信息,但是我找不到有關版本代碼的任何信息。我的問題是:如何獲取Windows版本?

  1. 是否有Windows版本的代碼?
  2. 如果沒有代碼,並且唯一的方法是Get-WmiObject -Class Win32_OperatingSystem | % Caption,如何格式化此選項以在任何Windows操作系統上選擇版本?
  3. 是否有其他方法可以做到這一點?

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724833(v=vs.85).aspx

回答

6

即信息是在Win32_OperatingSystem類的OperatingSystemSKU屬性編碼:

Value Meaning 
----- ------- 
    0 Undefined 
    1 Ultimate Edition 
    2 Home Basic Edition 
    3 Home Premium Edition 
    4 Enterprise Edition 
    5 Home Basic N Edition 
    6 Business Edition 
    7 Standard Server Edition 
    8 Datacenter Server Edition 
    9 Small Business Server Edition 
    10 Enterprise Server Edition 
    11 Starter Edition 
    12 Datacenter Server Core Edition 
    13 Standard Server Core Edition 
    14 Enterprise Server Core Edition 
    15 Enterprise Server Edition for Itanium-Based Systems 
    16 Business N Edition 
    17 Web Server Edition 
    18 Cluster Server Edition 
    19 Home Server Edition 
    20 Storage Express Server Edition 
    21 Storage Standard Server Edition 
    22 Storage Workgroup Server Edition 
    23 Storage Enterprise Server Edition 
    24 Server For Small Business Edition 
    25 Small Business Server Premium Edition 
    29 Web Server, Server Core 
    39 Datacenter Edition without Hyper-V, Server Core 
    40 Standard Edition without Hyper-V, Server Core 
    41 Enterprise Edition without Hyper-V, Server Core 
    42 Hyper-V Server

把上面的列表中一個hashtable爲整數值映射到所述描述:

$editions = @{ 
    0 = 'Undefined' 
    1 = 'Ultimate Edition' 
    2 = 'Home Basic Edition' 
    ... 
    41 = 'Enterprise Edition without Hyper-V, Server Core' 
    42 = 'Hyper-V Server' 
} 

$sku = (Get-WmiObject Win32_OperatingSystem).OperatingSystemSKU 

'Edition is {0}.' -f $editions[$sku] 

但是請注意,OperatingSystemSKU在Server 2003及更早版本上不可用。在這些系統上,您必須檢查Caption和/或OSProductSuite屬性。