'+
' write_to_ie_v2.vbs
'
' This script demoes how to provide text rendition in a window from VBScript.
' Trick is to create an Internet Explorer document, then populate the document with data and HTML tags.
'
' Input : None
' Output : Display within an ie page
' Side effects: None
'
' v1 Initial version from http://technet.microsoft.com/en-us/library/ee176580.aspx with some customization.
' v2.0-0 7-nov-2010 Didier.Morandi at gmail.com (http://didier.morandi.free.fr/vbs): Sort before loading display
'-
Option Explicit
Dim ObjExplorer, objDocument, objWMIService, DataList, ColServices, Service
Dim strBgColor, strTextColor, strComputer, strComputerName, strScriptInfo
Dim intRunning, intStopped
Const Black = "#000000", White="#FFFFFF", Blue="#0000FF", Green="#00FF00", Yellow="#FFFF00", Red="#FF0000"
Const adVarChar = 200
Const MaxCharacters = 255
wscript.echo "Opening Windows display"
'--- Creating instance of ie ---
Set objExplorer = CreateObject("InternetExplorer.Application")
objExplorer.Navigate "about:blank"
objExplorer.ToolBar = 0
objExplorer.StatusBar = 0
objExplorer.Width = 1024
objExplorer.Height = 600
objExplorer.Left = 300
objExplorer.Top = 100
objExplorer.Visible = 1
'--- This loop allows ie to terminate its initialization before creating a document ---
Do While (objExplorer.Busy)
Loop
'--- Creating object document ---
Set objDocument = objExplorer.Document
objDocument.Open
strBgColor = White
strTextColor = Blue
strComputerName = GetComputerName()
'--- Building ie page ---
objDocument.Writeln "
Service Status"
objDocument.Writeln ""
objDocument.Writeln ""
objDocument.Writeln ""
objDocument.Writeln ""
objDocument.Writeln "Services on " & strComputerName & " | "
objDocument.Writeln "State | "
objDocument.Writeln "Description | "
objDocument.Writeln "
"
wscript.echo "loading data..."
'--- Creating disconnected recordset ---
Set DataList = CreateObject("ADOR.Recordset")
DataList.Fields.Append "ServiceName", adVarChar, MaxCharacters
DataList.Fields.Append "ServiceState", adVarChar, MaxCharacters
DataList.Fields.Append "ServiceDisplayName", adVarChar, MaxCharacters
DataList.Open
'--- Fetching data ---
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer& "\root\cimv2")
Set colServices = objWMIService.ExecQuery("SELECT * FROM Win32_Service")
For Each Service in colServices
DataList.AddNew
DataList("ServiceName") = Service.Name
DataList("ServiceState") = Service.State
DataList("ServiceDisplayName") = Service.DisplayName
DataList.Update
Next
'--- Sorting data ---
wscript.echo "sorting data..."
DataList.Sort = "ServiceName"
'--- Loading data in page ---
intRunning = 0
intStopped = 0
DataList.MoveFirst
Do Until DataList.EOF
objDocument.Writeln ""
objDocument.Writeln "" &_
DataList.Fields.Item("ServiceName") &_
" | "
if DataList.Fields.Item("ServiceState") = "Stopped" then
strTextColor = Red
intStopped = intStopped + 1
else
strTextColor = Blue
intRunning = intRunning + 1
end if
objDocument.writeln "" &_
DataList.Fields.Item("ServiceState") &_
" | "
objDocument.writeln "" &_
DataList.Fields.Item("ServiceDisplayName") &_
" | "
objDocument.Writeln "
"
DataList.MoveNext
Loop
'--- Building footer ---
strScriptInfo = GetScriptEngineInfo()
objDocument.Writeln "
"
objDocument.Writeln "---"
objDocument.Writeln "
"
objDocument.Writeln "Running services: " & intRunning & ", Stopped services: " & intStopped & ". Total: " &_
(intRunning + intStopped) & " services on " & strComputerName & "."
objDocument.Writeln "
"
objDocument.Writeln "Listing provided by " & Ucase(wscript.ScriptName) & " on " & now &_
". " & strScriptInfo & ""
objDocument.Writeln ""
objDocument.Writeln ""
objDocument.Write()
objDocument.Close
wscript.echo "Display done."
wscript.quit
'------------------------------------------------------------------------
Function GetComputerName()
Dim objWshNetwork
Set objWshNetwork = WScript.CreateObject("WScript.Network")
GetComputerName = objWshNetwork.ComputerName
End Function
'------------------------------------------------------------------------
Function GetScriptEngineInfo
Dim s
s = ""
s = ScriptEngine & " Version "
s = s & ScriptEngineMajorVersion & "."
s = s & ScriptEngineMinorVersion & "."
s = s & ScriptEngineBuildVersion
GetScriptEngineInfo = s
End Function