Biztalk: Delete ReceiveLocation using WMI and VBScript
The default samples that are shipped with the Biztalk SDK do not contain code to delete a ReceiveLocation. Here is something I've written that will delete a ReceiveLocation, specified on the command line.
Please note that:
- this is a very-very basic script (e.g. no checks on primary ReceiveLocation)
- I know nothing about VBScript, so if you want parts of it nominated as a WTF, go ahead, make my day ;)
Option Explicit
RemoveRecLoc
Sub RemoveRecLoc()
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
Dim strReceiveLocation
strReceiveLocation = objArgs(0)
Dim InstSet, Inst
set InstSet = GetObject ("winmgmts:\root\MicrosoftBizTalkServer").InstancesOf("MSBTS_ReceiveLocation")
Dim objReceivePort
'Check for error condition before continuing.
If Err <> 0 Then
PrintWMIErrorThenExit Err.Description, Err.Number
End If
'Report on number of receive locations found and list each one.
wscript.echo "A Total of " & InstSet.Count & " Receive Locations were found."
If InstSet.Count > 0 Then
For Each Inst In InstSet
If Inst.Name = strReceiveLocation Then
wscript.echo "Receive Location Name : " & Inst.Name
Inst.Delete_()
wscript.echo " Deleted ..."
End If
next
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
Comments