首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

使用 WMI 腳本偵測電腦機殼類型

     編輯:Java 相關知識

需求背景

透過 WMI (Windows Management Instrumentation) 查詢 Win32_SystemEnclosure 類的 ChassisTypes 屬性,可獲取電腦機殼類型代碼(如筆電、台式機、伺服器等)。

基本查詢腳本

strComputer = "."
Set objWMIService = GetObject("winmgmts:" & _
    "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colChassis = objWMIService.ExecQuery("Select * from Win32_SystemEnclosure")

For Each objChassis In colChassis
    For Each strChassisType In objChassis.ChassisTypes
        WScript.Echo strChassisType  ' 輸出數字代碼
    Next
Next

輸出為數字(如 10 代表 Notebook),需對照對照表解讀。

完整對照表腳本

strComputer = "."
Set objWMIService = GetObject("winmgmts:" & _
    "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colChassis = objWMIService.ExecQuery("Select * from Win32_SystemEnclosure")

For Each objChassis In colChassis
    For Each strChassisType In objChassis.ChassisTypes
        Select Case strChassisType
            Case 1  : WScript.Echo "Other"
            Case 2  : WScript.Echo "Unknown"
            Case 3  : WScript.Echo "Desktop"
            Case 4  : WScript.Echo "Low Profile Desktop"
            Case 5  : WScript.Echo "Pizza Box"
            Case 6  : WScript.Echo "Mini Tower"
            Case 7  : WScript.Echo "Tower"
            Case 8  : WScript.Echo "Portable"
            Case 9  : WScript.Echo "Laptop"
            Case 10 : WScript.Echo "Notebook"
            Case 11 : WScript.Echo "Handheld"
            Case 12 : WScript.Echo "Docking Station"
            Case 13 : WScript.Echo "All-in-One"
            Case 14 : WScript.Echo "Sub-Notebook"
            Case 15 : WScript.Echo "Space Saving"
            Case 16 : WScript.Echo "Lunch Box"
            Case 17 : WScript.Echo "Main System Chassis"
            Case 18 : WScript.Echo "Expansion Chassis"
            Case 19 : WScript.Echo "Sub-Chassis"
            Case 20 : WScript.Echo "Bus Expansion Chassis"
            Case 21 : WScript.Echo "Peripheral Chassis"
            Case 22 : WScript.Echo "Storage Chassis"
            Case 23 : WScript.Echo "Rack Mount Chassis"
            Case 24 : WScript.Echo "Sealed-Case PC"
            Case Else: WScript.Echo "Unknown (" & strChassisType & ")"
        End Select
    Next
Next

關鍵說明

  • ChassisTypes 為數組,單台電腦可能返回多個值(如底座+筆電)。
  • 代碼定義參考 MSDN Win32_SystemEnclosure。
  • 「Portable/Laptop/Notebook」在廠商實現上可能有重疊,以實際輸出為準。

應用場景

  1. 資產管理系統自動採集硬體類型。
  2. 部署腳本根據機型安裝對應驅動/策略。
  3. 庫存腳本區分筆電與桌機統計數量。

PowerShell 替代方案(更現代)

Get-CimInstance Win32_SystemEnclosure | 
Select-Object -ExpandProperty ChassisTypes | 
ForEach-Object {
    switch ($_){
        3 {"Desktop"}; 9 {"Laptop"}; 10 {"Notebook"}; 
        default {"Type $_"}
    }
}

總結

WMI 提供標準化硬體查詢接口,ChassisTypes 雖為數字代碼,但配合對照表即可輕鬆識別設備形態。VBScript 適合舊系統維護,新專案建議使用 PowerShell 或 C# (System.Management)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved