Script Remote Force Wsus in a Range

  • Thread starter Thread starter Jeferson Propheta
  • Start date Start date
J

Jeferson Propheta

Guest
***********************************************************************************************************
'* Wsus Remote Force in Network Range
*
'* -------------------------------------
*
'* Written by : Jeferson Propheta
*
'* Date : August / 2007
*
'* 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
*
'* #2 - to mount the Network Range
*
'*
*
'*
*
'***************************************************************************************************************
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 = CreateObject("WScript.Shell")
Set objOUTFSO = CreateObject("Scripting.FileSystemObject")

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

strOutDirectory = "C:\Temp\"
strOutFile = "\WsusRangeForceReport.txt"
LineSeparator = 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 1
'***************************************************************************************************************
'* Subnet Settings
*
'* -------------------------------------
*
'***************************************************************************************************************
Subnet = "192.168.25" 'Subnet Start

For ii = 1 to 7 'i.e.: 192.168.251.xxx to 192.168.257.xxx
For i = 0 to 254 'i.e.: 192.168.251.0 to 192.168.257.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
 
Back
Top