Solved

Add WMI Query to Existing VBscript

Posted on 2010-08-27
2
1,136 Views
Last Modified: 2013-11-08
We have an existing logon Vbscript that writes information to each computer's and user's description field in Active Directory and so far it works great.  We have found the need to add a wmi query of each computer's serial number to the script's output as well.

Here is the current code that we are using:

''POPULATES AD WITH USER LOGON INFO IN DESCRIPTION FIELD
 
Set objSysInfo = CreateObject("ADSystemInfo")

unEscapedUserName = Replace(objSysInfo.UserName, "/", "\/")
Set objUser = GetObject("LDAP://" & unEscapedUserName)

Set objUser = GetObject("LDAP://" & Replace(objSysInfo.UserName, "/", "\/"))
Set objComputer = GetObject("LDAP://" & objSysInfo.ComputerName)

 
strMessage1 = " Authenticated on: " & objComputer.CN & " at " & Now & ".  MAC: " & MACAddresses(".")
strMessage2 = " MAC: " & MACAddresses(".") & "." & " Authenticated by: " & objUser.CN & " at " & Now & "."

objUser.Description = strMessage1
objUser.SetInfo

objComputer.Description = strMessage2
objComputer.SetInfo

function MACAddresses(strComputer)
      dim objWMI, colItems, objItem
      dim strMac
      strMac=""  
      Set objWMI = GetObject("winmgmts:\\" & strComputer &  "\root\CIMV2")  
      Set colItems = objWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where IPEnabled=TRUE",,48)
      For Each objItem in colItems
            if objItem.MACAddress<>"" then strMac=strMac & objItem.MACAddress & vbCrLf
      Next  
      MACAddresses = strMac
end function

I found the following snippet that queries and returns what we need to add; however it obviously just returns screen output.  

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard")
For Each objItem in colItems
    For Each strOption in objItem.ConfigOptions
    Next
    Wscript.Echo "Serial Number: " & objItem.SerialNumber
Next

How can we add the above wmi query to write the Serial Number to both of the following output lines (in our working logon script)?
strMessage1 = " Authenticated on: " & objComputer.CN & " at " & Now & ".  MAC: " & MACAddresses(".")
strMessage2 = " MAC: " & MACAddresses(".") & "." & " Authenticated by: " & objUser.CN & " at " & Now & "."

I'd like the Serial Number query to be at the end of the strMessage1 line and at the beginning of the strMessage2 line.

Is this possible?
0
Comment
Question by:CommCatz
2 Comments
 
LVL 7

Accepted Solution

by:
kemi67 earned 500 total points
Comment Utility
I am sorry but it is seems to me that you have already written the solution.
Do you want to know how to modify your original script?
Try this:

''POPULATES AD WITH USER LOGON INFO IN DESCRIPTION FIELD
 
Set objSysInfo = CreateObject("ADSystemInfo")

unEscapedUserName = Replace(objSysInfo.UserName, "/", "\/")
Set objUser = GetObject("LDAP://" & unEscapedUserName)

Set objUser = GetObject("LDAP://" & Replace(objSysInfo.UserName, "/", "\/"))
Set objComputer = GetObject("LDAP://" & objSysInfo.ComputerName)

strSerial= SerialNumber
strMessage1 = " Authenticated on: " & objComputer.CN & " at " & Now & ".  MAC: " & MACAddresses(".") & strSerial
strMessage2 = strSerial & " MAC: " & MACAddresses(".") & "." & " Authenticated by: " & objUser.CN & " at " & Now & "."

objUser.Description = strMessage1
objUser.SetInfo
objComputer.Description = strMessage2
objComputer.SetInfo

function MACAddresses(strComputer)
      dim objWMI, colItems, objItem
      dim strMac
      strMac=""  
      Set objWMI = GetObject("winmgmts:\\" & strComputer &  "\root\CIMV2")  
      Set colItems = objWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where IPEnabled=TRUE",,48)
      For Each objItem in colItems
            if objItem.MACAddress<>"" then strMac=strMac & objItem.MACAddress & vbCrLf
      Next  
      MACAddresses = strMac
end function

function SerialNumber
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard")
For Each objItem in colItems
    For Each strOption in objItem.ConfigOptions
    Next
    SerialNumber = "Serial Number: " & objItem.SerialNumber
Next
end function


I hope I have understood your question

kemi67
0
 

Author Closing Comment

by:CommCatz
Comment Utility
Exactly what I was looking for!  Thanks!
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

It is a general practice to get rid of old user profiles on a computer  in a LAN environment. As I have been working with a company in a LAN environment where users move from one place to some other place at times. This will make many user profil…
Over the years I have built up my own little library of code snippets that I refer to when programming or writing a script.  Many of these have come from the web or adaptations from snippets I find on the Web.  Periodically I add to them when I come…
Learn the basics of lists in Python. Lists, as their name suggests, are a means for ordering and storing values. : Lists are declared using brackets; for example: t = [1, 2, 3]: Lists may contain a mix of data types; for example: t = ['string', 1, T…
Learn the basics of while and for loops in Python.  while loops are used for testing while, or until, a condition is met: The structure of a while loop is as follows:     while <condition>:         do something         repeate: The break statement m…

743 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

15 Experts available now in Live!

Get 1:1 Help Now