'------------------------------------------------------------------------------------------------
'
' Usage: pauseweb <--ADSPath|-a server1[,server2,server3...]> 
'                          [--computer|-c COMPUTER1[,COMPUTER2...]]
'						   [--verbose|-v]
'                          [--help|-?]
'
' SERVERx         Web Server # to be paused
'
' Example 1: pauseweb --a 3,1
'------------------------------------------------------------------------------------------------

' Force explicit declaration of all variables.
Option Explicit

On Error Resume Next

Dim oArgs, ArgNum, ArgServerList
Dim verbose
Dim ArgComputers

ArgComputers = Array("LocalHost")
verbose = false

Set oArgs = WScript.Arguments
ArgNum = 0
While ArgNum < oArgs.Count

	Select Case LCase(oArgs(ArgNum))
		Case "--adspath","-a":
			ArgNum = ArgNum + 1
			ArgServerList=Split(oArgs(ArgNum), ",", -1)
		Case "--computer","-c":
			ArgNum = ArgNum + 1
			ArgComputers = Split(oArgs(ArgNum), ",", -1)
		Case "--verbose", "-v":
			verbose = true
		Case "--help","-?":
			Call DisplayUsage
		Case Else:
			Call DisplayUsage
	End Select	

	ArgNum = ArgNum + 1
Wend

If Not IsArray(ArgServerList) Then
	Call DisplayUsage
End If

Dim compIndex

for compIndex = 0 to UBound(ArgComputers)
	Call ASTPauseWebServers(ArgComputers(compIndex),ArgServerList)
next

Sub ASTPauseWebServers(Computer, ServerList)
	Dim ServerNum, oServer

	On Error Resume Next
	ServerNum = 0
	Dim fullPath
	While ServerNum <= UBound(ServerList)
		fullPath = "IIS://"&Computer&"/W3svc/"&ArgServerList(ServerNum)
		Trace "Pausing " & fullPath & "."
		Set oServer = GetObject(fullPath)
		If Err <> 0 Then
			Display "Unable to open " & fullPath & "."
		End If
		oServer.Pause
		If Err <> 0 Then
			Display "Unable to pause web server " & fullPath & "."
		End If
		ServerNum = ServerNum + 1
	Wend 
End Sub

Sub Display(Msg)
	WScript.Echo Now & ". Error Code: " & Hex(Err) & " - " & Msg
End Sub

Sub Trace(Msg)
	if verbose = true then
		WScript.Echo Now & " : " & Msg	
	end if
End Sub
	
Sub DisplayUsage
	WScript.Echo "Usage: pauseweb <--ADSPath|-a server1[,server2,server3...]>"
    WScript.Echo "               [--computer|-c COMPUTER1[,COMPUTER2...]]"
	WScript.Echo "               [--verbose|-v]"
	WScript.Echo "               [--help|-?]"
	WScript.Echo "Note: server1, server2, etc. is the number of the server"
	WScript.Echo "Example 1: pauseweb -a 1,2,5"
	WScript.Echo "Example 2: pauseweb -c MACHINE1,MACHINE2,MACHINE3 -a 1,2,5"
	WScript.Quit (1)
End Sub