VB script to find Sophos EndPoint installed on network computer

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
LVL 8
LeoAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

jkaiosIT DirectorCommented:
Try the GetFileVersion method of the File System Object:

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

Open in new window

0
LeoAuthor Commented:
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
David Johnson, CD, MVPOwnerCommented:
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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

LeoAuthor Commented:
thanks, its working :-)
can you please tell me briefly how the script is working? then i will close off the ticket.
0
David Johnson, CD, MVPOwnerCommented:
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
LeoAuthor Commented:
ok, but how does it retrieve information for Sophos installed on computers?
0
brendanmeyerCommented:
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
VB Script

From novice to tech pro — start learning today.