Отмена связывания оркестровок BizTalk с PowerShell - PullRequest
1 голос
/ 25 января 2012

Какой самый простой способ отсоединить оркестровку с помощью PowerShell?

Мне бы хотелось, чтобы что-то работало как на 32-битной, так и на 64-битной платформе.

Я знаю, что могу загрузить и использовать сборку Microsoft.BizTalk.ExplorerOM (форсировать 32-битный режим с чем-то вроде «Start-Job -RunAs32») и сделать что-то похожее на то, что объясняется здесь: http://msdn.microsoft.com/en-us/library/dd792703(v=bts.10).aspx

Но я бы хотел найти что-нибудь получше.

1 Ответ

1 голос
/ 25 января 2012

Я вижу пример сценария, который вы связали, загружает эту DLL из GAC:

[System.reflection.Assembly]::LoadWithPartialName("Microsoft.BizTalk.ExplorerOM")

Я не знаком с этой сборкой, но если она предварительно скомпилирована в x86 в GAC, вам необходимо загрузить ее с 32-битной PowerShell (в 64-битной системе Windows). В вашем скрипте вы можете проверить, что такое битность процесса PowerShell:

if ( [IntPtr]::Size -eq 4 ) { # x86 } else { # x64  }

Если ваш скрипт не работает с нужной битностью, я могу подумать о трех вещах:

  1. Запустите 32-битное фоновое задание, как вы заметили
  2. Перезапустите ваш скрипт, используя 32-битную PowerShell (не работает, если у вашего скрипта есть параметры):

    if (-not $correctBitness) { 
        Start-Process "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -ArgumentList "-file", $Invocation.MyCommand.Path
        exit 
    } 
    
  3. Скажите пользователю, что ему нужно перезапустить скрипт, используя 32-битную PowerShell, и выйти.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...