Extended vbs to start/stop all BizTalk host instances in several servers
Warning: do not try this directly in production without test it!!!
Some services may require Administrator rights to be Started / Stopped
'-------------------------------------------------------'
' VBScript ActBizTalkServerInstance.vbs
' Sample script to Stop Or Start ALL BizTalk Services, it will return 0 if no errors found, 1 if any, and will exit when the error occurs (it will not finish the work).
' The Following example will stop all BizTalkHost instances in Server 1, 2 and 3
' SAMPLE USE: cScript ActBizTalkServerInstance STOP;Server1;Server2;Server3 (Note: without ";" at the end)
' Valid actions are : START or STOP
' Created by Agustín Mántaras Sept 2014
' -------------------------------------------------------'
Dim objWMIService, objItem, objService, str, ReturnCode,i, Action
Dim colListOfServices, strService, intSleep ,sComputers,g_aComputers
strComputer = "."
On Error Resume Next
Main
Sub Main
ProcessArguments
ReturnCode = 1 'By default the exit Code will be 1--> error
For i = 0 to UBound(g_aComputers)
'Looping through the parameters to get stop BizTalk Servers host intances in those machines
if i = 0 Then
'Parameter 0 should be the action to run --> START OR STOP
StrAction = g_aComputers(i)
if strAction <> "START" Then
if strAction <> "STOP" Then
ReturnCode = 1
end if
end if
Else
ActBizTalkServices g_aComputers(i),strAction
End if
if ReturnCode <> 0 then
Exit For
End if
Next
WScript.Echo ReturnCode 'Returning 0 or 1
WScript.Quit (ReturnCode)
End Sub 'Main
Sub ActBizTalkServices (strComputer,strAction)
' NB strService is case sensitive.
On Error Goto 0
On Error Resume Next
strService = " 'BTSSvc%' "
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where Name like "_
& strService & " ")
if err.Number = 0 Then
'Something Went wrong when getting server names
ReturnCode = 0
For Each objService in colListOfServices
On error GoTo 0
On Error Resume Next
IF strAction = "STOP" Then
objService.StopService()
Else
objService.StartService()
end if
if err.Number = 0 then
ReturnCode = 0 'The action was sussecfully
else
'Getting out the For loop since we get an error stopping a BizTalk Service
ReturnCode = err.number
Exit for
end if
Next
Else
ReturnCode = 1
end if
End Sub 'ActBizTalkServices
Sub ProcessArguments()
sSyntax = "CScript StopBizTalkServers.vbs ACTION [START/STOP];<computer[;computer]>" & vbNewLine & _
" <computer[;computer]> List of computers to create and start the perfmon log." & vbNewLine
Set oArgs = WScript.Arguments
SELECT CASE oArgs.Count
CASE 0
WScript.Echo sSyntax
WScript.Quit
CASE 1
sComputers = oArgs(0)
CASE Else
WScript.Echo sSyntax
WScript.Quit
END SELECT
' Change any localhost entryies to be a period for WMI.
g_aComputers = Split(sComputers, ";")
For i = 0 to UBound(g_aComputers)
If LCase(g_aComputers(i)) = "localhost" Then
g_aComputers(i) = "."
End If
Next
End Sub 'ProcessArguments