Login to participate
Endpoint Management & Virtualization IdeasRSS
3

Reboot "NAG" message for Patch Management

FiPaHi's picture

In our environment we cannot force a reboot due to sensitive data collection functions of many of our client machines.

Having the ability to create a customised nag message reminding the client that their machine is vulnerable until rebooted would be extremely valuable.

Administrators should also be able to configure the frequency of the nag message(s) and set an escalation frequecy, i.e. Have the message appear once per day for the first week, increase by X occurences each N hours/days/weeks. Where X and N are configurable number entries and hours/days/weeks is either a drop down selection or a check box selection.

Scott Hardie's picture

Use VBS and the Microsoft Agents to remind Users

Copy the text below into a text file and rename to a .vbs You can use it as you see fit within your organization to help with reminding users after installs for software or patches.

Option Explicit

Const Complete = 0, Pending = 2, NAG = 99
Const APPNORMAL = 1, APPHIDDEN = 0, APPMIN = 2, APPMAX = 3

Dim objAgent, objChar, objRequest, txtSpeak
Dim strCharacter, Shell, strFirstName
Dim WshShell, AGENTSTATUS, RUNAPP, APPTYPE
Dim i
Set WshShell = CreateObject("WScript.Shell")

' -------------------------------------------------------------------------------------------

strFirstName = ""

' Options for strFirstName
' strFirstName = "Bob"
' strFirstName = "Friend"
' Use a VBScript to lookup employee name and save it as a variable and use the variable to ' personalize the reminder to each user.
' -------------------------------------------------------------------------------------------

strCharacter = "merlin"

' Options for strCharacter
' strCharacter = "rocky"
' Windows XP has lots of other charcters as well just look for .acs files

' -------------------------------------------------------------------------------------------

AGENTSTATUS = NAG

' Options for AGENTSTATUS
' AGENTSTATUS = NAG if you want agent to stay until reboot
' AGENTSTATUS = COMPLETE if you want agent to disappear after run is done

' -------------------------------------------------------------------------------------------

'RUNAPP =

'Options for RUNAPP
'RUNAPP = "\\servername\sharename\app.exe"
'RUNAPP = "drive:\folder\subfolder\app.exe"

' -------------------------------------------------------------------------------------------

APPTYPE = APPNORMAL

' Options for APPTYPE
' APPTYPE = APPNORMAL Application runs Normally
' APPTYPE = APPHIDDEN Application runs Hidden
' APPTYPE = APPMIN Application runs Minimized
' APPTYPE = APPMAX Application runs Maximized

' -------------------------------------------------------------------------------------------

dim ForceReboot, RebootAPP, RebootCountdown
ForceReboot = 0
' ForceReboot = 1
' RebootAPP = "drive:\folder\subfolder\app.exe"
' RebootCountdown = 300

Set Shell = CreateObject("WScript.Shell")
If HaveAgent() Then

   objAgent.Characters.Load strCharacter, strCharacter & ".acs"
   Set objChar = objAgent.Characters(strCharacter)
   With objChar
     .Top = 50
     .Left = 50
     .LanguageID = &h409
     .Show
   End With

   objChar.Play "Greet"
   objChar.Play "Announce"
   objChar.Speak "Hello, " & strFirstName & "\Vol=500"
   objChar.Play "GetAttention"
   objChar.Play "GetAttentionReturn"
   objChar.Play "Idle2_2"
   objChar.Play "Acknowledge"
   objChar.Speak "A Microsoft patch is being installed."
   objChar.MoveTo 800, 600
   objChar.Speak "Please wait."
   objChar.Play "Idle3_1"
   objChar.Play "Wave"
 
   Set objRequest = objChar.Show
   dim Return
'   Return = WshShell.Run(RUNAPP, APPTYPE, true)

   if ForceReboot = 1 then
	   objChar.Play "GetAttentionReturn"
	   objChar.Speak "The program that was taking place in the background is now complete."
	   objChar.MoveTo 800, 500
	   objChar.Speak "Thank you for your cooperation."
	   objChar.Play "Idle3_1"
	   objChar.Play "Wave"

	   Set objRequest = objChar.show
	   Do until i > RebootCountdown + 1
		set objRequest = nothing		
		Set objRequest = objChar.Show
		objChar.Think "IM is Rebooting your PC in: " & RebootCountdown - i
		do until objRequest.Status = Complete
		        Wscript.Sleep 100
		loop
		i = i + 1
	   Loop
	   Return = WshShell.Run(RebootAPP, 0, False)
   else

	   objChar.Play "GetAttentionReturn"
	   objChar.Speak "The Application running in the background is now complete. Please save 	   your work then click START on your taskbar then SHUTDOWN and choose RESTART."
	   objChar.MoveTo 800, 500
	   objChar.Speak "Thank you for your support and cooperation."
	   objChar.Play "Idle3_1"
	   objChar.Play "Wave"

	   Do Until objRequest.Status = AGENTSTATUS
'		if i = 100 then
'			i = 0
'		   objChar.Show
'		   'objChar.Think "The Microsoft patch that was taking place in the background is                                    now complete."
'		   'objChar.Play "Idle3_1"
'	           objChar.Think "IM  " & objRequest.Status
'		   'objChar.Think "Signed: IM."
'		end if
'		i = i + 1
	      Wscript.Sleep 100
	   Loop
   end if

   Set objChar = Nothing
   objAgent.Characters.Unload strCharacter

   WScript.Quit
Else

   Shell.Popup "MS Agent NOT Found !" & vbCrLf, _
     10, _
     "Error Message", _
     vbInformation + vbOKOnly + vbSystemModal

   Wscript.Quit
End If

Function HaveAgent()

   HaveAgent = False
   On Error Resume Next
   Set objAgent = CreateObject("Agent.Control.1")
   objAgent.Connected = True
   HaveAgent = IsObject(objAgent)
End Function

James "Scott" Hardie
Vice President of Technology Services
shardie@xcendgroup.com
http://www.xcendgroup.com

James "Scott" Hardie
Manager Systems Engineering
scott_hardie@symantec.com
http://www.symantec.com

CraigM's picture

How about a forced reboot?

How about a forced reboot after Y number of days of nagging?

xmoreland's picture

This is great!

I would much rather nag people to re-boot than smack them with a re-boot in the middle of something important. At least with this they have the option to save everything before they re-boot.

erikw's picture

Nagging

For rebooting there is something to say for nagging people, and for forcing them to reboot. Both have there benefits, but there is one thing that you should convince people to.

Convince them why their machines have to reboot once in a while.

The machines slow down, don't get patched well, use old DNS information and stuff like that.

The only good way to prevent you from forcing shutdowns is to convince them.

Regards
Erik

Regards
Erik
www.DinamiQs.com
Dinamiqs is the home of VirtualStorm (www.virtualstorm.org)