Commands/ApplicationBinding/ApplicationBinding.ps1
#region Copyright & License # Copyright © 2012 - 2022 François Chabot # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #endregion Set-StrictMode -Version Latest <# .SYNOPSIS Converts Code-First BizTalk Application Bindings to XML. .DESCRIPTION Loads an .NET assembly containing the BizTalk Application Bindings written in BizTalk.Factory's C#-embedded Domain Specific Languages (DSL) and converts them to XML. .PARAMETER ApplicationBindingAssemblyFilePath The path of the .NET assembly containing the Code-First BizTalk Application Bindings. .PARAMETER AssemblyProbingFolderPath Optional list of folders where to look into for .NET assemblies required to load the .NET application binding assembly and output the XML BizTalk Application Bindings. .PARAMETER EnvironmentSettingOverridesTypeName .PARAMETER Isolated Whether to load the .NET application binding assembly in a separate process in order not to lock the .NET application binding assembly. .PARAMETER OutputFilePath Path of the generated file that will contain the XML BizTalk Application Bindings. .PARAMETER TargetEnvironment The target environment for which to produce the XML BizTalk Application Bindings. Other values than the ones suggested in accordance to BizTalk Factory Conventions are accepted. .EXAMPLE PS> Convert-ApplicationBinding -ApplicationBindingAssemblyFilePath Be.Stateless.BizTalk.Factory.Batching.Binding.dll -OutputFilePath Bindings.xml -TargetEnvironment DEV Silently converts the .NET application binding assembly to XML. .EXAMPLE PS> Convert-ApplicationBinding -ApplicationBindingAssemblyFilePath Be.Stateless.BizTalk.Factory.Activity.Tracking.Binding.dll -OutputFilePath Bindings.xml -TargetEnvironment DEV -InformationAction Continue -Verbose Converts the .NET application binding assembly to XML and provides detailed information during the process. .EXAMPLE PS> Convert-ApplicationBinding -ApplicationBindingAssemblyFilePath Be.Stateless.BizTalk.Factory.Activity.Tracking.Binding.dll -OutputFilePath Bindings.xml -TargetEnvironment DEV -Isolated -InformationAction Continue -Verbose Converts the .NET application binding assembly to XML in a separate process and provides detailed information during the process. .NOTES © 2022 be.stateless. #> function Convert-ApplicationBinding { [CmdletBinding()] [OutputType([void])] param( [Alias('Path')] [Parameter(Position = 0, Mandatory = $true)] [ValidateNotNullOrEmpty()] [ValidateScript( { Test-Path -Path $_ -PathType Leaf } )] [string] $ApplicationBindingAssemblyFilePath, [Alias('ProbingPath')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [ValidateScript({ $_ | Test-Path -PathType Container })] [string[]] $AssemblyProbingFolderPath, [Alias('SettingsTypeName')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [string] $EnvironmentSettingOverridesTypeName, [Parameter(Mandatory = $false)] [switch] $Isolated, [Alias('Destination')] [Parameter(Position = 1, Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $OutputFilePath, [Alias('Environment')] [Parameter(Position = 2, Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $TargetEnvironment ) Resolve-ActionPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState $arguments = Get-CoreCommandArguments $PSBoundParameters if ($Isolated) { Write-Information 'Dispatching Conversion of Code-First BizTalk Application Bindings to XML to Isolated Process...' Invoke-Command -ComputerName $env:COMPUTERNAME -UseSSL -ScriptBlock { Import-Module $using:coreModulePath Convert-CoreApplicationBinding @using:arguments } } else { Convert-CoreApplicationBinding @arguments } } function Expand-ApplicationBinding { [CmdletBinding()] [OutputType([void])] param( [Alias('Path')] [Parameter(Position = 0, Mandatory = $true)] [ValidateNotNullOrEmpty()] [ValidateScript( { Test-Path -Path $_ -PathType Leaf } )] [string] $InputFilePath, [Alias('Destination')] [Parameter(Position = 1, Mandatory = $false)] [ValidateNotNullOrEmpty()] [string] $OutputFilePath, [Parameter(Mandatory = $false)] [switch] $Trim ) Resolve-ActionPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState Expand-CoreApplicationBinding @PSBoundParameters } function Get-ApplicationHosts { [CmdletBinding()] [OutputType([void])] param( [Alias('Path')] [Parameter(Position = 0, Mandatory = $true)] [ValidateNotNullOrEmpty()] [ValidateScript( { Test-Path -Path $_ -PathType Leaf } )] [string] $ApplicationBindingAssemblyFilePath, [Alias('ProbingPath')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [ValidateScript({ $_ | Test-Path -PathType Container })] [string[]] $AssemblyProbingFolderPath, [Alias('SettingsTypeName')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [string] $EnvironmentSettingOverridesTypeName, [Parameter(Mandatory = $false)] [switch] $Isolated, [Alias('Environment')] [Parameter(Position = 2, Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $TargetEnvironment ) Resolve-ActionPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState $arguments = Get-CoreCommandArguments $PSBoundParameters if ($Isolated) { Write-Information 'Dispatching Enumeration of BizTalk Hosts Bound by Code-First BizTalk Application Bindings to Isolated Process...' Invoke-Command -ComputerName $env:COMPUTERNAME -UseSSL -ScriptBlock { Import-Module $using:coreModulePath Get-CoreApplicationHosts @using:arguments } } else { Get-CoreApplicationHosts @arguments } } function Initialize-ApplicationState { [CmdletBinding()] [OutputType([void])] param( [Alias('Path')] [Parameter(Position = 0, Mandatory = $true)] [ValidateNotNullOrEmpty()] [ValidateScript( { Test-Path -Path $_ -PathType Leaf } )] [string] $ApplicationBindingAssemblyFilePath, [Alias('ProbingPath')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [ValidateScript({ $_ | Test-Path -PathType Container })] [string[]] $AssemblyProbingFolderPath, [Alias('SettingsTypeName')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [string] $EnvironmentSettingOverridesTypeName, [Alias('Options')] [Parameter(Mandatory = $false)] [Be.Stateless.BizTalk.Dsl.Binding.Visitor.BizTalkServiceInitializationOptions] $InitializationOption = @('All'), [Parameter(Mandatory = $false)] [switch] $Isolated, [Alias('Environment')] [Parameter(Position = 2, Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $TargetEnvironment ) Resolve-ActionPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState $arguments = Get-CoreCommandArguments $PSBoundParameters if ($Isolated) { Write-Information 'Dispatching Initialization of BizTalk Services'' State to that Defined by Code-First BizTalk Application Bindings to Isolated Process...' Invoke-Command -ComputerName $env:COMPUTERNAME -UseSSL -ScriptBlock { Import-Module $using:coreModulePath Initialize-CoreApplicationState @using:arguments } } else { Initialize-CoreApplicationState @arguments } } function Install-ApplicationFileAdapterFolders { [CmdletBinding()] [OutputType([void])] param( [Alias('Path')] [Parameter(Position = 0, Mandatory = $true)] [ValidateNotNullOrEmpty()] [ValidateScript( { Test-Path -Path $_ -PathType Leaf } )] [string] $ApplicationBindingAssemblyFilePath, [Alias('ProbingPath')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [ValidateScript({ $_ | Test-Path -PathType Container })] [string[]] $AssemblyProbingFolderPath, [Alias('SettingsTypeName')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [string] $EnvironmentSettingOverridesTypeName, [Parameter(Mandatory = $false)] [switch] $Isolated, [Alias('Environment')] [Parameter(Position = 2, Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $TargetEnvironment, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string[]] $User ) Resolve-ActionPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState $arguments = Get-CoreCommandArguments $PSBoundParameters if ($Isolated) { Write-Information 'Dispatching Creation of Folders for File Adapters Defined by Code-First BizTalk Application Bindings to Isolated Process...' Invoke-Command -ComputerName $env:COMPUTERNAME -UseSSL -ScriptBlock { Import-Module $using:coreModulePath Install-CoreApplicationFileAdapterFolders @using:arguments } } else { Install-CoreApplicationFileAdapterFolders @arguments } } function Test-ApplicationBinding { [CmdletBinding()] [OutputType([void])] param( [Alias('Path')] [Parameter(Position = 0, Mandatory = $true)] [ValidateNotNullOrEmpty()] [ValidateScript( { Test-Path -Path $_ -PathType Leaf } )] [string] $ApplicationBindingAssemblyFilePath, [Alias('ProbingPath')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [ValidateScript({ $_ | Test-Path -PathType Container })] [string[]] $AssemblyProbingFolderPath, [Alias('SettingsTypeName')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [string] $EnvironmentSettingOverridesTypeName, [Parameter(Mandatory = $false)] [switch] $Isolated, [Alias('Environment')] [Parameter(Position = 2, Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $TargetEnvironment ) Resolve-ActionPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState $arguments = Get-CoreCommandArguments $PSBoundParameters if ($Isolated) { Write-Information 'Dispatching Code-First BizTalk Application Bindings Validity Test to Isolated Process...' Invoke-Command -ComputerName $env:COMPUTERNAME -UseSSL -ScriptBlock { Import-Module $using:coreModulePath Test-CoreApplicationBinding @using:arguments } } else { Test-CoreApplicationBinding @arguments } } function Test-ApplicationState { [CmdletBinding()] [OutputType([void])] param( [Alias('Path')] [Parameter(Position = 0, Mandatory = $true)] [ValidateNotNullOrEmpty()] [ValidateScript( { Test-Path -Path $_ -PathType Leaf } )] [string] $ApplicationBindingAssemblyFilePath, [Alias('ProbingPath')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [ValidateScript({ $_ | Test-Path -PathType Container })] [string[]] $AssemblyProbingFolderPath, [Alias('SettingsTypeName')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [string] $EnvironmentSettingOverridesTypeName, [Parameter(Mandatory = $false)] [switch] $Isolated, [Alias('Environment')] [Parameter(Position = 2, Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $TargetEnvironment ) Resolve-ActionPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState $arguments = Get-CoreCommandArguments $PSBoundParameters if ($Isolated) { Write-Information 'Dispatching Correspondence Test of BizTalk Services'' State to that Defined by Code-First BizTalk Application Bindings to Isolated Process...' Invoke-Command -ComputerName $env:COMPUTERNAME -UseSSL -ScriptBlock { Import-Module $using:coreModulePath Test-CoreApplicationState @using:arguments } } else { Test-CoreApplicationState @arguments } } function Uninstall-ApplicationFileAdapterFolders { [CmdletBinding()] [OutputType([void])] param( [Alias('Path')] [Parameter(Position = 0, Mandatory = $true)] [ValidateNotNullOrEmpty()] [ValidateScript( { Test-Path -Path $_ -PathType Leaf } )] [string] $ApplicationBindingAssemblyFilePath, [Alias('ProbingPath')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [ValidateScript({ $_ | Test-Path -PathType Container })] [string[]] $AssemblyProbingFolderPath, [Alias('SettingsTypeName')] [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [string] $EnvironmentSettingOverridesTypeName, [Parameter(Mandatory = $false)] [switch] $Isolated, [Parameter(Mandatory = $false)] [switch] $Recurse, [Alias('Environment')] [Parameter(Position = 2, Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $TargetEnvironment ) Resolve-ActionPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState $arguments = Get-CoreCommandArguments $PSBoundParameters if ($Isolated) { Write-Information 'Dispatching Deletion of Folders for File Adapters Defined by Code-First BizTalk Application Bindings to Isolated Process...' Invoke-Command -ComputerName $env:COMPUTERNAME -UseSSL -ScriptBlock { Import-Module $using:coreModulePath Uninstall-CoreApplicationFileAdapterFolders @using:arguments } } else { Uninstall-CoreApplicationFileAdapterFolders @arguments } } <# # Argument Completers #> Register-ArgumentCompleter -ParameterName TargetEnvironment -ScriptBlock { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) @('DEV', 'BLD', 'INT', 'ACC', 'PRE', 'PRD') | Where-Object -FilterScript { $_ -like "$wordToComplete*" } } # SIG # Begin signature block # MIII0QYJKoZIhvcNAQcCoIIIwjCCCL4CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUaYEzoyv0OhBvXosf1ttm45Wg # PUagggVMMIIFSDCCAzCgAwIBAgIJAJkr3mJdTBkUMA0GCSqGSIb3DQEBCwUAMEEx # PzA9BgNVBAMeNgBpAGMAcgBhAGYAdABzAG8AZgB0AHcAYQByAGUAQABzAHQAYQB0 # AGUAbABlAHMAcwAuAGIAZTAeFw0yMTA2MjUxNDEyMjNaFw00MTA2MjAxNDEyMjNa # MEExPzA9BgNVBAMeNgBpAGMAcgBhAGYAdABzAG8AZgB0AHcAYQByAGUAQABzAHQA # YQB0AGUAbABlAHMAcwAuAGIAZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC # ggIBAOeqdUHBv7sxSeX3aj6yPKj7PAvs8izpVXjyEBl5aR8mQneVcXuF53AH7EW1 # 6E5p4+Az5pJPGUD5c3tXhiGMF7vgLhQjO6hlaVBRIqiIYHikNLwMNy6YBMc/QQYM # rPhqHEFsZ53dkBIIj3M8e3kFcTFA09n25yDtTPDab4nd9yUhc9Qc8+nfpIzfYsoP # 1pZ3nCzhw6hN2/44v1dkQrG3dRYwt+px65p6NPNZWEJpt4VCJjIFh+lBYJdxm9d4 # X/rAnlHIkbv7liOavWDzgHVabS3hdAWtcDmynm+7+FcZDFqPWNCl3e4SS7xe4s/R # CKFKA0IsfKkSk9YJlLgeSQIEXUOOWXJAGaLqnRD8xWLZsc4Oi9GZg7XV1mv/S88c # oztXnwtAN3OOlRKBh2QbomMgxeMO0GvsLE/cq5Q/YKAoz+KGr/7LcZq9jzQ8IPus # ZvWLeDXmxPiwJjpZc1koLgfGIEX2NStQTT3QmacWr9thrWcKvI+4uBmI4exS9B4a # R3nV91w5EY+2RoYsHqej9LWwNamO96+jMX9pxprTX+EkLUuMAikw/po8sBC9MUUn # 5pMWmUv7DCtQOLGGBDDMMMkn4ZcjpCEEdPGHRKfqNnD27ssGtDjiNzfQrsm67toU # bBwUF+gyJq/YckWquYJhA9ZOFWEADuIwGnsOzsoRvuQyY+p9AgMBAAGjQzBBMA4G # A1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzAXBgNVHREEEDAO # ggxzdGF0ZWxlc3MuYmUwDQYJKoZIhvcNAQELBQADggIBACithYM3qckZRc9+Xbfu # a6gWr3HwjrW+FHKgjfrcOm8ZnLVapb9xFqsqrRQqd3RXWQDINEGrtI2rSfrzyfoK # UiTgldIfQNP1ZcGY229d++90t3hdo2mlt05hjYlbMENloJHpsEP0vQZmwOcEimCT # ex1pymYM+P9pj3j8UD1PT1eIZot6or8fBRl63UybyDSrM7L4UOkkAOniKxWy5pW6 # 6duS8SR+SZpr3Bv44NyXPj0Nv+MIpLmsLrd7XPBFmnGxzY01ZO9vzi9KEhM2wT5i # jPqHDNOvfPiADtAa+EyUBzdJiqy9heCz/TMZQgMWGwtfqJNxWZmsHcha2anW4Qt+ # mzrLO4GojWoVog9uVSAq+l0a+YQsd1u1kUmm4vgZCFyUA+lEp4LkI7ca2VBHkLPD # w+u2DoDMRiqFPZjO7BCKjGc0jj9B/qGR3JVt+tqDdB621xXf2YGF2oFvxZQ/keGt # 0ujfJ+JwN3nCulDAA4773q6KUnfykyrvAgITNbRJL6TngeRKtw9VIJBPxzqMzLpV # 5ggXNituwLaD1CCBJ1oo9DZHpL9gplXp1wGrelJOTiJhh+pdNsPtRH7CrranWa5h # LFLuigqin0eewQ5giJ1VaiBVEseOmiZog+27UpFIv40aDzgGL3YxB/Mu0ojwrQtp # WLmqJCmWnR5qxOm0yK+zNWe0MYIC7zCCAusCAQEwTjBBMT8wPQYDVQQDHjYAaQBj # AHIAYQBmAHQAcwBvAGYAdAB3AGEAcgBlAEAAcwB0AGEAdABlAGwAZQBzAHMALgBi # AGUCCQCZK95iXUwZFDAJBgUrDgMCGgUAoHgwGAYKKwYBBAGCNwIBDDEKMAigAoAA # oQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4w # DAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQU6/teiljpEd/jDWrLJZMkD3XW # 1kEwDQYJKoZIhvcNAQEBBQAEggIAffWe/qr7KTPNmVaAnRVLwgJZAbhhJA/sRbCm # FCdMDWP70UYc4v+jTp69Ii3u7Wdf3v80d1JAn0ajlHfJ1fF+6k77J3+y4Ab1jjbV # XnttIgyxAM5U5XjvprvH8uqf+acyjTpHgfPEudm2orM0m031pvtrABdU5Awu0rhL # H47X/O/y8W7XFPtauFhWVPv3JO6wA/JP8Xs6JhIPGY4utzQrsFjfhdL9Ma4kjoTR # o4DytpPjGJI0u37HT/Zd+iJ/qo15DTigGVfR+9aHmqiqBPLijmymDpHqeNW0f+xF # wB3Xr9NSMQv2EfMC3TSYdq2Bh9jOHPoFxSJoJgE77fNE7m4U1o9iMB0dc9u0azoB # 62bnIjhZEg3aEizOAPfYxFwUAkZ2q2susOizQcLB84pEt4jn1j1hW/VXMtu5jjSN # Zbf3yfpOn+0DXrzosMA9HV/J9LSVdhIT5GlYTVxOpM6oz/wXTA5r0jJgqaY2bKb0 # expeYKLMSdkm7RaexLwl/Fd++8hy8D8enmvOb8PcUehCFPrKxxVsvD3Igr3HIbr9 # mtEKP76+KEz3gNzsUAgYRjsz5ZntFkToKNwusoiWCuUH8ogd+yTub64rKzLaq6S4 # fSO2iIG24CoqB15SULILr2CuzpFZcbZmKozG/hhlxlW16FlmT0yVQ0Y+AWzKgDEn # W8/E+Wk= # SIG # End signature block |