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.Manifest
PowerShell
module beginning with theNew
verb have been provided with an alias that is equivalent to the noun part of the command name without the verb; e.g.Assembly
is the alias for theNew-Assembly
command. For thePowerShell
newbies, you can retrieve all the commands and aliases defined by theResource.Manifest
module via the followingPowerShell
commands:Get-Command -Module Resource.Manifest Get-Alias | Where-Object Source -eq Resource.Manifest
The 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
PowerShell
command:Get-Command -Module Resource.Manifest -Noun *Manifest
you 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-ResourceManifest
however is only meant to be used by developers who wish to extend theResource.Manifest
module 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-ResourceItem
command, 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-ResourceItem
command, similarly to theNew-ResourceManifest
one, that is only meant to be used by developers who wish to extend theResource.Manifest
module 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.