Jump to content

Detect PC Type


Recommended Posts

Is there a way to detect the type or model of p.c the script is running on. I have systems shat run inventories on p.c`s and can do this but do not know how. I am guessing the system has these values but not in the registry ....

I am looking to identify if my script is running on a laptop or a desktop p.c (Might beable to do this with a .vbs I have to detect a battery)

The next thing is to detect if I am on an IBM / Packard Bell / Compaq / HP and even the model number if that is possible.

I know it can be done as the Landesk program can do this but not sure how it achieves it.

This will allow me to take out a lot of user selections and automate it thru script decisions - I have also looked at 3rd party command line utilities or scripts but not found anything...

Any help appreciated

Link to comment
Share on other sites

using WMI Information you can pull manufacture and model.

; Generated by AutoIt Scriptomatic
 
 $wbemFlagReturnImmediately = 0x10
 $wbemFlagForwardOnly = 0x20
 $colItems = ""
 $strComputer = "localhost"
 
 $Output=""
 $Output = $Output & "Computer: " & $strComputer  & @CRLF
 $Output = $Output & "==========================================" & @CRLF
 $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
 $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", _
                                           $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
 
 If IsObj($colItems) then
    For $objItem In $colItems
       $Output = $Output & "AdminPasswordStatus: " & $objItem.AdminPasswordStatus & @CRLF
       $Output = $Output & "AutomaticResetBootOption: " & $objItem.AutomaticResetBootOption & @CRLF
       $Output = $Output & "AutomaticResetCapability: " & $objItem.AutomaticResetCapability & @CRLF
       $Output = $Output & "BootOptionOnLimit: " & $objItem.BootOptionOnLimit & @CRLF
       $Output = $Output & "BootOptionOnWatchDog: " & $objItem.BootOptionOnWatchDog & @CRLF
       $Output = $Output & "BootROMSupported: " & $objItem.BootROMSupported & @CRLF
       $Output = $Output & "BootupState: " & $objItem.BootupState & @CRLF
       $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
       $Output = $Output & "ChassisBootupState: " & $objItem.ChassisBootupState & @CRLF
       $Output = $Output & "CreationClassName: " & $objItem.CreationClassName & @CRLF
       $Output = $Output & "CurrentTimeZone: " & $objItem.CurrentTimeZone & @CRLF
       $Output = $Output & "DaylightInEffect: " & $objItem.DaylightInEffect & @CRLF
       $Output = $Output & "Description: " & $objItem.Description & @CRLF
       $Output = $Output & "Domain: " & $objItem.Domain & @CRLF
       $Output = $Output & "DomainRole: " & $objItem.DomainRole & @CRLF
       $Output = $Output & "EnableDaylightSavingsTime: " & $objItem.EnableDaylightSavingsTime & @CRLF
       $Output = $Output & "FrontPanelResetStatus: " & $objItem.FrontPanelResetStatus & @CRLF
       $Output = $Output & "InfraredSupported: " & $objItem.InfraredSupported & @CRLF
       $strInitialLoadInfo = $objItem.InitialLoadInfo(0)
       $Output = $Output & "InitialLoadInfo: " & $strInitialLoadInfo & @CRLF
       $Output = $Output & "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
       $Output = $Output & "KeyboardPasswordStatus: " & $objItem.KeyboardPasswordStatus & @CRLF
       $Output = $Output & "LastLoadInfo: " & $objItem.LastLoadInfo & @CRLF
       $Output = $Output & "Manufacturer: " & $objItem.Manufacturer & @CRLF
       $Output = $Output & "Model: " & $objItem.Model & @CRLF
       $Output = $Output & "Name: " & $objItem.Name & @CRLF
       $Output = $Output & "NameFormat: " & $objItem.NameFormat & @CRLF
       $Output = $Output & "NetworkServerModeEnabled: " & $objItem.NetworkServerModeEnabled & @CRLF
       $Output = $Output & "NumberOfProcessors: " & $objItem.NumberOfProcessors & @CRLF
       $strOEMLogoBitmap = $objItem.OEMLogoBitmap(0)
       $Output = $Output & "OEMLogoBitmap: " & $strOEMLogoBitmap & @CRLF
       $strOEMStringArray = $objItem.OEMStringArray(0)
       $Output = $Output & "OEMStringArray: " & $strOEMStringArray & @CRLF
       $Output = $Output & "PartOfDomain: " & $objItem.PartOfDomain & @CRLF
       $Output = $Output & "PauseAfterReset: " & $objItem.PauseAfterReset & @CRLF
       $strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
       $Output = $Output & "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
       $Output = $Output & "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
       $Output = $Output & "PowerOnPasswordStatus: " & $objItem.PowerOnPasswordStatus & @CRLF
       $Output = $Output & "PowerState: " & $objItem.PowerState & @CRLF
       $Output = $Output & "PowerSupplyState: " & $objItem.PowerSupplyState & @CRLF
       $Output = $Output & "PrimaryOwnerContact: " & $objItem.PrimaryOwnerContact & @CRLF
       $Output = $Output & "PrimaryOwnerName: " & $objItem.PrimaryOwnerName & @CRLF
       $Output = $Output & "ResetCapability: " & $objItem.ResetCapability & @CRLF
       $Output = $Output & "ResetCount: " & $objItem.ResetCount & @CRLF
       $Output = $Output & "ResetLimit: " & $objItem.ResetLimit & @CRLF
       $strRoles = $objItem.Roles(0)
       $Output = $Output & "Roles: " & $strRoles & @CRLF
       $Output = $Output & "Status: " & $objItem.Status & @CRLF
       $strSupportContactDescription = $objItem.SupportContactDescription(0)
       $Output = $Output & "SupportContactDescription: " & $strSupportContactDescription & @CRLF
       $Output = $Output & "SystemStartupDelay: " & $objItem.SystemStartupDelay & @CRLF
       $strSystemStartupOptions = $objItem.SystemStartupOptions(0)
       $Output = $Output & "SystemStartupOptions: " & $strSystemStartupOptions & @CRLF
       $Output = $Output & "SystemStartupSetting: " & $objItem.SystemStartupSetting & @CRLF
       $Output = $Output & "SystemType: " & $objItem.SystemType & @CRLF
       $Output = $Output & "ThermalState: " & $objItem.ThermalState & @CRLF
       $Output = $Output & "TotalPhysicalMemory: " & $objItem.TotalPhysicalMemory & @CRLF
       $Output = $Output & "UserName: " & $objItem.UserName & @CRLF
       $Output = $Output & "WakeUpType: " & $objItem.WakeUpType & @CRLF
       $Output = $Output & "Workgroup: " & $objItem.Workgroup & @CRLF
       if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
       $Output=""
    Next
 Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_ComputerSystem" )
 Endif
 
 
 Func WMIDateStringToDate($dtmDate)
 
     Return (StringMid($dtmDate, 5, 2) & "/" & _
     StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
     & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
 EndFunc

Kerros===============================================================How to learn scripting: Figure out enough to be dangerous, then ask for assistance.

Link to comment
Share on other sites

V. Impressed ....

I need to learn about "ObjGet" and what you can extract - Is there a good guide anywhere to where this information is hidden on the OS and how to know what to call to find it ...

Thanks again ..

Link to comment
Share on other sites

There are a large number of topics on the forum that talk about WMI scripts. I used the Scriptomatic tool written by SvenP, who translated the one MS put out.

You can find Scriptomatic Here

Kerros===============================================================How to learn scripting: Figure out enough to be dangerous, then ask for assistance.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...