Resource.Manifest PowerShell Module
Build Pipelines
Latest Release
Release Preview
Overview
Resource.Manifest is a PowerShell module providing commands to define resource manifests made of resource groups —i.e. resources grouped by kind. Resource manifests are declarative Microsoft BizTalk Server® deployment recipes that can be entrusted to the BizTalk.Deployment PowerShell module, which will take care of the actual deployment.
Tips Commands provided by the
Resource.ManifestPowerShellmodule beginning with theNewverb have been provided with an alias that is equivalent to the noun part of the command name without the verb; e.g.Assemblyis the alias for theNew-Assemblycommand. For thePowerShellnewbies, you can retrieve all the commands and aliases defined by theResource.Manifestmodule via the followingPowerShellcommands:Get-Command -Module Resource.Manifest Get-Alias | Where-Object Source -eq Resource.ManifestThe aliases have been provided so as to make the manifests more intuitive to write and understand. Only the aliases will consequently be used in the subsequent documentation.
Resource Manifests
There are two commands that allows to create resource manifests:
LibraryManifest [-Name] <string> [[-Description] <string>] [-Build] <ScriptBlock> [<CommonParameters>]
ApplicationManifest [-Name] <string> [[-Description] <string>] [[-Reference] <string[]>] [[-WeakReference] <string[]>] [-Build] <ScriptBlock> [<CommonParameters>]
LibraryManifest is a command used to define deployment manifest for Microsoft BizTalk Server® packages that have no BizTalkMgmtDb footprint, in other words, packages that do not contain Microsoft BizTalk Server® artifacts such as orchestrations, pipelines, maps, schemas, bindings, and so on; see for instance the BizTalk.Factory runtime manifest.
ApplicationManifest is a command used to define deployment manifest for Microsoft BizTalk Server® packages that do have a BizTalkMgmtDb footprint, in other words, packages that contain Microsoft BizTalk Server® artifacts such as orchestrations, pipelines, maps, schemas, bindings, and so on; see for instance the BizTalk.Factory application manifest or the BizTalk.Factory.Batching application manifest.
As illustrated by the previously mentioned manifests, the Build parameter accepts a script block that actually defines the various resources, or resource groups, that are composing the manifest.
The WeakReference parameter accepts a list of names of Microsoft BizTalk Server® applications that this application requires at runtime to operate correctly. This parameter comes with no BizTalkMgmtDb footprint and will merely check at deployment time that the listed weakly referenced applications are present.
The Reference parameter accepts a list of names of Microsoft BizTalk Server® applications that this application must refer to in order for its artifacts to be successfully deployed, for instance because one of its own resources uses a pipeline or a schema that is deployed by one the applications it refers to. By opposition to the WeakReference parameter, this strong Reference parameter comes with a BizTalkMgmtDb footprint.
Remark If you run the following
PowerShellcommand:Get-Command -Module Resource.Manifest -Noun *Manifestyou will notice that there actually is a third command that allows to create resource manifest:
New-ResourceManifest [-Type] <string> [-Name] <string> [[-Description] <string>] [[-ItemUnicityScope] {Manifest | Resource | None}] [-Build] <ScriptBlock> [[-UnboundArguments] <Object[]>] [<CommonParameters>]
New-ResourceManifesthowever is only meant to be used by developers who wish to extend theResource.Manifestmodule and has not been provided with an alias, which should be a hint that this command is not meant to be used for any other purpose than extensibility ones.
Resource Groups
Resource.Manifest supports the following resources, where each resource is just a parameterized description of what needs to deployed. The parameters of a resource command matches the parameters that its actual deployment command defines; for instance to deploy an assembly to the GAC the Add-GacAssembly command mainly needs two parameters, a Path and an InstallReference, that the Assembly resource defining command supports as well.
Assembly [-Path] <PSObject[]> [[-InstallReference] <string>] [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
BamActivityModel [-Path] <PSObject[]> [[-InstallReference] <string>] [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
BamIndex [-Name] <string[]> [-Activity] <string> [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
Binding [-Path] <PSObject[]> [[-AssemblyProbingFolderPath] <string[]>] [[-EnvironmentSettingOverridesTypeName] <string>] [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
EventLogSource [[-LogName] <string>] [-Name] <string[]> [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
File -Path <PSObject[]> -DestinationFile <PSObject[]> [-Condition <PSObject>] [-PassThru] [<CommonParameters>]
File -Path <PSObject[]> -DestinationFolder <PSObject[]> [-Condition <PSObject>] [-PassThru] [<CommonParameters>]
Installer [-Path] <PSObject[]> [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
Map [-Path] <PSObject[]> [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
Orchestration [-Path] <PSObject[]> [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
Pipeline [-Path] <PSObject[]> [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
PipelineComponent [-Path] <PSObject[]> [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
ProcessDescriptor [-Path] <PSObject[]> [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
Schema [-Path] <PSObject[]> [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
ServiceComponent [-Path] <PSObject[]> [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
SqlDatabase [-Name] <String[]> [-Server] <String> [-Path] <PSObject> [-EnlistInBizTalkBackupJob] [[-Variable] <HashTable>] [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
SqlDeploymentScript [-Path] <PSObject[]> [-Server] <string> [[-Database] <string>] [[-Variable] <HashTable>] [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
SqlUndeploymentScript [-Path] <PSObject[]> [-Server] <string> [[-Database] <string>] [[-Variable] <HashTable>] [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
SsoConfigStore [-Path] <PSObject[]> [[-AdministratorGroup] <string[]>] [[-UserGroup] <string[]>] [[-AssemblyProbingFolderPath] <string[]>] [[-EnvironmentSettingOverridesTypeName] <string>] [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
WindowsService [-Path] <PSObject> [-Name] <string> [-Credential] <PSCredential> [[-Description] <string>] [[-DisplayName] <string>] [[-StartupType] {Automatic | AutomaticDelayedStart | Disabled | Manual}] [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
XmlConfiguration [-Path] <PSObject[]> [[-Condition] <PSObject>] [-PassThru] [<CommonParameters>]
XmlConfigurationAction -Path <string[]> -Delete <string> [-Condition <PSObject>] [-PassThru] [<CommonParameters>]
XmlConfigurationAction -Path <string[]> -Update <string> -Attribute <HashTable> [-Condition <PSObject>] [-PassThru] [<CommonParameters>]
XmlConfigurationAction -Path <string[]> -Append <string> -Name <string> [-Attribute <HashTable>] [-Condition <PSObject>] [-PassThru] [<CommonParameters>]
XmlUnconfigurationAction -Path <string[]> -Delete <string> [-Condition <PSObject>] [-PassThru] [<CommonParameters>]
XmlUnconfigurationAction -Path <string[]> -Update <string> -Attribute <HashTable> [-Condition <PSObject>] [-PassThru] [<CommonParameters>]
XmlUnconfigurationAction -Path <string[]> -Append <string> -Name <string> [-Attribute <HashTable>] [-Condition <PSObject>] [-PassThru] [<CommonParameters>]
Remark In the previously mentioned manifests, one cannot help but notice the heavy use of the
Get-ResourceItemcommand, which is a utility command that recursively look for unique resource files on disk underneath the manifest’s current folder. Failure to locate exactly one resource on disk will throw an exception.Use of this command is optional and the manifest developer can provide the resource path in any other way he sees fit
Remark There exists a
New-ResourceItemcommand, similarly to theNew-ResourceManifestone, that is only meant to be used by developers who wish to extend theResource.Manifestmodule and has not been provided with an alias, which should be a hint that this command is not meant to be used for any other purpose than extensibility ones.
Installation
In order to be able to install the PowerShell module, you might have to trust the be.stateless’s certificate public key beforehand; see these instructions for details on how to proceed.