2016-05-05 1 views
-1

je suis la création d'un VBScript pour obtenir des informations du système d'exploitation (postes de travail et serveurs), à ce point, je besoin d'une fonction qui me donne l'OS Edition uniquement, par exempleVBScript OS Prop

WScript.Echo "Operating System Edition: " Standard 
WScript.Echo "Operating System Edition: " Enterprise 
WScript.Echo "Operating System Edition: " Web 
WScript.Echo "Operating System Edition: " Pro 
WScript.Echo "Operating System Edition: " Ultimate 

et ainsi de suite.

J'essaie d'obtenir cette information en utilisant le WMI Class Win32_OperatingSystem, mais aucune propriété disponible qui montre cette information.

Des idées?

+1

Copie possible de [Un vbscript pour trouver le nom de la version de Windows et le service pack] (http://stackoverflow.com/questions/4317794/a-vbscript-to-find-windows-version-name-and-the-service- pack) –

+0

SKU n'est pas version + servicepack .. –

Répondre

1

Il existe une propriété int appelée OpertingSystemSKU dans Win32_OperatingSystem. Vous devriez convertir cet int en édition OS. Une liste mise à jour des valeurs peut être trouvée au GetProductInfo @ MSDN.

Voici une fonction de conversion. Je viens d'utiliser les noms constants de sorte que vous pouvez le nettoyer:

function Get-OSSKU ([int]$int) { 

    $SKU = @{ 
     0x00000006 = 'PRODUCT_BUSINESS' 
     0x00000010 = 'PRODUCT_BUSINESS_N' 
     0x00000012 = 'PRODUCT_CLUSTER_SERVER' 
     0x00000040 = 'PRODUCT_CLUSTER_SERVER_V' 
     0x00000065 = 'PRODUCT_CORE' 
     0x00000063 = 'PRODUCT_CORE_COUNTRYSPECIFIC' 
     0x00000062 = 'PRODUCT_CORE_N' 
     0x00000064 = 'PRODUCT_CORE_SINGLELANGUAGE' 
     0x00000050 = 'PRODUCT_DATACENTER_EVALUATION_SERVER' 
     0x00000008 = 'PRODUCT_DATACENTER_SERVER' 
     0x0000000C = 'PRODUCT_DATACENTER_SERVER_CORE' 
     0x00000027 = 'PRODUCT_DATACENTER_SERVER_CORE_V' 
     0x00000025 = 'PRODUCT_DATACENTER_SERVER_V' 
     0x00000079 = 'PRODUCT_EDUCATION' 
     0x0000007A = 'PRODUCT_EDUCATION_N' 
     0x00000004 = 'PRODUCT_ENTERPRISE' 
     0x00000046 = 'PRODUCT_ENTERPRISE_E' 
     0x00000048 = 'PRODUCT_ENTERPRISE_EVALUATION' 
     0x0000001B = 'PRODUCT_ENTERPRISE_N' 
     0x00000054 = 'PRODUCT_ENTERPRISE_N_EVALUATION' 
     0x0000007D = 'PRODUCT_ENTERPRISE_S' 
     0x00000081 = 'PRODUCT_ENTERPRISE_S_EVALUATION' 
     0x0000007E = 'PRODUCT_ENTERPRISE_S_N' 
     0x00000082 = 'PRODUCT_ENTERPRISE_S_N_EVALUATION' 
     0x0000000A = 'PRODUCT_ENTERPRISE_SERVER' 
     0x0000000E = 'PRODUCT_ENTERPRISE_SERVER_CORE' 
     0x00000029 = 'PRODUCT_ENTERPRISE_SERVER_CORE_V' 
     0x0000000F = 'PRODUCT_ENTERPRISE_SERVER_IA64' 
     0x00000026 = 'PRODUCT_ENTERPRISE_SERVER_V' 
     0x0000003C = 'PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL' 
     0x0000003E = 'PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC' 
     0x0000003B = 'PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT' 
     0x0000003D = 'PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC' 
     0x00000002 = 'PRODUCT_HOME_BASIC' 
     0x00000043 = 'PRODUCT_HOME_BASIC_E' 
     0x00000005 = 'PRODUCT_HOME_BASIC_N' 
     0x00000003 = 'PRODUCT_HOME_PREMIUM' 
     0x00000044 = 'PRODUCT_HOME_PREMIUM_E' 
     0x0000001A = 'PRODUCT_HOME_PREMIUM_N' 
     0x00000022 = 'PRODUCT_HOME_PREMIUM_SERVER' 
     0x00000013 = 'PRODUCT_HOME_SERVER' 
     0x0000002A = 'PRODUCT_HYPERV' 
     0x0000007B = 'PRODUCT_IOTUAP' 
     0x00000083 = 'PRODUCT_IOTUAPCOMMERCIAL' 
     0x0000001E = 'PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT' 
     0x00000020 = 'PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING' 
     0x0000001F = 'PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY' 
     0x00000068 = 'PRODUCT_MOBILE_CORE' 
     0x00000085 = 'PRODUCT_MOBILE_ENTERPRISE' 
     0x0000004D = 'PRODUCT_MULTIPOINT_PREMIUM_SERVER' 
     0x0000004C = 'PRODUCT_MULTIPOINT_STANDARD_SERVER' 
     0x00000030 = 'PRODUCT_PROFESSIONAL' 
     0x00000045 = 'PRODUCT_PROFESSIONAL_E' 
     0x00000031 = 'PRODUCT_PROFESSIONAL_N' 
     0x00000067 = 'PRODUCT_PROFESSIONAL_WMC' 
     0x00000032 = 'PRODUCT_SB_SOLUTION_SERVER' 
     0x00000036 = 'PRODUCT_SB_SOLUTION_SERVER_EM' 
     0x00000033 = 'PRODUCT_SERVER_FOR_SB_SOLUTIONS' 
     0x00000037 = 'PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM' 
     0x00000018 = 'PRODUCT_SERVER_FOR_SMALLBUSINESS' 
     0x00000023 = 'PRODUCT_SERVER_FOR_SMALLBUSINESS_V' 
     0x00000021 = 'PRODUCT_SERVER_FOUNDATION' 
     0x00000009 = 'PRODUCT_SMALLBUSINESS_SERVER' 
     0x00000019 = 'PRODUCT_SMALLBUSINESS_SERVER_PREMIUM' 
     0x0000003F = 'PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE' 
     0x00000038 = 'PRODUCT_SOLUTION_EMBEDDEDSERVER' 
     0x0000004F = 'PRODUCT_STANDARD_EVALUATION_SERVER' 
     0x00000007 = 'PRODUCT_STANDARD_SERVER' 
     0x0000000D = 'PRODUCT_STANDARD_SERVER_CORE' 
     0x00000028 = 'PRODUCT_STANDARD_SERVER_CORE_V' 
     0x00000024 = 'PRODUCT_STANDARD_SERVER_V' 
     0x00000034 = 'PRODUCT_STANDARD_SERVER_SOLUTIONS' 
     0x00000035 = 'PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE' 
     0x0000000B = 'PRODUCT_STARTER' 
     0x00000042 = 'PRODUCT_STARTER_E' 
     0x0000002F = 'PRODUCT_STARTER_N' 
     0x00000017 = 'PRODUCT_STORAGE_ENTERPRISE_SERVER' 
     0x0000002E = 'PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE' 
     0x00000014 = 'PRODUCT_STORAGE_EXPRESS_SERVER' 
     0x0000002B = 'PRODUCT_STORAGE_EXPRESS_SERVER_CORE' 
     0x00000060 = 'PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER' 
     0x00000015 = 'PRODUCT_STORAGE_STANDARD_SERVER' 
     0x0000002C = 'PRODUCT_STORAGE_STANDARD_SERVER_CORE' 
     0x0000005F = 'PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER' 
     0x00000016 = 'PRODUCT_STORAGE_WORKGROUP_SERVER' 
     0x0000002D = 'PRODUCT_STORAGE_WORKGROUP_SERVER_CORE' 
     0x00000001 = 'PRODUCT_ULTIMATE' 
     0x00000047 = 'PRODUCT_ULTIMATE_E' 
     0x0000001C = 'PRODUCT_ULTIMATE_N' 
     0x00000000 = 'PRODUCT_UNDEFINED' 
     0x00000011 = 'PRODUCT_WEB_SERVER' 
     0x0000001D = 'PRODUCT_WEB_SERVER_CORE' 
    } 

    $sku[$int] 

} 

Démo:

$osSKU = Get-WmiObject Win32_OperatingSystem | Select-Object -ExpandProperty OperatingSystemSKU 

"Computer has SKU $osSKU which is '$(Get-OSSKU $osSKU)'" 
Computer has SKU 48 which is 'PRODUCT_PROFESSIONAL' 

MISE À JOUR: Comment utiliser différentes solutions pour différents OSVersions:

$os = Get-WmiObject Win32_OperatingSystem 

switch -Wildcard ($os.Version) { 
    "5.*" { 
     #2003/2003 R2 
     $_.Caption.Split(",")[-1].Trim() 
    } 
    "6.*" { 
     #2008+ 
     Get-OSSKU $os.OperatingSystemSKU 
    } 
    "10.*" { 
     Get-OSSKU $os.OperatingSystemSKU 
    } 
    default { 
     #Fallback. Pre-2003 OS. Don't know how to handle 
     $os.Caption 
    } 
} 
+0

La question a été taguée avec PowerShell donc c'est ce que j'ai écrit, mais si vous avez besoin de VBScript, vous pouvez simplement le convertir. Tout est disponible là aussi. –

+0

C'est exactement ce que je cherchais ... Merci :) – JPKI

+0

Je viens de découvrir que le "OperatingSystemSKU" n'existe pas Existe dans Windows 2003, comment obtenir les mêmes informations sur Windows 2003? N'importe quelle entrée Reg? – JPKI