【问题标题】:Automated/silent install of Biztalk via powershell通过 powershell 自动/静默安装 Biztalk
【发布时间】:2011-11-11 22:19:33
【问题描述】:

我的任务是自动化一些先决条件安装,每次我们创建一个新的空白虚拟机以推出内部软件以进行测试/错误发现时都需要完成这些安装。

主要项目有:

  • SQL Server 2008 R2
  • 商务谈话
  • IIS

我发现我可以使用它在您第一次运行它时创建的配置脚本很好地自动化 SQL 服务器,并且还找到了一些从命令行安装具有所需功能的 IIS 的详细信息,但是在使用 biztalk 时遇到了问题。

Biztalk的版本是2009,我只需要安装“附加软件”下的“业务规则组件”即可。我在网上搜索过,所有指南似乎都指的是自动配置 biztalk,而不是实际安装。

有谁知道如何为 biztalk 安装后获取配置文件或生成一个纯粹用于静默安装我需要的一个组件的方法?

我的计划是基本上只使用 powershell 一个接一个地调用每个安装程序,并一个接一个地启动它们及其关联的配置文件,因为这似乎是最简单的解决方案。

【问题讨论】:

    标签: powershell biztalk silent-installer


    【解决方案1】:

    在无人值守的情况下安装 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"
    

    }

    当然,您不能“按原样”使用上面的代码,但我希望它可以让您大致了解如何继续。

    【讨论】:

      猜你喜欢
      • 2022-10-05
      • 1970-01-01
      • 2022-11-24
      • 2019-03-15
      • 2011-08-19
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 2015-01-03
      相关资源
      最近更新 更多