Создание местоположения получения и порта отправки в существующем приложении BizTalk с помощью Powershell - PullRequest
0 голосов
/ 28 февраля 2020

Мне нужно создать приемные местоположения и отправлять порты в уже существующем приложении BizTalk, используя Powershell. Я только видел некоторую документацию о том, как создать приложение, но не вызывать его. Любые предложения будут полезны. Есть некоторые вещи, которые закомментированы, и это потому, что я не могу раскрыть эту информацию. В последней части я добавил, что я узнал о том, как создать приложение, но это не то, что я хочу для своего сценария. Программа ниже - это то, что я имею до сих пор:

#===Create a receive port and location function===#

Function CreateRPandRL ()
{
    #Creating Receive Port
    $myReceivePort = $catalog.AddNewReceivePort($false)
    $myReceivePort.Name = "My Receive Port"

    #Creating Receive Location
    $myReceiveLocation = $myReceivePort.AddNewReceiveLocation()

    foreach ($handler in $catalog.ReceiveHandlers)
    {
        if ($handler.TransportType.Name -eq "FILE")
        {
            $myReceiveLocation.ReceiveHandler = $handler
            break
        }
    }

    #Associate a transport protocol and file location with receive location
    $myReceiveLocation.TransportType = $catalog.ProtocolTypes["FILE"]
    $myReceiveLocation.Address = #pick-up file location

    #Assign the first receive pipeline found to process the message
    foreach ($pipeline in $catalog.Pipelines)
    {
        if ($pipeline.Type -eq [Microsoft.BizTalk.ExplorerOM.PipelineType] "File_Receive")
        {
            $myReceiveLocation.ReceivePipeline = $pipeline
            break
        }

    #Enable the receive location
    $myReceiveLocation.Enable = $true
    }

    #Try to commit the changes made so far.  If the commit fails, roll back changes
    $catalog.SaveChanges()
}

Function CreateSendPorts($Catalog)
{
    #=== Register a trap handler to discard changes on exceptions ===#

    $ErrorActionPreference="silentlycontinue"
    trap { "Exception encountered:`r`n"; $_; "`r`nDiscarding Changes.`r`n";$Catalog.DiscardChanges();exit; }

    #=== create a new static one-way send port using FILE transport ===#

    $mySendPort = $Catalog.AddNewSendPort($false,$false)
    $mySendPort.Name = "My Send Port"
    $mySendPort.PrimaryTransport.TransportType = $catalog.ProtocolTypes["FILE"]
    $mySendPort.PrimaryTransport.Address = #drop-off file location
    $mySendPort.SendPipeline = $Catalog.Pipelines["Microsoft.BizTalk.DefaultPipelines.EdiSend"]

    #=== Persist new ports to BizTalk configuration database ===#

    Write-Host "Adding $mySendPort.Name..."
    $catalog.SaveChanges();
    Write-Host "`r`n $mySendPort.Name has been created."

    #=== specify filters for content-based routing ===#
    Write-Host $mySendPort.Name: Adding a filter
    $mySendPort.Filter = "<Filter><Group>" +
                       "<Statement Property='EDI.ISA06' Operator='0' Value='9999999999'/>" +
                       "<Statement Property='EDI.ST01' Operator='0' Value='999'/>" +
                       "<Statement Property='EDI.IsSystemGeneratedAck' Operator='0' Value='true'/>" +
                       "<Statement Property='BTS.ReceivePortName' Operator='0' Value= $myReceivePort.Name/>" +
                       "</Group></Filter>"
    #=== Persist all changes to BizTalk configuration database ===#

    Write-Host $mySendPort.Name + ": Saving changes"
    $catalog.SaveChanges();
    Write-Host "`r`nFilters for $mySendPort.Name created"

    #===========Changing Send Port status===========#

    #Register a trap handler to discard changes on exceptions
    $ErrorActionPreference="silentlycontinue"
    trap { "Exception encountered:`r`n"; $_; "`r`nDiscarding Changes.`r`n";$Catalog.DiscardChanges();exit; }

    #start the send port to begin processing messages
    $mySendPort.Status = [Microsoft.BizTalk.ExplorerOM.PortStatus] "Started"
    Write-Host "Changing" + $mySendPort.Name + "status to ($mySendPort.Status)..."
    $catalog.SaveChanges()
    Write-Host "Complete."


}
#===Main Script===#

#make sure the ExplorerOM assembly is loaded
[void][System.reflection.Assembly]::LoadwithPartialName("Microsoft.BizTalk.ExplorerOM")

#Connect to the BizTalk management database
$Catalog = New-Object Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer
$Catalog.ConnectionString = "SERVER = #server_address; DATABASE=BizTalkMgmtDB; Integrated Security=SSPI"

#Implementing functions
CreateRPandRL
CreateSendPorts

Start-Sleep -Seconds 60


<#
#===BizTalk Application===#
$app = $Catalog.AddNewApplication()
$app.Name = "TestingPowershellScript"
$app.CreateRPandRL()
$app.CreateSendPorts()
#>

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Мой совет, даже не пытайтесь это сделать. Большинство полезных настроек для Адаптеров не предоставляются никаким API, так что вы получите максимум половину пути.

Вместо этого, выполните сценарий импорта файла привязки, который поддерживает все настройки для всех Адаптеров.

1 голос
/ 28 февраля 2020

Ха, мальчик, это возвращает меня на несколько лет назад, я рад, что я не единственный, кто борется с этим. Вы хотите оставить это в покое и переключиться на BizTalk PowerShell Extensions (информация об этом отрывочна), с ними оооочень проще работать в PowerShell.

Я собрал это вместе с некоторыми Сценарии, которые я использовал, и не учли некоторые интересные вещи, но в основном вы хотите:

$InitializeDefaultBTSDrive = $false
Import-Module "$env:BTSINSTALLPATH\SDK\Utilities\PowerShell\BizTalkFactory.PowerShell.Extensions.dll" -WarningAction Ignore

New-PSDrive -Name BizTalk -PSProvider BizTalk -Root BizTalk:\ -Instance $DatabaseName -Database $BizTalkMgmtDb

Это открывает целый мир вкусностей, потому что он загружен как PSDrive, вы можете перемещаться по нему создавать вещи, удалять вещи, использовать их как родные для любых других дисков / файловых систем, например:

Get-ChildItem "BizTalk:\All Artifacts\Receive Locations"
Get-ChildItem "BizTalk:\All Artifacts\Receive Locations" | Disable-ReceiveLocation

Get-ChildItem "BizTalk:\Platform Settings\Host Instances" | Stop-HostInstance
Get-ChildItem "BizTalk:\Platform Settings\Host Instances" | Where-Object { $_.IsDisabled -eq $false  } | Start-HostInstance

Get-ChildItem "BizTalk:\All Artifacts\Receive Locations" | Enable-ReceiveLocation

Get-ChildItem -Path "BizTalk:\Health and Activity\Service Instances"

Это намного больше, чем указано выше, и ни один из них не является тем, о чем вы действительно просили, что вы на самом деле хотите:

Import-Bindings -Path "BizTalk:" -Source $bindings

Где $bindings - это файл XML привязок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...