An alternative that carries a little risk is to give the TS users a web page that allows them to restart the Spooler service if it is hung. Then problem here is that it can result in data loss. People with print jobs that were stuck will need to resend. CODE<%@ Language=VBScript %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <% '========================================================================== ' ' NAME: RestartSpooler.asp ' ' AUTHOR: Mark D. MacLachlan , The Spider's Parlor ' URL : http://www.thespidersparlor.com ' COPYRIGHT (C) 2009 All rights reserved ' DATE : 11/24/2006 ' ' COMMENT: Restarts the spooler service ' ' ' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ' ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO ' THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A ' PARTICULAR PURPOSE. ' ' IN NO EVENT SHALL THE SPIDER'S PARLOR AND/OR ITS RESPECTIVE SUPPLIERS ' BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY ' DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, ' WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ' ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE ' OF THIS CODE OR INFORMATION. '========================================================================== Sub Window_Onload TableArea.InnerHTML = GetServices End Sub Function GetServices Dim objWMIService, objItem, objService, strServiceList Dim colListOfServices, strComputer, strService, ServiceArea strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name='spooler'") For Each objService in colListOfServices startButton = "<input class='button' type='button' value='Start' name='start_button' onClick='ModifyService " & Chr(34)& objService.name & Chr(34)&","& Chr(34)& "start" & Chr(34)&"'>" stopButton = "<input class='button' type='button' value='Stop' name='stop_button' onClick='ModifyService " & Chr(34) & objService.name & Chr(34)&","& Chr(34)& "stop" & Chr(34)&"'>" ServiceArea = ServiceArea & "<tr><td>" & objService.name & "</td><td>"& objService.state &"</td><td>"& stopButton & "</td><td>"& startButton & "</td></tr>" Next GetServices = "<table border =1 bgcolor=white><th>Service Name</th><th>Service State</th><th colspan=2>Action</th>"& ServiceArea & "</table>" End Function Function ModifyService(strService, action) Dim objService strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colServices = objWMIService.ExecQuery ("Select * from Win32_Service Where Name ='"& strService & "'") For Each objService in colServices If action = "start" Then objService.StartService() Else objService.StopService() End If Next Location.Reload(True) End Function
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Enumerating Services</title> </head>
<body><h1> <strong>Spooler Management</strong></h1> <span id=TableArea>Connecting To Services, Please Wait</span> </body>
</html> I hope you find this post helpful.
Regards,
Mark
Check out my scripting solutions at http://www.thespidersparlor.com/vbscript
Work SMARTER not HARDER. The Spider's Parlor's Admin Script Pack is a collection of Administrative scripts designed to make IT Administration easier! Save time, get more work done, get the Admin Script Pack. |
|