Автоматическая / тихая установка Biztalk через powershell - PullRequest
2 голосов
/ 07 сентября 2011

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

Основные элементы:

  • SQL-сервер 2008 R2
  • Biztalk
  • IIS

Я обнаружил, что вполне могу автоматизировать SQL-серверхорошо со сценарием конфигурации, он создает первый раз, когда вы запускаете его, а также нашел некоторые детали для установки IIS с необходимыми функциями из командной строки, однако у меня проблемы с biztalk.

Соответствующая версия Biztalk - 2009, и янужно только установить «компоненты бизнес-правил», найденные в разделе «дополнительное программное обеспечение».Я искал в сети, и все руководства, кажется, ссылаются на автоматизацию конфигурации biztalk, а не на фактическую установку.

Кто-нибудь знает способ получения файла конфигурации для установки biztalk после установки или сгенерировать его просто дляустановить один компонент, который мне нужен без вывода сообщений?

В таком случае я планирую просто использовать powershell для вызова каждого установщика один за другим и запускать их с соответствующими файлами конфигурации один за другим, так как это кажется самым простымрешение.

1 Ответ

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

Установка BizTalk без присмотра довольно проста. Сначала вы устанавливаете BizTalk на «эталонный» компьютер со всеми ожидаемыми параметрами, а затем генерируете файл «шаблона», который вы предоставляете при установке на другие компьютеры. Вот часть сценария, который я написал для этого:

$bizTalkFeatureFile = (Create-Unattended-Install-Config-File $global:RootInstallDir)
$bizTalkLogFile = $global:LogPath + "\BizTalkInstall_" + $(Get-Date).ToString("yyyy-MM-dd_HH_mm") + ".log"

$ExitCode = 0
Log-Info "`t`t$($MyInvocation.InvocationName): Starting unattended BizTalk installation from features file: $bizTalkFeatureFile"
if ($Is32bit) { $ExitCode = (Launch-Process "$global:BizTalkInstallDir\setup" "/CABPATH $bizTalkRunTimeDir\BTSRedistW2K8EN32.cab /S $bizTalkFeatureFile /L $bizTalkLogFile") }
if ($Is64bit) { $ExitCode = (Launch-Process "$global:BizTalkInstallDir\setup" "/CABPATH $bizTalkRunTimeDir\BTSRedistW2K8EN64.cab /S $bizTalkFeatureFile /L $bizTalkLogFile") }
if ($ExitCode -ne 0) 
{ throw "BizTalk installation failed. See $BizTalkLogFile content" }
Log-Info "`t`t$($MyInvocation.InvocationName): BizTalk features installed"

Configure-BizTalk $bizTalkFeatureFile $bizTalkLogFile

Create-Unattended-Install-Config-File использует файл XML, сгенерированный при экспорте конфигурации с эталонного компьютера, и «настраивает» его для системы, на которой вы хотите установить BizTalk (замена базы данных, экземпляра, паролей и т. с фактическими значениями):

function Create-Unattended-Install-Config-File
{
    param (
        [parameter(Mandatory = $true)][string] $baseDir
    )

    Log-Info "`t`t$($MyInvocation.InvocationName): Creating unattended installation configuration file"

    try
    {
        $Error.Clear()

        if ($Is64bit)
            { $bizTalkFeatureFileTemplate = $baseDir + "\ConfigFiles\Templates\BizTalk64HealthLink_Template.xml" }
        else { $bizTalkFeatureFileTemplate = $baseDir + "\ConfigFiles\Templates\BizTalkHealthLink_Template.xml" }

        $bizTalkFeatureFile = $baseDir + "\ConfigFiles\BizTalk_HealthLink.xml"

        if (Test-Path $bizTalkFeatureFile)
            { Remove-Item $bizTalkFeatureFile }

        Copy-Item $bizTalkFeatureFileTemplate $bizTalkFeatureFile

        $Domain = (Get-Domain-Name)

        Replace-Word $bizTalkFeatureFile "@@DatabaseServer@@" $DatabaseServer
        Replace-Word $bizTalkFeatureFile "@@INSTANCENAME@@" $INSTANCENAME
        Replace-Word $bizTalkFeatureFile "@@HealthLinkUser@@" $HealthLinkUser
        Replace-Word $bizTalkFeatureFile "@@Password@@" $Password
        Replace-Word $bizTalkFeatureFile "@@Domain@@" $Domain

        Replace-Word $bizTalkFeatureFile "@@SSOAdministrators@@" $SSOAdministrators
        Replace-Word $bizTalkFeatureFile "@@SSOAffiliateAdministrators@@" $SSOAffiliateAdministrators
        Replace-Word $bizTalkFeatureFile "@@BizTalkServerAdministrators@@" $BizTalkServerAdministrators
        Replace-Word $bizTalkFeatureFile "@@BizTalkServerOperators@@" $BizTalkServerOperators
        Replace-Word $bizTalkFeatureFile "@@BizTalkApplicationUsers@@" $BizTalkApplicationUsers
        Replace-Word $bizTalkFeatureFile "@@BizTalkIsolatedHostUsers@@" $BizTalkIsolatedHostUsers

        Replace-Word $bizTalkFeatureFile "@@SSO_ID_BACKUP_SECRET_FILE@@" $SSO_ID_BACKUP_SECRET_FILE
        Replace-Word $bizTalkFeatureFile "@@SSO_ID_BACKUP_SECRET_PASSWORD@@" $SSO_ID_BACKUP_SECRET_PASSWORD
        Replace-Word $bizTalkFeatureFile "@@SSO_ID_BACKUP_SECRET_PASSWORD_CONFIRM@@" $SSO_ID_BACKUP_SECRET_PASSWORD_CONFIRM
        Replace-Word $bizTalkFeatureFile "@@SSO_ID_BACKUP_SECRET_REMINDER@@" $SSO_ID_BACKUP_SECRET_REMINDER
    }

    catch
    {
        Log-Error "`t`t$($MyInvocation.InvocationName): $_"
    }

    Log-Info "`t`t$($MyInvocation.InvocationName): Configuration file created ($sqlConfigFile)"

    return $bizTalkFeatureFile
}

Наконец, функция Configure-BizTalk использует тот же файл конфигурации для фактического создания баз данных BizTalk, настройки ENTSSO и т. Д.:

function Configure-BizTalk
{
    param (
        [parameter(Mandatory = $true)][string] $bizTalkFeatureFile,
        [parameter(Mandatory = $true)][string] $bizTalkLogFile
    )

    Log-Info "`t`t$($MyInvocation.InvocationName): Configuring BizTalk from features file: $bizTalkFeatureFile"

    try
    {
        $Error.Clear()

        $ExitCode = 0
        $ExitCode = (Launch-Process "$global:ProgramFiles32\Microsoft BizTalk Server 2009\Configuration.exe" "/s `"$bizTalkFeatureFile`" /l `"$bizTalkLogFile`"")
        if ($ExitCode -ne 0) 
            { throw "BizTalk configuration failed. See $bizTalkLogFile content" }
    }

    catch
    {
        Log-Error "`t`t$($MyInvocation.InvocationName): $_"
    }

    Log-Info "`t`t$($MyInvocation.InvocationName): BizTalk configured"

}

Конечно, вы не можете использовать приведенный выше код "как есть", но я надеюсь, что он может дать вам общее представление о том, как действовать.

...