Solved

VB script to find Sophos EndPoint installed on network computer

Posted on 2014-10-23
7
214 Views
Last Modified: 2016-02-25
Hi All, I need help to amend a VB script, the script will check two things, computers on the network for an application  if its installed, i.e. Sophos EndPoint, and which version its running.
Once checked if its running Sophos and which version it will send the results through email.
I have attached the script so far what i have worked on.... it does work and reports if any computers doesn't have sophos, but iam not able to find out the version installed through script....need help in that....
i have attached the script......
Script.txt
0
Comment
Question by:Leo
7 Comments
 
LVL 12

Expert Comment

by:jkaios
ID: 40401032
Try the GetFileVersion method of the File System Object:

objMessage.TextBody = objNetwork.Username & " " & strIP & " File Version: " & objFSO.GetFileVersion(strFile)

Open in new window

0
 
LVL 8

Author Comment

by:Leo
ID: 40401064
Where i should insert it?
and in the GetFileVersion, where do i have to specify it should be only checking the file version for Sophos?
0
 
LVL 80

Accepted Solution

by:
David Johnson, CD, MVP earned 500 total points
ID: 40401198
notice the changes to the code as

Option Explicit
'=======================================================
'File:	NoSophos.vbs
'Version:	1.0
'Description
'Checks for the existence of a Sophos file and email if it doesn't exist.
'=======================================================
Const x86_SAV = "C:\Program Files\Sophos\Sophos Anti-Virus\SavProxy.exe"
Const x64_SAV = "C:\Program Files (x86)\Sophos\Sophos Anti-Virus\SavProxy.exe"
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Dim wshShell : Set wshShell = Wscript.CreateObject("Wscript.Shell")
Dim objFSO : set objFSO = createobject("Scripting.FileSystemObject")
Dim objMessage : Set objMessage = CreateObject("CDO.Message") 
Dim WshNetwork : Set WshNetwork = CreateObject("WScript.Network")
Dim strComputer
Dim objNetwork : Set objNetwork = wscript.CreateObject("wscript.network")
Dim strIP
Dim strcomputerIP
Dim objWMIService
Dim colItems
Dim strCount
Dim objitem
Dim strIPAddress
Dim Architecture
Dim strFile
strComputer = WshNetwork.ComputerName 
Architecture =  WshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE")

If InStr(Architecture,"86") <> 0 Then 
	strFile = x86_SAV
ElseIf InStr(Architecture,"64") <> 0 Then 
	strFile = x64_SAV
Else
	' unknown result, fail gracefully
	WScript.Quit
End If
strcomputerIP = "."
	Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputerIP & "\root\cimv2")
		Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
	    	strCount = 1
		For Each objitem in colitems
	    If strCount = 1 Then
	        strIPAddress = Join(objitem.IPAddress, ",")
	        strIP = stripaddress
	        strCount = strCount + 1
	      Else
	    End If
		next
If (NOT objFSO.FileExists(strFile)) Then
	objMessage.Subject = "Sophos not installed" 
objMessage.TextBody = objNetwork.Username & " " & strIP & objMessage.Subject
else
objMessage.Subject = "Sophos Installed"
	    objMessage.TextBody = objNetwork.Username & " " & strIP & " File Version: " & objFSO.GetFileVersion(strFile)
End if
	objMessage.From = strComputer & "@EmailServer" 
	objMessage.To = "test1@EmailServer" 
	objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
	objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.EmailServer"
	objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
	objMessage.Configuration.Fields.Update
	objMessage.Send

Open in new window

0
Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

 
LVL 8

Author Comment

by:Leo
ID: 40405759
thanks, its working :-)
can you please tell me briefly how the script is working? then i will close off the ticket.
0
 
LVL 80

Expert Comment

by:David Johnson, CD, MVP
ID: 40405799
all I did was combine all of the items that are common and only separate out the ones that are different i.e. processor architecture.
0
 
LVL 8

Author Comment

by:Leo
ID: 40405820
ok, but how does it retrieve information for Sophos installed on computers?
0
 
LVL 14

Expert Comment

by:brendanmeyer
ID: 40405843
here is a script for getting the version

doesnt gather ip network information though

checks "Programs and Features" Installed list

Option Explicit

Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE 
	
Dim objMessage : Set objMessage = CreateObject("CDO.Message") 	
Dim objNetwork : Set objNetwork = CreateObject("WScript.Network")
Dim strComputer
Dim Architecture
Dim objReg
Dim strKey
Dim arrSubkeys
Dim strSubkey
Dim intRet1
Dim strDisplayName 
Dim intVersionMajor
Dim intVersionMinor
Dim strProgramDisplayName
Dim intProgramVersionMajor
Dim intProgramVersionMinor


strComputer = objNetwork.ComputerName 

Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" 

objReg.EnumKey HKLM, strKey, arrSubkeys 

'WScript.Echo "Installed Applications" & VbCrLf 
For Each strSubkey In arrSubkeys 
	intRet1 = objReg.GetStringValue(HKLM, strKey & strSubkey, "DisplayName", strDisplayName) 
	If intRet1 <> 0 Then 
		objReg.GetStringValue HKLM, strKey & strSubkey, "QuietDisplayName", strDisplayName 
	End If 
	objReg.GetDWORDValue HKLM, strKey & strSubkey, "VersionMajor", intVersionMajor
	objReg.GetDWORDValue HKLM, strKey & strSubkey, "VersionMinor", intVersionMinor

	On Error Resume  Next
	'WScript.Echo strDisplayName
	On Error Goto 0
	If InStr(1, strDisplayName, "sophos", 1) Then 
		strProgramDisplayName = strDisplayName
		intProgramVersionMajor = intVersionMajor
		intProgramVersionMinor = intVersionMinor
	End If
Next 

If strProgramDisplayName <> "" Then
	WScript.Echo VbCrLf & "Display Name: " & strProgramDisplayName
	WScript.Echo "Version: " & intProgramVersionMajor & "." & intProgramVersionMinor
			
	objMessage.Subject = "Sophos installed" 
	objMessage.TextBody = objNetwork.Username & " " & strComputer & VbCrLf & "Display Name: " & strProgramDisplayName & VbCrLf & "Version: " & intProgramVersionMajor & "." & intProgramVersionMinor
Else
	objMessage.Subject = "Sophos not installed" 
	objMessage.TextBody = objNetwork.Username & " " & strComputer
End If

objMessage.From = strComputer & "@EmailServer" 
objMessage.To = "test1@EmailServer" 

objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.EmailServer"
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update

objMessage.Send

Open in new window

0

Featured Post

Active Directory Webinar

We all know we need to protect and secure our privileges, but where to start? Join Experts Exchange and ManageEngine on Tuesday, April 11, 2017 10:00 AM PDT to learn how to track and secure privileged users in Active Directory.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Tracing a live website down to the files which support it 2 25
Name Space error VS2015 1 25
Easy filter aspnet 2 27
programming a polycom voip phone 3 25
Entering a date in Microsoft Access can be tricky. A typo can cause month and day to be shuffled, entering the day only causes an error, as does entering, say, day 31 in June. This article shows how an inputmask supported by code can help the user a…
When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …

828 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