Solved

Query Serial, Model, Express numbers on a Dell computers

Posted on 2009-04-06
12
701 Views
Last Modified: 2013-12-25
I am building an inventory management system and need to query serial, model, express codes on all the Dell Desktop and Laptops we have in inventory. The code I posted will give me the serial number, but I'm not sure to grab the Model and Express code.

'

on error resume next

strComputer=InputBox ("Enter the computer name of the server you'd like to query for 
 

Service Tag")

Set objWMIservice = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

set colitems = objWMIservice.ExecQuery("Select * from Win32_BIOS",,48)

For each objitem in colitems

      Wscript.echo "Dell Service Tag: " & objitem.serialnumber

Next

'

Open in new window

serial-number-txt.txt
0
Comment
Question by:UDDevHelp
  • 6
  • 4
12 Comments
 
LVL 10

Expert Comment

by:borgunit
ID: 24080004
0
 
LVL 14

Accepted Solution

by:
yehudaha earned 500 total points
ID: 24083851
try this

the express function from post in techrepublic
strComputer = InputBox ("Enter the computer name of the server you'd like to query for Service Tag")

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)

For Each objItem in colItems

strSerial = objItem.SerialNumber

Next
 
 
 

WScript.Echo "Your Serial: " & strSerial

Wscript.Echo "Express code: " & Base2Base(strSerial, 36, 10)

WScript.Echo "Model :" & model(strComputer)
 

Function model(strComputer)

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48) 

For Each objItem in colItems

model = objItem.Model 

next

End Function
 

Function Base2Base(InputNumber,InputBase,OutputBase)

Dim J, K, DecimalValue, X, MaxBase, InputNumberLength

Dim NumericBaseData, OutputValue

NumericBaseData = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

MaxBase = Len(NumericBaseData)

if (InputBase > MaxBase) OR (OutputBase > MaxBase) then

Base2Base = "N/A"

Exit Function

end if

'Convert InputNumber to Base 10

InputNumberLength = Len(InputNumber)

DecimalValue = 0

for J = 1 to InputNumberLength

for K = 1 to InputBase

if mid(InputNumber, J, 1) = mid(NumericBaseData, K, 1) then

DecimalValue = DecimalValue+int((K-1)*(InputBase^(InputNumberLength-J))+.5)

end if

next

next

'Convert the Base 10 value (DecimalValue) to the desired output base

OutputValue = ""

while DecimalValue > 0

X = int(((DecimalValue/OutputBase)-int(DecimalValue/OutputBase))*OutputBase+1.5)

OutputValue = mid(NumericBaseData, X, 1)+OutputValue

DecimalValue = int(DecimalValue/OutputBase)

Wend

Base2Base = OutputValue

Exit Function

End Function

Open in new window

0
 

Author Comment

by:UDDevHelp
ID: 24188730
this script doesnt run...
0
 
LVL 14

Expert Comment

by:yehudaha
ID: 24190876
you saved it as a vbs file ?

error message popup ?
0
 

Author Comment

by:UDDevHelp
ID: 24193986
Works!! I saved as .vbs before, maybe I messed up somewhere! Thank you so much!
0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 

Author Closing Comment

by:UDDevHelp
ID: 31567030
This is a life and time saver! Thank you so much!
0
 
LVL 14

Expert Comment

by:yehudaha
ID: 24194025
no problem
thanks for the grade
0
 

Author Comment

by:UDDevHelp
ID: 24194545
We further expanded upon this script so users can just run it without having to know their Hostname. Also, it prompts users to enter in their email address, so the results will get emailed directly to the person collecting Inventory!

Try it out!

Make sure you change the Email server SMTP settings and the "to" email address.
'strComputer = InputBox ("Enter your hostname")
 

	Dim WSHShell

	Dim objNTInfo

	Dim GetComputerName
 

	Set objNTInfo = CreateObject("WinNTSystemInfo")

	strComputer = lcase(objNTInfo.ComputerName)
 

strMyEmailAddr = InputBox("Please enter in your email address")
 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)

For Each objItem in colItems

strSerial = objItem.SerialNumber

Next

 

 

 

'WScript.Echo "Your Serial: " & strSerial

'Wscript.Echo "Express code: " & Base2Base(strSerial, 36, 10)

'WScript.Echo "Model :" & model(strComputer)

MsgBox("Thank You!")
 

Set objMessage = CreateObject("CDO.Message")

objMessage.Subject = "Inventory Info"

objMessage.From = strMyEmailAddr

objMessage.To = "email@yourdomain.com"

objMessage.TextBody = "Your Serial: " & strSerial & vbCrLf & "Express code: " & Base2Base(strSerial, 36, 10) &  vbCrLf & "Model :" & model(strComputer)
 
 

'==This section provides the configuration information for the remote SMTP server.

'==Normally you will only change the server name or IP.
 

objMessage.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
 

'Name or IP of Remote SMTP Server

objMessage.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.yourEmailServer.com"
 

'Server port (typically 25)

objMessage.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
 

objMessage.Configuration.Fields.Update
 

'==End remote SMTP server configuration section==
 

objMessage.Send
 

 

Function model(strComputer)

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48) 

For Each objItem in colItems

model = objItem.Model 

next

End Function

 

Function Base2Base(InputNumber,InputBase,OutputBase)

Dim J, K, DecimalValue, X, MaxBase, InputNumberLength

Dim NumericBaseData, OutputValue

NumericBaseData = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

MaxBase = Len(NumericBaseData)

if (InputBase > MaxBase) OR (OutputBase > MaxBase) then

Base2Base = "N/A"

Exit Function

end if

'Convert InputNumber to Base 10

InputNumberLength = Len(InputNumber)

DecimalValue = 0

for J = 1 to InputNumberLength

for K = 1 to InputBase

if mid(InputNumber, J, 1) = mid(NumericBaseData, K, 1) then

DecimalValue = DecimalValue+int((K-1)*(InputBase^(InputNumberLength-J))+.5)

end if

next

next

'Convert the Base 10 value (DecimalValue) to the desired output base

OutputValue = ""

while DecimalValue > 0

X = int(((DecimalValue/OutputBase)-int(DecimalValue/OutputBase))*OutputBase+1.5)

OutputValue = mid(NumericBaseData, X, 1)+OutputValue

DecimalValue = int(DecimalValue/OutputBase)

Wend

Base2Base = OutputValue

Exit Function

End Function

Open in new window

0
 
LVL 14

Expert Comment

by:yehudaha
ID: 24194575
thanks for sharing
0
 

Author Comment

by:UDDevHelp
ID: 24194593
Not a problem, that's what it's all about!
0
 

Author Comment

by:UDDevHelp
ID: 24280294
Anyone have any idea how to get the IP address of the person running this script?
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

In this article we have discussed the manual scenarios to recover data from Windows 10 through some backup and recovery tools which are offered by it.
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now