Server/Server.ps1
#region Copyright & License # Copyright © 2012 - 2021 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 Asserts the existence of a server being a member of the Microsoft BizTalk Server Group. .DESCRIPTION This command will throw if the server of a given name is not a member of the Microsoft BizTalk Server Group, and will silently complete otherwise. .PARAMETER Name The name of the server to assert membership to Microsoft BizTalk Server Group. .OUTPUTS Throws if server is not a member of the Microsoft BizTalk Server Group; completes silently otherwise. .EXAMPLE PS> Assert-BizTalkServer -Name Artichaut .EXAMPLE PS> Assert-BizTalkServer -Name Artichaut, Aubergine .NOTES © 2021 be.stateless. #> function Assert-BizTalkServer { [CmdletBinding()] [OutputType([void])] param( [Parameter(Mandatory = $false, Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [AllowEmptyCollection()] [string[]] $Name ) Begin { Resolve-ActionPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState } Process { Enumerate-BizTalkServer -Name $Name -UserBoundParameters $PSBoundParameters -ErrorAction Stop -WarningAction SilentlyContinue } } <# .SYNOPSIS Gets all or one Microsoft BizTalk Server Group's Servers by name. .DESCRIPTION This command returns the servers being members of BizTalk Server Group. .PARAMETER Name The name of the server belonging to the Microsoft BizTalk Server Group. .OUTPUTS Returns information about the server belonging to the Microsoft BizTalk Server Group. .EXAMPLE PS> Get-BizTalkServer .EXAMPLE PS> Get-BizTalkServer -Name Artichaut, Aubergine .NOTES © 2021 be.stateless. #> function Get-BizTalkServer { [CmdletBinding()] [OutputType([PSCustomObject[]])] param( [Parameter(Mandatory = $false, Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [ValidateNotNullOrEmpty()] [string[]] $Name ) Begin { Resolve-ActionPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState } Process { Enumerate-BizTalkServer -Name $Name -UserBoundParameters $PSBoundParameters -ErrorAction SilentlyContinue -WarningAction SilentlyContinue | Where-Object -FilterScript { $_ } } } <# .SYNOPSIS Returns whether a server is a member of the Microsoft BizTalk Server Group. .DESCRIPTION This command will return $true if the server of a given name is a member of the Microsoft BizTalk Server Group. .PARAMETER Name The name of the server to test membership to Microsoft BizTalk Server Group. .OUTPUTS Returns $true if server if a member of the Microsoft BizTalk Server Group; $false otherwise. .EXAMPLE PS> Test-BizTalkServer -Name Artichaut .EXAMPLE PS> Test-BizTalkServer -Name Artichaut, Aubergine .NOTES © 2021 be.stateless. #> function Test-BizTalkServer { [CmdletBinding()] [OutputType([bool[]])] param( [Parameter(Mandatory = $false, Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [AllowEmptyCollection()] [string[]] $Name ) Begin { Resolve-ActionPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState } Process { Enumerate-BizTalkServer -Name $Name -UserBoundParameters $PSBoundParameters -ErrorAction SilentlyContinue -WarningAction SilentlyContinue | ForEach-Object -Process { [bool]$_ } } } function Enumerate-BizTalkServer { [Diagnostics.CodeAnalysis.SuppressMessage('PSUseApprovedVerbs', '', Justification = 'Non-public function.')] [CmdletBinding()] [OutputType([PSCustomObject[]])] param( [Parameter(Mandatory = $false)] [AllowEmptyString()] [AllowEmptyCollection()] [AllowNull()] [string[]] $Name, [Parameter(Mandatory = $true)] [hashtable] $UserBoundParameters ) function Enumerate-BizTalkServerCore { [CmdletBinding()] [OutputType([PSCustomObject[]])] param( [Parameter(Mandatory = $false)] [AllowEmptyString()] [AllowEmptyCollection()] [AllowNull()] [string[]] $Name = '' # default value ensures its pipeline will run ) $Name | ForEach-Object -Process { $_ } -PipelineVariable currentName | ForEach-Object -Process { $filter, $message = if (![string]::IsNullOrWhiteSpace($currentName)) { "Name='$currentName'" $serverMessages.Error_Not_Found -f $currentName } else { $null $serverMessages.Error_None_Found } $instance = Get-CimInstance -Namespace root\MicrosoftBizTalkServer -ClassName MSBTS_Server -Filter $filter if ($null -eq $instance) { Write-Error -Message $message Write-Warning -Message $message $null } else { $instance } } } $arguments = @{} + $PSBoundParameters $arguments.Remove('UserBoundParameters') | Out-Null if ($UserBoundParameters.ContainsKey('ErrorAction')) { $arguments.ErrorAction = $UserBoundParameters.ErrorAction } if ($UserBoundParameters.ContainsKey('WarningAction')) { $arguments.WarningAction = $UserBoundParameters.WarningAction } Enumerate-BizTalkServerCore @arguments } Import-LocalizedData -BindingVariable serverMessages -FileName Server.Messages.psd1 # SIG # Begin signature block # MIIJEgYJKoZIhvcNAQcCoIIJAzCCCP8CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUcQQYQ8aItPcn254+BMG9YhIf # W9CgggWhMIIFnTCCA1GgAwIBAgIQKBOAjgMDO55A7UJ/k/g5nTBBBgkqhkiG9w0B # AQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQC # AQUAogMCASAwJjEkMCIGA1UEAwwbaWNyYWZ0c29mdHdhcmVAc3RhdGVsZXNzLmJl # MB4XDTIwMDYyMzExNDM1NloXDTIxMDYyMzEyMDM1NlowJjEkMCIGA1UEAwwbaWNy # YWZ0c29mdHdhcmVAc3RhdGVsZXNzLmJlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A # MIICCgKCAgEAmQcb0GwlBHBHBJZ9vNM8EewN7T+nhsWVU0WBoWnIw6UAT99Rw9x5 # RcfOQU2hxqKmR1k+iI6B+qddpTC3VLSChA/mh1P4pCDDsZeyR/0nn/r/DezhDe8x # 5jckjR88KSRcgDoh0kLjgfrToDpx9EvBcwXmNJKDwBIWu5SBvk04beU4XO7OHjBo # g0kMaHxCZc9HcWfdzBefP+fbVzu6f1j1WgEqZn9sr1ML2ulHRdu26+56xGq9RZGJ # vXyY1mY+K5mqBcET+1bV2pZnBrM3Gc/hlmvTkwrC0ZGBALLZWZqqpLVrDCY5eoHP # w2C0kA4JzK4Q1o218s+wXbuDcjYRIZqBSwI8fizR/4DS+6dEjfa3kzs2z/MrkJOk # hJ06tiMSRr55tX1DR8NwVLdiNqZYvs4zP2ZNRMMI8uFCjkP/Wn1hfBr+GSPlgdLq # 2TFishY2pj5O1WlE/tCz+B0YLhPWdfbVEp8kB3fGBsVf7uw4STK/wDA1MYRIHikt # w+K9gtdf0eIR9dYX9CMwoDN2TNLK6vnCWMrzWFe5EOU3/oljUBkyQT838a5A6wMu # cGeu7Cwjdigylt7ULaTglL7ORIyaRbzkltxd+1oaQ21kjl4ef0ZD2gWLj7bwrZR+ # KWCfmaHFoZlVRKNPtScuyOnilPGGZ6T7SNuwVxSXFRtbp+cQea4UxxUCAwEAAaNf # MF0wDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMBcGA1UdEQQQ # MA6CDHN0YXRlbGVzcy5iZTAdBgNVHQ4EFgQUq4sCoE2IqN4K4uwNuibjqd5yNNQw # QQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDAN # BglghkgBZQMEAgEFAKIDAgEgA4ICAQBR98amLpANKFlc7mPlkaV4ZtS2uTmbJ6dO # qzyWKJ2yTmv7U9yq8PdEH9mPJlxYvGyNgxqHoocKv1SdjgYh27SM8pDnsfU2NpER # 6K/3sICy6Orh9vhC+U18Bp93WoLEezolaBcF0co3/o+HazOvs/2zBFONFHMkef9/ # 3Bipm0sd95teHo53vLKViHbjSmoGxYsvJJiYITB4Zeo6xgUAmwcUpL1To62Lb3RP # CDLKZQ5h8Ir07nncV4HLq+0qF3+G9Y0IXHJv6Qcr/XTTLo0J877HRqS37WJcgF8+ # 2nbZbqO9NVvp14A4nTqpeDFmzewDU33hiZvzuLHBj//OgLgGZ9lJPxCu0tVxfFWZ # INHg1YHp3lMaAw00Q3tb/vhc5kE6Kl7FnXnUTsu4j+vUoaFMWhYezoyn9m4rD+xN # RITrbLPZdWAZvVOJ8ehmswRhfiMZ1npwbrk7KU1UTsmMS7PHREWSyUM28WlMFf2i # ut8TlY/MV/adUGr2GpqBWhxp5DRgfl1uamKm2wFlCra3/kReVlQgC/Bbod2JOgJW # t8zCbO4nJx+fJYwM9RG70h/TmuqzP8uChsHtKcgs2YtXmSm12JZakXY4IflInI7p # ddDEs9UOfsWXDsqpvmFQZbwgGeNeEsPk3Fdm1MzDtS9PBXMk4jGGXNzEsVUgwf42 # 2HuDWeX/4jGCAtswggLXAgEBMDowJjEkMCIGA1UEAwwbaWNyYWZ0c29mdHdhcmVA # c3RhdGVsZXNzLmJlAhAoE4COAwM7nkDtQn+T+DmdMAkGBSsOAwIaBQCgeDAYBgor # BgEEAYI3AgEMMQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEE # MBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBSY # 3Ih6I5KpvHZAq+IVf//Swhp9GzANBgkqhkiG9w0BAQEFAASCAgABe8BYVefqC6g3 # 0IRyMWJojRj+1xAvJmjklZr3wucj8U8gdgLDhcJPNRkyCh/RgOn7fRIFAL1TB/OP # PiEcKUPpmUb0E3t43XCGLjWGQYZfb3GiJ5fEVfFiwjKGXXONHnTzP/cgqeuYhTzM # vouB27UyMnGrcAu+ujcQnPLR5kCJ5B9ZaaNDNeNjSbl1oHptz+yOxZU9IrZVyYfB # otmlS6Jj5v6B9aBmhl3O6gkC+NqIqJAqTE3azWTKBHry6JMrWIxdUPsI+9WT1n2b # PJOxesPNhwti1FaaZzRYzDeYkTHm13BQYXQ3feRUaQEeHJl4S5qYXv4pxcStq7Ct # 4cqqqu1L5S6EO4kmguenRfk8n35OLLH2pzQLnMw/fzNdd4VzCbsZ4qgqA06Hw6AZ # d489xLg1fB3QCNXToPYEJ88dbgry02yjwGSKnQzB1+zSHcZIXqFXfdediTTk8J/E # ivL8D1AyHrLg/NAAVOnpnESNVKqhVwoAvSp37Px9z/wvWsKze8AOGUc4V2RUidUe # ijjC0fvt81n3utUfBl3IA4oVBWWQRvjWOGf2bWgc/TPm2gFS7CdOHNdx2GSjAE8g # 2xO/GDhD672WaHXkfJC+6ygvEgO2dUWFV7ZoXaf23MnVMljSyL6rl1DOLKZQlLGK # a8TB1JW3u7ONWa6sAXln9uvzpJYgww== # SIG # End signature block |