Process VBScript help [Resolved]

Technical support and scripting issues

Moderators: JRL, Dorian (MJT support)

Post Reply
User avatar
JRL
Automation Wizard
Posts: 3532
Joined: Mon Jan 10, 2005 6:22 pm
Location: Iowa

Process VBScript help [Resolved]

Post by JRL » Thu Jan 27, 2011 9:54 pm

Hi All,
Below is a VBScript from scripts and tips that displays processes and services information in individual message boxes one after another. Would anyone have the time to rewrite this so that it creates text blobs that include %crlf% delimited lists of all the processes and all of the services? They would be individual blobs. The format of each line of information is good. I just don't know how to get each entire list assigned to a Macro Scheduler variable.

Code: Select all

VBSTART
'Two Subs which output data in message boxes to demonstrate how to
'get service and process information.

'displays each service and it's status
Sub Services
  strComputer = "."
  Set wbemServices = GetObject("winmgmts:\\" & strComputer)
  Set wbemObjectSet = wbemServices.InstancesOf("Win32_Service")
  For Each wbemObject In wbemObjectSet
   MsgBox "Display Name: " & wbemObject.DisplayName & vbCrLf & _
                   " State: " & wbemObject.State & vbCrLf & _
                " Start Mode: " & wbemObject.StartMode
  Next
End Sub

Sub Processes
'displays each process, it's size
'lists each process and the cpu time it has used.
    sComputer = "."
    Set oWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")

    Set colProcessList = oWMIService.ExecQuery _
        ("Select Name, WorkingSetSize from Win32_Process")

    For Each oProcess in colProcessList
          MsgBox oProcess.Name & "," & oProcess.WorkingSetSize / 1024
    Next

    'The current CPU percentage usage vs. other processes is not available with WMI,
    'only the total CPU time each process has used (kernelmodetime + usermodetime):

    Set oWMI = GetObject("winmgmts:")
    sWQL = "select name, kernelmodetime, usermodetime " _
           & " from win32_process"

    Set oResults = oWMI.ExecQuery(sWQL)

    For Each oProcess In oResults
         MsgBox "name: " & oProcess.name & _
                ",kernelmodetime: " & oProcess.kernelmodetime & _
               ",usermodetime: " & oProcess.usermodetime
    Next
End Sub
VBEND
VBRun>Services
VBRun>Processes
Last edited by JRL on Fri Jan 28, 2011 5:11 am, edited 1 time in total.

User avatar
JRL
Automation Wizard
Posts: 3532
Joined: Mon Jan 10, 2005 6:22 pm
Location: Iowa

Post by JRL » Fri Jan 28, 2011 5:08 am

I'm not very good with this VBScript stuff so it took me several hours and a few choice words but following is pretty much what I am looking for.

Code: Select all

VBSTART

Function Services()
  strComputer = "."
  Set wbemServices = GetObject("winmgmts:\\" & strComputer)
  Set wbemObjectSet = wbemServices.InstancesOf("Win32_Service")
  For Each wbemObject In wbemObjectSet
  Services = Services & vbCrLf & wbemObject.DisplayName & "," & _
             wbemObject.State & "," & wbemObject.StartMode
  Next
End Function

Function Processes()
    sComputer = "."
    Set oWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")

    Set colProcessList = oWMIService.ExecQuery _
        ("Select Name, WorkingSetSize from Win32_Process")

    For Each oProcess in colProcessList
          Processes = Processes & vbCrLf & oProcess.Name & "," & oProcess.WorkingSetSize / 1024
    Next
    
    Set oWMI = GetObject("winmgmts:")
    sWQL = "select name, kernelmodetime, usermodetime " _
           & " from win32_process"

    Set oResults = oWMI.ExecQuery(sWQL)

    For Each oProcess In oResults
         Processes = Processes & vbCrLf & oProcess.name  & "," & _
         oProcess.kernelmodetime  & "," & _
         oProcess.usermodetime
    Next
End Function
VBEND
VBEVal>Services,SList
VBEVal>Processes,Plist

MDL>%SList%%CRLF%%PList%

Post Reply
Sign up to our newsletter for free automation tips, tricks & discounts