This blog contains a sample VBScript to start a BizTalk Orchestration
The SDK (Software Development Kit) of BizTalk includes a sample to stop orchestrations.
“c:\Program Files (x86)\Microsoft BizTalk Server 2010\SDK\Samples\Admin\WMI\Stop Orchestration\VBScript\StopOrch.vbs”
I guess, since it is just a sample, they chose not to provide the opposite to “Start” orchestrations.
I was having to deploy just a .DLL, not entire MSI over and over, so I started to make a script to do it. I need to stop the orchestration, run BTSTask with the AddResource option, then start the orchestration.
The trick is that you have to Enlist it before Starting it. So I run both the .Enlist and the .Start methods, one right after the other. I removed the optional UNENLIST parm.
Below is the VBScript:
<pre>
'--------------------------------------------------------------------------
'
' ScriptName: StartOrch.vbs
' WMI script to start a specific orchestration.
' Neal Walters - 02/10/2016 took StopOrch.vbs in BizTalk SDK to make StartOrch.vbs
'
'--------------------------------------------------------------------------
' This file is based on samples in the Microsoft BizTalk Server 2009 SDK
'--------------------------------------------------------------------------
Option Explicit
StartOrch
Sub StartOrch()
'Get the command line arguments entered for the script
Dim objArgs: Set objArgs = WScript.Arguments
'error handling is done by explicity checking the err object rather than using
'the VB ON ERROR construct, so set to resume next on error.
on error resume next
'Make sure the expected number of arguments were provided on the command line.
'if not, print usage text and exit.
If (objArgs.Count <> 2) Then
PrintUsage()
wscript.quit 0
End If
Dim InstSet, Inst, Query, OrchestrationName, AssemblyName, Unenlist
Dim AutoDisableReceiveLocation: AutoDisableReceiveLocation = 2
Dim AutoSuspendOrchestrationInstance: AutoSuspendOrchestrationInstance = 2
OrchestrationName = objArgs(0)
AssemblyName = objArgs(1)
'set up a WMI query to acquire a list of orchestrations with the given Name and
'AssemblyName key values. This should be a list of zero or one Orchestrations.
WScript.Echo "Orch=" & OrchestrationName
WScript.Echo "AssemblyName=" & AssemblyName
Query = "SELECT * FROM MSBTS_Orchestration WHERE Name =""" & OrchestrationName & """ AND AssemblyName = """ & AssemblyName & """"
WScript.Echo "Query=" & Query
Set InstSet = GetObject("Winmgmts:!root\MicrosoftBizTalkServer").ExecQuery(Query)
'Check for error condition before continuing.
If Err <> 0 Then
PrintWMIErrorThenExit Err.Description, Err.Number
End If
'If orchestration found, enlist the orchestration, otherwise print error and end.
If InstSet.Count > 0 then
For Each Inst in InstSet
Inst.Enlist
If Err <> 0 Then
PrintWMIErrorThenExit Err.Description, Err.Number
End If
Inst.Start
If Err <> 0 Then
PrintWMIErrorThenExit Err.Description, Err.Number
End If
wscript.echo "The Orchestration was successfully started."
Next
Else
wscript.echo "No orchestration was found matching that Name and AssemblyName. InstSet.Count=0"
End If
End Sub
'This subroutine deals with all errors using the WbemScripting object. Error descriptions
'are returned to the user by printing to the console.
Sub PrintWMIErrorThenExit(strErrDesc, ErrNum)
On Error Resume Next
Dim objWMIError : Set objWMIError = CreateObject("WbemScripting.SwbemLastError")
If ( TypeName(objWMIError) = "Empty" ) Then
wscript.echo strErrDesc & " (HRESULT: " & Hex(ErrNum) & ")."
Else
wscript.echo objWMIError.Description & "(HRESULT: " & Hex(ErrNum) & ")."
Set objWMIError = nothing
End If
'bail out
wscript.quit 0
End Sub
Sub PrintUsage()
WScript.Echo "Usage:" + Chr(10) + Chr(10) + _
"cscript StartOrch.vbs <Orchestration Name> <Assembly Name>" + _
Chr(10) + Chr(10) + "Where: " + Chr(10) + _
"<Orchestration Name> = The name of the orchestration you wish to enlist." + _
Chr(10) + " Example: 'MyBusinessOrchestration'" + Chr(10) + Chr(10) + _
"<Assembly Name> = The name of the assembly in which the orchestration was deployed." + _
Chr(10) + " Example: 'MyBusinessAssembly'" + Chr(10) + Chr(10) + _
Chr(10) + " Example: 'Unenlist'" + Chr(10) + Chr(10)
End Sub
</pre>
To run it:
cscript “VBScript\StartOrch.vbs” “ProjNamespace.OrchName” “AppName”