SqlServerDsc.psd1

@{
    # Script module or binary module file associated with this manifest.
    RootModule           = 'SqlServerDsc.psm1'

    # Version number of this module.
    ModuleVersion        = '16.1.0'

    # ID used to uniquely identify this module
    GUID                 = '693ee082-ed36-45a7-b490-88b07c86b42f'

    # Author of this module
    Author               = 'DSC Community'

    # Company or vendor of this module
    CompanyName          = 'DSC Community'

    # Copyright statement for this module
    Copyright            = 'Copyright the DSC Community contributors. All rights reserved.'

    # Description of the functionality provided by this module
    Description          = 'Module with DSC resources for deployment and configuration of Microsoft SQL Server.'

    # Minimum version of the Windows PowerShell engine required by this module
    PowerShellVersion    = '5.0'

    # Minimum version of the common language runtime (CLR) required by this module
    CLRVersion           = '4.0'

    # Functions to export from this module
    FunctionsToExport    = @('Add-SqlDscNode','Complete-SqlDscFailoverCluster','Complete-SqlDscImage','Connect-SqlDscDatabaseEngine','ConvertFrom-SqlDscDatabasePermission','ConvertFrom-SqlDscServerPermission','ConvertTo-SqlDscDatabasePermission','ConvertTo-SqlDscServerPermission','Disable-SqlDscAudit','Enable-SqlDscAudit','Get-SqlDscAudit','Get-SqlDscDatabasePermission','Get-SqlDscServerPermission','Initialize-SqlDscRebuildDatabase','Install-SqlDscServer','Invoke-SqlDscQuery','New-SqlDscAudit','Remove-SqlDscAudit','Remove-SqlDscNode','Repair-SqlDscServer','Set-SqlDscAudit','Set-SqlDscDatabasePermission','Set-SqlDscServerPermission','Test-SqlDscIsDatabasePrincipal','Test-SqlDscIsLogin','Uninstall-SqlDscServer')

    # Cmdlets to export from this module
    CmdletsToExport      = @()

    # Variables to export from this module
    VariablesToExport    = @()

    # Aliases to export from this module
    AliasesToExport      = @()

    DscResourcesToExport = @('SqlAudit','SqlDatabasePermission','SqlPermission','SqlAG','SqlAGDatabase','SqlAgentAlert','SqlAgentFailsafe','SqlAgentOperator','SqlAGListener','SqlAGReplica','SqlAlias','SqlAlwaysOnService','SqlConfiguration','SqlDatabase','SqlDatabaseDefaultLocation','SqlDatabaseMail','SqlDatabaseObjectPermission','SqlDatabaseRole','SqlDatabaseUser','SqlEndpoint','SqlEndpointPermission','SqlLogin','SqlMaxDop','SqlMemory','SqlProtocol','SqlProtocolTcpIp','SqlReplication','SqlRole','SqlRS','SqlRSSetup','SqlScript','SqlScriptQuery','SqlSecureConnection','SqlServiceAccount','SqlSetup','SqlTraceFlag','SqlWaitForAG','SqlWindowsFirewall')

    RequiredAssemblies   = @()

    # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
    PrivateData          = @{

        PSData = @{
            # Set to a prerelease string value if the release should be a prerelease.
            Prerelease   = 'preview0011'

            # Tags applied to this module. These help with module discovery in online galleries.
            Tags         = @('DesiredStateConfiguration', 'DSC', 'DSCResourceKit', 'DSCResource')

            # A URL to the license for this module.
            LicenseUri   = 'https://github.com/dsccommunity/SqlServerDsc/blob/main/LICENSE'

            # A URL to the main website for this project.
            ProjectUri   = 'https://github.com/dsccommunity/SqlServerDsc'

            # A URL to an icon representing this module.
            IconUri      = 'https://dsccommunity.org/images/DSC_Logo_300p.png'

            # ReleaseNotes of this module
            ReleaseNotes = '## [16.1.0-preview0011] - 2023-01-24
 
### Removed
 
- SqlServerDsc
  - Removed `Assert-ElevatedUser` from private functions ([issue #1797](https://github.com/dsccommunity/SqlServerDsc/issues/1797)).
    - `Assert-ElevatedUser` added to _DscResource.Common_ public functions
      ([issue #82](https://github.com/dsccommunity/DscResource.Common/issues/82)).
  - Removed `Test-IsNumericType` from private functions ([issue #1795](https://github.com/dsccommunity/SqlServerDsc/issues/1795)).
    - `Test-IsNumericType` added to _DscResource.Common_ public functions
    ([issue #87](https://github.com/dsccommunity/DscResource.Common/issues/87)).
  - Removed `Test-ServiceAccountRequirePassword` from private functions ([issue #1794](https://github.com/dsccommunity/SqlServerDsc/issues/1794)
    - Replaced by `Test-AccountRequirePassword` that was added to _DscResource.Common_
      public functions ([issue #93](https://github.com/dsccommunity/DscResource.Common/issues/93)).
  - Removed `Assert-RequiredCommandParameter` from private functions ([issue #1796](https://github.com/dsccommunity/SqlServerDsc/issues/1796)).
    - Replaced by `Assert-BoundParameter` (part of _DscResource.Common_)
      that had a new parameter set added ([issue #92](https://github.com/dsccommunity/DscResource.Common/issues/92)).
  - Removed private function `Test-ResourceDscPropertyIsAssigned` and
    `Test-ResourceHasDscProperty`. Both are replaced by `Test-DscProperty`
    which is now part of the module _DscResource.Common_.
  - Removed private function `Get-DscProperty`. It is replaced by `Get-DscProperty`
    which is now part of the module _DscResource.Common_.
  - The class `ResourceBase` and `Reason` has been removed, they are now
    part of the module _DscResource.Base_.
  - The enum `Ensure` has been removed, is is now part of the module
    _DscResource.Base_.
  - The private functions that the class `ResourceBase` depended on has been
    moved to the module _DscResource.Base_.
    - `ConvertFrom-CompareResult`
    - `ConvertTo-Reason`
    - `Get-ClassName`
    - `Get-LocalizedDataRecursive`
  - Added documentation how to generate stub modules for the unit tests.
    The documentation can be found in [''tests/Unit/Stubs`](https://github.com/dsccommunity/SqlServerDsc/tree/main/tests/Unit/Stubs).
 
### Added
 
- SqlServerDsc
  - The following private functions were added to the module (see comment-based
    help for more information):
    - `Assert-SetupActionProperties`
    - `Invoke-SetupAction`
  - The following public functions were added to the module (see comment-based
    help for more information):
    - `Install-SqlDscServer`
    - `Uninstall-SqlDscServer`
    - `Add-SqlDscNode`
    - `Remove-SqlDscNode`
    - `Repair-SqlDscServer`
    - `Complete-SqlDscImage`
    - `Complete-SqlDscFailoverCluster`
    - `Initialize-SqlDscRebuildDatabase`
  - New GitHub issue templates for proposing new public commands, proposing
    an enhancement to an existing command, or having a problem with an existing
    command.
  - Integration tests are now also run on SQL Server 2022 and SQL Server
    Reporting Services 2022.
  - Integration tests now wait for LCM after each It-block, not just at the
    end of a Context-block. Hopefully this will mitigate some of the intermittent
    errors we have seen when running the integration tests in the pipeline.
  - Use preview version of Pester to support the development of Pester as
    this is a code base with a diverse set of tests thar can help catch
    issues in Pester. If preview release of Pester prevents release we
    should temporary shift back to stable.
  - Add the GitHub App _Pull Request Quantifier_ as an experiment to see if it
    brings any value ([issue #1811](https://github.com/dsccommunity/SqlServerDsc/issues/1811)).
    - Updated thresholds, and label names and colors.
  - New QA tests for public commands and private functions.
- SqlDatabase
  - Added compatibility levels for SQL Server 2022 (major version 16).
- SqlSetup
  - Paths for SQL Server 2022 are correctly returned by Get.
- SqlRS
  - Added optional parameter `Encrypt`. Parameter `Encrypt` controls whether
    the connection used by `Invoke-SqlCmd should enforce encryption. This
    parameter can only be used together with the module _SqlServer_ v22.x
    (minimum v22.0.49-preview). The parameter will be ignored if an older
    major versions of the module _SqlServer_ is used.
- SqlScript
  - Added optional parameter `Encrypt`. Parameter `Encrypt` controls whether
    the connection used by `Invoke-SqlCmd should enforce encryption. This
    parameter can only be used together with the module _SqlServer_ v22.x
    (minimum v22.0.49-preview). The parameter will be ignored if an older
    major versions of the module _SqlServer_ is used.
- SqlScriptQuery
  - Added optional parameter `Encrypt`. Parameter `Encrypt` controls whether
    the connection used by `Invoke-SqlCmd should enforce encryption. This
    parameter can only be used together with the module _SqlServer_ v22.x
    (minimum v22.0.49-preview). The parameter will be ignored if an older
    major versions of the module _SqlServer_ is used.
- The public commands `Add-SqlDscNode`, `Complete-SqlDscFailoverCluster`,
  `Complete-SqlDscImage`, `Install-SqlDscServer`, and `Repair-SqlDscServer`
  now support the setup argument `ProductCoveredBySA` ([issue #1798](https://github.com/dsccommunity/SqlServerDsc/issues/1798)).
 
### Changed
 
- SqlServerDsc
  - Update Stale GitHub Action to v7.
  - Update to build module in separate folder under `output`.
  - Moved the build step of the pipeline to a Windows build worker when
    running in Azure DevOps.
  - Class-based resources now uses the parent class `ResourceBase` from the
    module _DscResource.Base_ ([issue #1790](https://github.com/dsccommunity/SqlServerDsc/issues/1790)).
  - Settings for the _Visual Studio Code_ extension _Pester Tests_ was changed
    to be able to run all unit tests, and all tests run by the extension
    are now run in a separate process to be able to handle changes in
    class-based resources.
  - The AppVeyor configuration file was updated to include the possibility
    to run integration tests for SQL Server 2022.
  - The stubs in `SqlServerStub.psm1` are now based on the commands from the
    module SqlServer v22.0.49-preview.
- `Install-SqlServerDsc`
  - No longer throws an exception when parameter `AgtSvcAccount` is not specified.
- SqlAgReplica
  - Converted unit test to Pester 5.
- Private function `Invoke-SetupAction` ([issue #1798](https://github.com/dsccommunity/SqlServerDsc/issues/1798)).
  - Was changed to support the SQL Server 2022 GA feature `AzureExtension`
    (that replaced the feature name `ARC`).
  - Support the setup argument `ProductCoveredBySA`.
  - No longer supports the argument `OnBoardSQLToARC` as it was removed in
    SQL Server 2022 GA.
- `Install-SqlDscServer`
  - Was changed to support the SQL Server 2022 GA feature `AzureExtension`
    (that replaced the feature name `ARC`) ([issue #1798](https://github.com/dsccommunity/SqlServerDsc/issues/1798)).
- `Uninstall-SqlDscServer`
  - Was changed to support the SQL Server 2022 GA feature `AzureExtension`
    (that replaced the feature name `ARC`) ([issue #1798](https://github.com/dsccommunity/SqlServerDsc/issues/1798)).
- SqlReplication
  - The resource now supports SQL Server 2022. The resource will require
    the module _SqlServer_ v22.0.49-preview or newer when used against an
    SQL Server 2022 instance ([issue #1801](https://github.com/dsccommunity/SqlServerDsc/issues/1801)).
- SqlProtocol
  - The resource now supports SQL Server 2022. The resource will require
    the module _SqlServer_ v22.0.49-preview or newer when used against an
    SQL Server 2022 instance ([issue #1802](https://github.com/dsccommunity/SqlServerDsc/issues/1802)).
- SqlProtocolTcpIp
  - The resource now supports SQL Server 2022. The resource will require
    the module _SqlServer_ v22.0.49-preview or newer when used against an
    SQL Server 2022 instance ([issue #1805](https://github.com/dsccommunity/SqlServerDsc/issues/1805)).
- SqlServiceAccount
  - The resource now supports SQL Server 2022. The resource will require
    the module _SqlServer_ v22.0.49-preview or newer when used against an
    SQL Server 2022 instance ([issue #1800](https://github.com/dsccommunity/SqlServerDsc/issues/1800)).
- SqlSetup
  - Integration tests now used _SqlServer_ module version 22.0.49-preview
    when running against _SQL Server 2022_, when testing _SQL Server 2016_,
    _SQL Server 2017_, and _SQL Server 2019_ the module version 21.1.18256
    is used.
  - Integration tests now supports installing preview versions of the module
    _SqlServer_.
- SqlServerDsc.Common
  - `Import-SQLPSModule`
    - Small changed to the localized string verbose message when the preferred
      module (_SqlServer_) is not found.
  - `Invoke-SqlScript`
    - Added the optional parameter `Encrypt` which controls whether the connection
      used by `Invoke-SqlCmd` should enforce encryption. This parameter can
      only be used together with the module _SqlServer_ v22.x (minimum
      v22.0.49-preview). The parameter will be ignored if an older major
      versions of the module _SqlServer_ is used.
  - `Connect-SQL`
    - Was updated to handle both `-ErrorAction ''Stop''` and `-ErrorAction ''SilentlyContinue''`
      when passed to the command ([issue #1837](https://github.com/dsccommunity/SqlServerDsc/issues/1837)).
 
### Fixed
 
- SqlServerDsc
  - Localized strings file `en-US/SqlServerDsc.strings.psd1` no longer
    referencing the wrong module in a comment.
- SqlAGReplica
  - No longer tries to enforce EndpointHostName when it is not part of the
    configuration ([issue #1821](https://github.com/dsccommunity/SqlServerDsc/'


        } # End of PSData hashtable

    } # End of PrivateData hashtable
}