#############################################################
# This function will create a handler for a specific
# adapter on the new host, so these get used for processing.
# [direction]: 'Receive','Send'
#############################################################
function CreateBizTalkAdapterHandler(
[string]$adapterName,
[string]$direction,
[string]$hostName,
[string]$originalDefaulHostName,
[boolean]$isDefaultHandler)
#[boolean]$removeOriginalHostInstance)
{
if($direction -eq 'Receive')
{
[System.Management.ManagementObject]$objAdapterHandler = ([WmiClass]"root/MicrosoftBizTalkServer:MSBTS_ReceiveHandler").CreateInstance()
$objAdapterHandler["AdapterName"] = $adapterName
$objAdapterHandler["HostName"] = $hostName
}
else
{
[System.Management.ManagementObject]$objAdapterHandler = ([WmiClass]"root/MicrosoftBizTalkServer:MSBTS_SendHandler2").CreateInstance()
$objAdapterHandler["AdapterName"] = $adapterName
$objAdapterHandler["HostName"] = $hostName
$objAdapterHandler["IsDefault"] = $isDefaultHandler
}
try
{
$putOptions = new-Object System.Management.PutOptions
$putOptions.Type = [System.Management.PutType]::CreateOnly;
[Type[]] $targetTypes = New-Object System.Type[] 1
$targetTypes[0] = $putOptions.GetType()
$sysMgmtAssemblyName = "System.Management"
$sysMgmtAssembly = [System.Reflection.Assembly]::LoadWithPartialName($sysMgmtAssemblyName)
$objAdapterHandlerType = $sysMgmtAssembly.GetType("System.Management.ManagementObject")
[Reflection.MethodInfo] $methodInfo = $objAdapterHandlerType.GetMethod("Put", $targetTypes)
$methodInfo.Invoke($objAdapterHandler, $putOptions)
Write-Host "$adapterName $direction Handler for $hostName was successfully created" -Fore DarkGreen
}
catch [System.Management.Automation.RuntimeException]
{
if ($_.Exception.Message.Contains("The specified BizTalk Host is already a receive handler for this adapter.") -eq $true)
{
Write-Host "$hostName is already a $direction Handler for $adapterName adapter." -Fore DarkRed
}
elseif($_.Exception.Message.Contains("The specified BizTalk Host is already a send handler for this adapter.") -eq $true)
{
Write-Host "$hostName is already a $direction Handler for $adapterName adapter." -Fore DarkRed
}
else {
write-Error "$adapterName $direction Handler for $hostName could not be created: $_.Exception.ToString()"
}
}
#if($removeOriginalHostInstance)
#{
#DeleteBizTalkAdapterHandler $adapterName $direction $originalDefaulHostName
#}
}
Когда я бегу
CreateBizTalkAdapterHandler -adapterName "WCF-WebHttp" -direction "Send" -hostName "ServiceProcessing" -originalDefaulHostName "BizTalkServerApplication" -isDefaultHandler 0
Создает обработчик отправки ServiceProcessing, но когда я использую
CreateBizTalkAdapterHandler -adapterName "WCF_WSHttp" -direction "Send" -hostName "PMProcessing" -originalDefaulHostName "BizTalkServerApplication" -isDefaultHandler 0
Я получаю сообщение об ошибке, когда имею дело с адаптером "WCF-WSHttp":
CreateBizTalkAdapterHandler: не удалось создать обработчик отправки WCF_WSHttp для PMOServiceProcessing: исключение, вызывающее «Invoke» с аргументами «2»: «Не найден экземпляр с указанным ключом. Это может быть результатом удаления экземпляра другим администратором BizTalk. session.".Exception.ToString() В строке:3 символ:1 + CreateBizTalkAdapterHandler -adapterName "WCF_WSHttp" -direction "Sen ... + ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId: Microsoft.PowerShell.Commands.WriteErrorException,CreateBizTalkAdapterHandler