Отключить BizTalk получения местоположений и остановить время завершения экземпляров узлов :: сценарий PowerShell против консоли администрирования BizTalk - PullRequest
0 голосов
/ 07 августа 2020

Мой сценарий PowerShell для отключения местоположения приема и остановки экземпляра узла занимает больше времени по сравнению с выполнением той же задачи из консоли администратора BizTalk. В моей среде у меня более 200 мест приема и хост-экземпляров. см. статистику завершения задачи ниже -

Консоль администратора BizTalk: Отключить RL :: около 2 минут, остановить экземпляры хоста :: около 5 минут

Сценарий PowerShell : Отключить RL :: 30-40 минут, остановить экземпляры хоста :: около 30 минут

----------- Отключить место приема BizTalk -------- -

$rcvLocations = get-wmiobject MSBTS_ReceiveLocation -Namespace 'root\MicrosoftBizTalkServer' -Filter {IsDisabled = "False"}

foreach($rcvLocation in $rcvLocations){ 
   [void]$rcvLocation.Disable()
}

------------- Остановить экземпляр узла BizTalk ------------

$hostInstances = Get-WmiObject MSBTS_HostInstance -Namespace 'root/MicrosoftBizTalkServer' -Filter {HostType = 1 and ServiceState = 4 and IsDisabled = "False"} 

foreach($hostinstance in $hostInstances){ 
    $hostinstance.Stop()
}

I буду признателен!

Если время выполнения моей задачи из скрипта PowerShell примерно такое же, как из консоли администратора Bts.

1 Ответ

0 голосов
/ 13 августа 2020

Может быть, что-то вроде этого, изменив лайк на любой шаблон, который вы хотите, в зависимости от имени вашего хоста.

$StartTime = $(get-date)

Start-Job -ScriptBlock {
    $hostInstances = Get-WmiObject MSBTS_HostInstance -Namespace 'root/MicrosoftBizTalkServer' -Filter {HostType = 1 and ServiceState = 4 and IsDisabled = "False" }
    foreach($hostinstance in $hostInstances){ 
        if ($hostinstance.HostName -Like "*Receiving*" -or $hostinstance.HostName -Like "*Clustered*")
        {
          $hostinstance.Stop()
        }
    }
}

Start-Job -ScriptBlock {
    $hostInstances = Get-WmiObject MSBTS_HostInstance -Namespace 'root/MicrosoftBizTalkServer' -Filter {HostType = 1 and ServiceState = 4 and IsDisabled = "False" }
    foreach($hostinstance in $hostInstances){ 
        if ($hostinstance.HostName -Like "*Sending*")
        {
          $hostinstance.Stop()
        }
    }
}


Start-Job -ScriptBlock {
    $hostInstances = Get-WmiObject MSBTS_HostInstance -Namespace 'root/MicrosoftBizTalkServer' -Filter {HostType = 1 and ServiceState = 4 and IsDisabled = "False" }
    foreach($hostinstance in $hostInstances){ 
        if ($hostinstance.HostName -Like "*Processing*")
        {
          $hostinstance.Stop()
        }
    }
}

While (Get-Job -State "Running")
{
  Start-Sleep 10
}


$elapsedTime = $(get-date) - $StartTime

$totalTime = "{0:HH:mm:ss}" -f ([datetime]$elapsedTime.Ticks)

Write-Host "Total Time: $totalTime"
...