2015-06-08 100 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属性。