Tests/Unit/Stubs/ServiceBus/2.0.40512.2/Microsoft.ServiceBus.Commands.psm1

function Add-SBHost()
{
    [CmdletBinding()]
    param
    (
        [Parameter()]
        [ValidateNotNull()]
        [securestring]
        ${CertificateAutoGenerationKey},

        [Parameter(Mandatory = $true)]
        [ValidateNotNull()]
        [bool]
        ${EnableFirewallRules},

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${ExternalBrokerPort},

        [Parameter()]
        [ValidateNotNull()]
        [uri]
        ${ExternalBrokerUrl},

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [securestring]
        ${RunAsPassword},

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString}
    )
}

function Disable-SBHostCEIP()
{
    [CmdletBinding()]
    param ()
}

function Enable-SBHostCEIP()
{
    [CmdletBinding()]
    param ()
}

function Get-SBAuthorizationRule()
{
    [CmdletBinding()]
    param
    (
        [Parameter(
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${Name},

        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${NamespaceName}
    )
}

function Get-SBAutoGeneratedCA()
{
    [CmdletBinding()]
    param
    (
        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${CACertificateFileName},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${RevocationListFileName},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString}
    )
}

function Get-SBClientConfiguration()
{
    [CmdletBinding()]
    param
    (
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("ns")]
        [String[]]
        ${Namespaces}
    )
}

function Get-SBFarm()
{
    [CmdletBinding()]
    param
    (
        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString}
    )
}

function Get-SBFarmStatus()
{
    [CmdletBinding()]
    param ()
}

function Get-SBHostCEIP()
{
    [CmdletBinding()]
    param ()
}

function Get-SBMessageContainer()
{
    [CmdletBinding()]
    param
    (
        [Parameter(ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateRange(0, 9223372036854775807L)]
        [int64]
        ${Id},

        [Parameter()]
        [switch]
        ${ShowEntities}
    )
}

function Get-SBNamespace()
{
    [CmdletBinding()]
    param
    (
        [Parameter(ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("n")]
        [string]
        ${Name},

        [Parameter(ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [guid]
        ${SubscriptionId}
    )
}

function Get-SBRuntimeSetting()
{
    [CmdletBinding()]
    param
    (
        [Parameter(ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateSet(
            "DefaultMaximumQueueSizeInMegabytes",
            "DefaultMaximumTopicSizeInMegabytes",
            "MaximumNumberOfConnectionsPerEntity",
            "MaximumNumberOfCorrelationFiltersPerTopic",
            "MaximumNumberOfQueuesPerNamespace",
            "MaximumNumberOfSqlFiltersPerTopic",
            "MaximumNumberOfSubscriptionsPerTopic",
            "MaximumNumberOfTopicsPerNamespace",
            "MaximumQueueSizeInMegabytes",
            "MaximumTopicSizeInMegabytes",
            "MessageCacheSizePerEntity",
            "IncludeExceptionDetails",
            "DebugMode"
        )]
        [Alias("n")]
        [string]
        ${Name}
    )
}

function Invoke-SBFarmUpgrade()
{
    [CmdletBinding()]
    param
    (
        [Parameter(ParameterSetName = "AutoCert")]
        [ValidateNotNullOrEmpty()]
        [securestring]
        ${CertificateAutoGenerationKey},

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString}
    )
}

function Invoke-SBHostUpgrade()
{
    [CmdletBinding()]
    param ()
}

function New-SBAuthorizationRule()
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("n")]
        [string]
        ${Name},

        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("ns")]
        [string]
        ${NamespaceName},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({
            try
            {
                if ([Convert]::FromBase64String($_) -eq $null)
                {
                    return $false
                }
                return $true
            }
            catch [FormatException]
            {
                return $false
            }
        })]
        [Alias("primary")]
        [string]
        ${PrimaryKey},

        [Parameter(ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName=$false)]
        [Alias("rs")]
        [object[]]
        ${Rights},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({
            try
            {
                if ([Convert]::FromBase64String($_) -eq $null)
                {
                    return $false
                }
                return $true
            }
            catch [FormatException]
            {
                return $false
            }
        })]
        [Alias("secondary")]
        [string]
        ${SecondaryKey}
    )
}

function New-SBFarm()
{
    [CmdletBinding(DefaultParameterSetName="AutoCert")]
    param
    (
        [Parameter()]
        [ValidateNotNull()]
        [pscredential]
        ${AdminApiCredentials},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [ValidateLength(1,256)]
        [string]
        ${AdminGroup} = 'BUILTIN\Administrators',

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${AmqpPort} = 5672,

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${AmqpsPort} = 5671,

        [Parameter(Mandatory = $true,
                   ParameterSetName="AutoCert")]
        [ValidateNotNullOrEmpty()]
        [securestring]
        ${CertificateAutoGenerationKey},

        [Parameter(ParameterSetName="CustomCert")]
        [ValidateNotNullOrEmpty()]
        [string]
        ${EncryptionCertificateThumbprint},

        [Parameter(Mandatory = $true,
                   ParameterSetName="CustomCert")]
        [ValidateNotNullOrEmpty()]
        [string]
        ${FarmCertificateThumbprint},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${FarmDns},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${GatewayDBConnectionString} = ${SBFarmDBConnectionString},

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${HttpsPort} = 9355,

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65532)]
        [int32]
        ${InternalPortRangeStart} = 9000,

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${MessageBrokerPort} = 9356,

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${MessageContainerDBConnectionString} = ${SBFarmDBConnectionString},

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${RPHttpsPort} = 9359,

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${RunAsAccount} = 'servicebus@contoso',

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString},

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${TcpPort} = 9354,

        [Parameter()]
        [ValidateNotNull()]
        [pscredential]
        ${TenantApiCredentials}
    )
}

function New-SBMessageContainer()
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${ContainerDBConnectionString},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString}
    )
}

function New-SBNamespace()
{
    [CmdletBinding()]
    param
    (
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [Alias("scheme")]
        [ValidateNotNull()]
        [string]
        ${AddressingScheme} = 1,

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${DnsEntry},

        [Parameter(ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${IssuerName},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${IssuerUri},

        [Parameter(Mandatory = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("manage")]
        [string[]]
        ${ManageUsers},

        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("n")]
        [string]
        ${Name},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({
            try
            {
                if ([Convert]::FromBase64String($_) -eq $null)
                {
                    return $false
                }
                return $true
            }
            catch [FormatException]
            {
                return $false
            }
        })]
        [Alias("primary")]
        [string]
        ${PrimarySymmetricKey},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({
            try
            {
                if ([Convert]::FromBase64String($_) -eq $null)
                {
                    return $false
                }
                return $true
            }
            catch [FormatException]
            {
                return $false
            }
        })]
        [Alias("secondary")]
        [string]
        ${SecondarySymmetricKey},

        [Parameter(ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [guid]
        ${SubscriptionId}
    )
}

function Remove-SBAuthorizationRule()
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("n")]
        [string]
        ${Name},

        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("ns")]
        [string]
        ${NamespaceName}
    )
}

function Remove-SBHost()
{
    [CmdletBinding()]
    param
    (
        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${HostName},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString}
    )
}

function Remove-SBMessageContainer()
{
    [CmdletBinding(SupportsShouldProcess=$true)]
    param
    (
        [Parameter()]
        [switch]
        ${Force},

        [Parameter(Mandatory = $true,
                   Position = 0,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateRange(0, 9223372036854775807L)]
        [int64]
        ${Id}
    )
}

function Remove-SBNamespace()
{
    [CmdletBinding(SupportsShouldProcess = $true)]
    param
    (
        [Parameter()]
        [switch]
        ${Force},

        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("n")]
        [string]
        ${Name}
    )
}

function Rename-SBAuthorizationDomain()
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("n")]
        [string]
        ${Name},

        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("e")]
        [string]
        ${NewName}
    )
}

function Restore-SBEntity()
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({
            if ($_.AbsoluteUri.EndsWith('/', $true, [CultureInfo]::CurrentCulture))
            {
                return $false
            }
            if ($_.Port -ne -1)
            {
                return $false
            }
            return $true
        })]
        [Alias("entity")]
        [uri]
        ${EntityPath},

        [Parameter()]
        [Switch]
        ${Force},

        [Parameter(Mandatory = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("gateway")]
        [string]
        ${SourceGatewayConnectionString},

        [Parameter(Mandatory = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("containers")]
        [string[]]
        ${SourceMessageContainersConnectionStrings}
    )
}

function Restore-SBFarm()
{
    [CmdletBinding(DefaultParameterSetName = "AutoCert",
                   SupportsShouldProcess = $true)]
    param
    (
        [Parameter()]
        [ValidateNotNull()]
        [pscredential]
        ${AdminApiCredentials},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [ValidateLength(1,256)]
        [string]
        ${AdminGroup} = 'BUILTIN\Administrators',

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${AmqpPort} = 5672,

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${AmqpsPort} = 5671,

        [Parameter(Mandatory = $true,
                   ParameterSetName="AutoCert")]
        [ValidateNotNullOrEmpty()]
        [securestring]
        ${CertificateAutoGenerationKey},

        [Parameter(ParameterSetName="CustomCert")]
        [ValidateNotNullOrEmpty()]
        [string]
        ${EncryptionCertificateThumbprint},

        [Parameter(Mandatory = $true,
                   ParameterSetName="CustomCert")]
        [ValidateNotNullOrEmpty()]
        [string]
        ${FarmCertificateThumbprint},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${FarmDns},

        [Parameter()]
        [switch]
        ${Force},

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${GatewayDBConnectionString} = ${SBFarmDBConnectionString},

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${HttpsPort} = 9355,

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65532)]
        [int32]
        ${InternalPortRangeStart} = 9000,

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${MessageBrokerPort} = 9356,

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${MessageContainerDBConnectionString} = ${SBFarmDBConnectionString},

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${RPHttpsPort} = 9359,

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${RunAsAccount} = 'servicebus@contoso',

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString},

        [Parameter()]
        [ValidateNotNull()]
        [pscredential]
        ${TenantApiCredentials}
    )
}

function Restore-SBGateway()
{
    [CmdletBinding()]
    param
    (
        [Parameter(ParameterSetName="AutoCert")]
        [ValidateNotNullOrEmpty()]
        [securestring]
        ${CertificateAutoGenerationKey},

        [Parameter()]
        [switch]
        ${Force},

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${GatewayDBConnectionString},

        [Parameter(ValueFromPipelineByProperyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString}
    )
}

function Restore-SBMessageContainer()
{
    [CmdletBinding()]
    param
    (
        [Parameter(ParameterSetName="AutoCert")]
        [ValidateNotNullOrEmpty()]
        [securestring]
        ${CertificateAutoGenerationKey},

        [Parameter(Mandatory = $true,
                   ValueFromPipelineByProperyName=$true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${ContainerDBConnectionString},

        [Parameter()]
        [switch]
        ${Force},

        [Parameter(ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateRange(0, 9223372036854775807L)]
        [int64]
        ${Id},

        [Parameter(ValueFromPipelineByProperyName=$true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString}
    )
}

function Set-SBAuthorizationRule()
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("n")]
        [string]
        ${Name},

        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("ns")]
        [string]
        ${NamespaceName},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({
            try
            {
                if ([Convert]::FromBase64String($_) -eq $null)
                {
                    return $false
                }
                return $true
            }
            catch [FormatException]
            {
                return $false
            }
        })]
        [Alias("primary")]
        [string]
        ${PrimaryKey},

        [Parameter(ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName=$false)]
        [Alias("rs")]
        [object[]]
        ${Rights},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({
            try
            {
                if ([Convert]::FromBase64String($_) -eq $null)
                {
                    return $false
                }
                return $true
            }
            catch [FormatException]
            {
                return $false
            }
        })]
        [Alias("secondary")]
        [string]
        ${SecondaryKey}
    )
}

function Set-SBCertificate()
{
    [CmdletBinding()]
    param
    (
        [Parameter(ParameterSetName="FarmAndEncryptionCert")]
        [ValidateNotNullOrEmpty()]
        [string]
        ${EncryptionCertificateThumbprint},

        [Parameter(ParameterSetName="FarmAndEncryptionCert")]
        [ValidateNotNullOrEmpty()]
        [string]
        ${FarmCertificateThumbprint},

        [Parameter()]
        [switch]
        ${IgnoreEncryptionError},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString},

        [Parameter()]
        [switch]
        ${SkipKeyReEncryption}
    )
}

function Set-SBCertificateAutoGenerationKey()
{
    [CmdletBinding()]
    param
    (
        [Parameter()]
        [switch]
        ${IgnoreEncryptionError},

        [Parameter(Mandatory = $true,
                   ParameterSetName = "AutoCert")]
        [ValidateNotNullOrEmpty()]
        [securestring]
        ${Key},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${LastCertificateThumbprint},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString}
    )
}

function Set-SBFarm()
{
    [CmdletBinding()]
    param
    (
        [Parameter()]
        [ValidateNotNull()]
        [pscredential]
        ${AdminApiCredentials},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [ValidateLength(1,256)]
        [string]
        ${AdminGroup},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${FarmDns},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${RunAsAccount},

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString},

        [Parameter()]
        [ValidateNotNull()]
        [pscredential]
        ${TenantApiCredentials}
    )
}

function Set-SBNamespace()
{
    [CmdletBinding()]
    param
    (
        [Parameter(ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${IssuerName},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        ${IssuerUri},

        [Parameter(Mandatory = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("manage")]
        [string[]]
        ${ManageUsers},

        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("n")]
        [string]
        ${Name},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({
            try
            {
                if ([Convert]::FromBase64String($_) -eq $null)
                {
                    return $false
                }
                return $true
            }
            catch [FormatException]
            {
                return $false
            }
        })]
        [Alias("primary")]
        [string]
        ${PrimarySymmetricKey},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({
            try
            {
                if ([Convert]::FromBase64String($_) -eq $null)
                {
                    return $false
                }
                return $true
            }
            catch [FormatException]
            {
                return $false
            }
        })]
        [Alias("secondary")]
        [string]
        ${SecondarySymmetricKey},

        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({
            $guid = [Guid]::NewGuid()
            ([Guid]::TryParse($_, ([REF] $guid)))
        })]
        [Alias("subscription")]
        [string]
        ${SubscriptionId}
    )
}

function Set-SBRuntimeSetting()
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [ValidateSet(
            "DefaultMaximumQueueSizeInMegabytes",
            "DefaultMaximumTopicSizeInMegabytes",
            "MaximumNumberOfConnectionsPerEntity",
            "MaximumNumberOfCorrelationFiltersPerTopic",
            "MaximumNumberOfQueuesPerNamespace",
            "MaximumNumberOfSqlFiltersPerTopic",
            "MaximumNumberOfSubscriptionsPerTopic",
            "MaximumNumberOfTopicsPerNamespace",
            "MaximumQueueSizeInMegabytes",
            "MaximumTopicSizeInMegabytes",
            "MessageCacheSizePerEntity",
            "IncludeExceptionDetails",
            "DebugMode"
        )]
        [Alias("n")]
        [string]
        ${Name},

        [Parameter(Mandatory = $true,
                   ValueFromPipeline = $true,
                   ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [Alias("v")]
        [string]
        ${Value}
    )
}

function Start-SBFarm()
{
    [CmdletBinding()]
    param ()
}

function Start-SBHost()
{
    [CmdletBinding()]
    param ()
}

function Stop-SBFarm()
{
    [CmdletBinding()]
    param ()
}

function Stop-SBHost()
{
    [CmdletBinding()]
    param ()
}

function Update-SBHost()
{
    [CmdletBinding()]
    param (
        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [securestring]
        ${CertificateAutoGenerationKey},

        [Parameter()]
        [ValidateNotNull()]
        [ValidateRange(1024,65535)]
        [int32]
        ${ExternalBrokerPort},

        [Parameter()]
        [ValidateNotNull()]
        [uri]
        ${ExternalBrokerUrl},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [securestring]
        ${RunAsPassword},

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]
        ${SBFarmDBConnectionString}
    )
}

Export-ModuleMember -Function @(
    "Add-SBHost",
    "Disable-SBHostCEIP",
    "Enable-SBHostCEIP",
    "Get-SBAuthorizationRule",
    "Get-SBAutoGeneratedCA",
    "Get-SBClientConfiguration",
    "Get-SBFarm",
    "Get-SBFarmStatus",
    "Get-SBHostCEIP",
    "Get-SBMessageContainer",
    "Get-SBNamespace",
    "Get-SBRuntimeSetting",
    "Invoke-SBFarmUpgrade",
    "Invoke-SBHostUpgrade",
    "New-SBAuthorizationRule"
    "New-SBFarm",
    "New-SBMessageContainer"
    "New-SBNamespace",
    "Remove-SBAuthorizationRule",
    "Remove-SBHost",
    "Remove-SBMessageContainer",
    "Remove-SBNamespace",
    "Set-SBAuthorizationRule",
    "Set-SBCertificate",
    "Set-SBCertificateAutoGenerationKey",
    "Set-SBFarm",
    "Set-SBNamespace",
    "Set-SBRuntimeSetting",
    "Start-SBFarm",
    "Start-SBHost",
    "Stop-SBFarm",
    "Stop-SBHost",
    "Update-SBHost"
)