You are on page 1of 8

WSUS DETECT NOW

'*****************************************************************************
**********************************
'*

'* -------------------------------------

'* Description: Create 2 Process in a Remoter Computer using a stipulate Range in order to
Force WSUS *
'*

Detection and Report

'* -------------------------------------

'* Configure #Sessions

'* #1 - to specify the Location of Log File and Log File Name eg. points to c:\temp
*
'* #2 - to mount the Network Range eg range shows 10.18.117.0 to 10.18.119.254
*
'* Modify to suit your requirements
'*

*
*

'*****************************************************************************
**********************************
On Error Resume Next
Const HKEY_LOCAL_MACHINE = &H80000002
Const ForReading = 1, ForAppending = 8
'*****************************************************************************
**********************************
'* WSUS Commands
'* -------------------------------------

*
*

'*****************************************************************************
**********************************
strWsusCommand = "wuauclt /ResetAuthorization /DetectNow"
strWsusCommand2 = "wuauclt /ReportNow"
ServiceName

= "wuauserv"

'*****************************************************************************
**********************************
'* Script initial Sets

'* -------------------------------------

'*****************************************************************************
**********************************
Set objShell
Set objOUTFSO

= CreateObject("WScript.Shell")
= CreateObject("Scripting.FileSystemObject")

'#Session 1
'*****************************************************************************
**********************************
'* Output File name and Folder
'* -------------------------------------

*
*

'*****************************************************************************
**********************************
strOutDirectory = "C:\Temp\"
strOutFile
LineSeparator

= "\WsusRangeForceReport.txt"
= 48

LineSeparatorChar = "-"
'*****************************************************************************
**********************************
'* Output Folder Structure and File Creation
'* -------------------------------------

*
*

'*****************************************************************************
**********************************
If objOUTFSO.FolderExists(strOutDirectory) Then
Set objFolder = objOUTFSO.GetFolder(strOutDirectory)
Else
Set objFolder = objOUTFSO.CreateFolder(strOutDirectory)
End If

If objOUTFSO.FileExists(strOutDirectory & strOutFile) Then


Set objFolder = objOUTFSO.GetFolder(strOutDirectory)
strOutpath = strOutDirectory & strOutFile
objOUTFSO.DeleteFile(strOutpath)
Else
Set objFile = objOUTFSO.CreateTextFile(strOutDirectory & strOutFile)
End If
'#Session 2
'*****************************************************************************
**********************************
'* Subnet Settings

'* -------------------------------------

'*****************************************************************************
**********************************
Subnet = "10.18.11" 'Subnet Start
For ii = 7 to 9
For i = 0 to 254

'i.e.: 10.18.117 to 10.18.119


'i.e.: 10.18.117.0 to 10.18.119.254

strTarget = Subnet & ii & "." & i


'*****************************************************************************
**********************************
'* Target IP Test
'* -------------------------------------

*
*

'*****************************************************************************
**********************************
Set objWMIServicePing = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIServicePing.ExecQuery ("Select * from Win32_PingStatus " &
"Where Address = '" & strTarget & "'")
Set objFile = Nothing
Set objFolder = Nothing

Set objOutTextFile = objOUTFSO.OpenTextFile (strOutDirectory & strOutFile,


ForAppending, True)
For Each objItem in colItems
If objItem.StatusCode = 0 Then
strComputer = strTarget
'*****************************************************************************
**********************************
'* Check Service

'* -------------------------------------

'*****************************************************************************
**********************************
If ServiceExist(ServiceName) = True Then
Set objWMIService = GetObject("winmgmts:" &
"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery ("SELECT * FROM Win32_Service
WHERE Name = 'wuauserv'")
For Each objService in colServices
errReturnCode = objService.StopService()
errReturnCode = objService.StartService()
Next
'*****************************************************************************
**********************************
'* Write IP Address and Response Time

'* -------------------------------------

'*****************************************************************************
**********************************
Set objProcess = objWMIService.Get("Win32_Process")
objOutTextFile.WriteLine String(LineSeparator, LineSeparatorChar)
objOutTextFile.WriteLine ("IP Address

: " & strTarget)

objOutTextFile.WriteLine ("Reply received at : " & Now())

'*****************************************************************************
**********************************
'* Start Process One
'* -------------------------------------

*
*

'*****************************************************************************
**********************************
intReturn = objProcess.Create (strWsusCommand, Null, Null, intProcessID)
If intReturn = 0 Then
objOutTextFile.WriteLine ("Process ID 1 Created : " & intProcessID)
Else
objOutTextFile.WriteLine ("Process 1 could not be created!!!!")
End If
'*****************************************************************************
**********************************
'* Start Process Two
'* -------------------------------------

*
*

'*****************************************************************************
**********************************
intReturn = objProcess.Create (strWsusCommand2, Null, Null, intProcessID)
If intReturn = 0 Then
objOutTextFile.WriteLine ("Process ID 2 Created : " & intProcessID)
Else
objOutTextFile.WriteLine ("Process 2 could not be created!!!!")
End If
Else
'*****************************************************************************
**********************************
'* Write Cannot Find the Service (Probably 9x or Non-Windows O.S.)
'* -------------------------------------

*
*

'*****************************************************************************
**********************************
objOutTextFile.WriteLine String(LineSeparator, LineSeparatorChar)
objOutTextFile.WriteLine ("IP Address : " & strTarget & " Cannot Find the
Service... Process Aborted!")
End IF
Else
'*****************************************************************************
**********************************
'* Write Ping Not-Reply
'* -------------------------------------

*
*

'*****************************************************************************
**********************************
objOutTextFile.WriteLine String(LineSeparator, LineSeparatorChar)
objOutTextFile.WriteLine ("IP Address : " & strTarget & " Reply Not received " &
Now())
End If
Next
Next
Next
'*****************************************************************************
**********************************
'* Write End of Log

'* -------------------------------------

'*****************************************************************************
**********************************
objOutTextFile.WriteLine String(LineSeparator, LineSeparatorChar)
objOutTextFile.WriteLine String(LineSeparator, LineSeparatorChar)
objOutTextFile.WriteLine ("WSUS Range Force v0.1")
objOutTextFile.WriteLine ("This Report summarizes the status of the Update Services Force in
the Range.")

objOutTextFile.WriteLine ("Report Finished at: " & Now())


objOutTextFile.WriteLine String(LineSeparator, LineSeparatorChar)
objOutTextFile.WriteLine String(LineSeparator, LineSeparatorChar)
Wscript.Quit
'*****************************************************************************
**********************************
'* Services Function

'* -------------------------------------

'*****************************************************************************
**********************************
Function ServiceExist(ServiceName)
strComputer = strTarget
Set objWMIService = GetObject("winmgmts:\\" & strTarget & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Service",,48)
For Each objItem in colItems
If objItem.Name = ServiceName Then
ServiceExist = True
End If
Next
End Function
Function SetStartType(StartMode, ServiceName)
If ServiceExist(ServiceName) = True Then
Set objWMIService = GetObject("winmgmts:\\" & strTarget & "\root\CIMV2")
Set objShare = objWMIService.Get("Win32_Service.Name='" & ServiceName & "'")
Set objInParam =
objShare.Methods_("ChangeStartMode").inParameters.SpawnInstance_()
objInParam.Properties_.Item("StartMode") = StartMode
Set objOutParams = objWMIService.ExecMethod("Win32_Service.Name='"&
ServiceName & "'", "ChangeStartMode", objInParam)

SetStartType = objOutParams.ReturnValue
Else
SetStartType = 9
End If
End Function

You might also like