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   = 'preview0014'

            # 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-preview0014] - 2023-02-01
 
### 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.
- SqlTraceFlag
  - The resource is now tested with an integration tests ([issue #1835](https://github.com/dsccommunity/SqlServerDsc/issues/1835)).
  - A new parameter `ClearAllTraceFlags` was added so a configuration
    can enforce that there should be no trace flags.
- 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 AppVeyor configuration file was updated to include the possibility
    to run skip installing one or more SQL Server instances when debugging
    in AppVeyor to help maximize the time alloted be run.
  - 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.
  - `Update-AvailabilityGroupReplica` to trigger once within `Set-TargetResource`
    for all AvailabilityReplica changes.
- 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 '


        } # End of PSData hashtable

    } # End of PrivateData hashtable
}