troubleshooting Question

VB Script Experts...Need Help

Avatar of syseng007
syseng007 asked on
VB Script
2 Comments2 Solutions353 ViewsLast Modified:
I need to run the following script to query predominantly 2003 and minimal 2008 to query a service's state using local administrator ID SAAdmin. The reason why I need to use local administrator credentials it's because the servers reside in different domains. PLease help! Thank you.

'********************************************************************************
'* File:      ServiceState.vbs
'* Main Functions:  Extracts a list of computer names or IP addresses from a text  
'*                file and sends a PING to each to determine UP/DOWN state.
'*                Writes results to comma delimited text file named
'*                SERVICEResults.month.day.hour.minute.log listing host names or
'*                IP addresses and the status of each specified service.
'*
'* Required file: compname.txt containing a single column of host names or IP
'*                address with no white space in the same directory as this script.
'*
'********************************************************************************
 
 
Dim sDate
Dim strTime
Dim strDate
Dim strState
Dim strDataIn             'Input list from text file
Dim aryData                  'Array to hold input stream
Dim iCounter             'Iterative loop counter
dim strOUT                  'Output file
Dim oWshShell            'Windows shell script
Dim objFSO                  'Scripting File System
Dim objFile                  'Open text file
Dim strFilePath            'Path to current directory
Dim strServiceName      'Name of service to be checked
 
Set oWshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
strFilePath = objFSO.GetAbsolutePathName(".")
 
'Get Service Name
strServiceName = InputBox("Enter name of service...", "Service name input")
 
'Read file into a variable
strDataIn = f_r(strFilePath & "\compname.txt")
'Split into an array
aryData = Split(strDataIn,vbCrLf)
 
oWshShell.Popup Ubound(aryData) + 1 & " Hosts/Addresses in list." & Chr(13) & "Scan is underway.",2,"Notice",64
sDate = Date
strTime = Now
StrDate = DatePart("m",sDate) & "." & DatePart("d",sDate) & "." & Hour(strTime) & "." & Minute(strTime)
set strOUT = objFSO.CreateTextFile(strFilePath & "\SERVICEResults." & strDate & ".log")
 
strOUT.WriteLine strServiceName & " query results:"
strOUT.WriteBlankLines (2)
For iCounter = 0 to Ubound(aryData)
 aryData(iCounter) = Trim(aryData(iCounter)) ' clean "white space"
 
 if GetService(aryData(iCounter), strServiceName) then
      strOUT.Write aryData(iCounter) & ",Installed : " & strState & vbcrlf
 else
      strOUT.Write aryData(iCounter) & ",Service not present" & vbcrlf
 end if
Next
 
strOUT.Close
 
set strOUT = nothing
set objFSO = nothing
 
oWshShell.Popup "Scan processing complete.",5,"Notice",64
 
wscript.quit
 
 
'********************************************************************************
'* Function f_r(FilePath)
'*      
'*      Given the path to a file,  this function will return entire contents
'*
'********************************************************************************
 
Function f_r(FilePath)
 Dim FSO
 set FSO = CreateObject("Scripting.FileSystemObject")
 
  f_r = FSO.OpenTextFile(FilePath,1).ReadAll
 
End Function
 
 
 
 
'********************************************************************************
'* Function GetService(strComputer)
'*
'*      Returns True or False based on the status of the specified Service
'*  
'*
'********************************************************************************
 
Function GetService(strComputer, strSrvce)
 
On Error Resume Next
 
Dim objWMIService
Dim colListOfServices
Dim objService
 
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
    ("Select DisplayName,State from Win32_Service Where Name = '" & strSrvce & "'")
 
If Err.Number <> 0 Then
  GetService = "False"
  Err.Clear
 
Else
  For Each objService in colListOfServices
   GetService = "True"
   strState = objService.State
   
  Next
 
End If
 
End Function
ASKER CERTIFIED SOLUTION
Join our community to see this answer!
Unlock 2 Answers and 2 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 2 Answers and 2 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros