SqlServerDsc.psd1

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

    # Version number of this module.
    ModuleVersion        = '17.4.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          = 'This module contains commands and DSC resources for deployment and configuration of Microsoft SQL Server, SQL Server Reporting Services and Power BI Report 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-SqlDscFileGroup','Add-SqlDscNode','Add-SqlDscRSUrlReservation','Add-SqlDscTraceFlag','Assert-SqlDscAgentOperator','Assert-SqlDscLogin','Backup-SqlDscDatabase','Complete-SqlDscFailoverCluster','Complete-SqlDscImage','Connect-SqlDscDatabaseEngine','ConvertFrom-SqlDscDatabasePermission','ConvertFrom-SqlDscServerPermission','ConvertTo-SqlDscDatabasePermission','ConvertTo-SqlDscDataFile','ConvertTo-SqlDscEditionName','ConvertTo-SqlDscFileGroup','ConvertTo-SqlDscServerPermission','Deny-SqlDscServerPermission','Disable-SqlDscAgentOperator','Disable-SqlDscAudit','Disable-SqlDscDatabaseSnapshotIsolation','Disable-SqlDscLogin','Disable-SqlDscRsSecureConnection','Disconnect-SqlDscDatabaseEngine','Enable-SqlDscAgentOperator','Enable-SqlDscAudit','Enable-SqlDscDatabaseSnapshotIsolation','Enable-SqlDscLogin','Enable-SqlDscRsSecureConnection','Get-SqlDscAgentAlert','Get-SqlDscAgentOperator','Get-SqlDscAudit','Get-SqlDscBackupFileList','Get-SqlDscCompatibilityLevel','Get-SqlDscConfigurationOption','Get-SqlDscDatabase','Get-SqlDscDatabasePermission','Get-SqlDscDateTime','Get-SqlDscInstalledInstance','Get-SqlDscLogin','Get-SqlDscManagedComputer','Get-SqlDscManagedComputerInstance','Get-SqlDscManagedComputerService','Get-SqlDscPreferredModule','Get-SqlDscRole','Get-SqlDscRSConfiguration','Get-SqlDscRSPackage','Get-SqlDscRSSetupConfiguration','Get-SqlDscRSUrlReservation','Get-SqlDscRSVersion','Get-SqlDscRSWebPortalApplicationName','Get-SqlDscServerPermission','Get-SqlDscServerProtocol','Get-SqlDscServerProtocolName','Get-SqlDscServerProtocolTcpIp','Get-SqlDscSetupLog','Get-SqlDscStartupParameter','Get-SqlDscTraceFlag','Grant-SqlDscServerPermission','Import-SqlDscPreferredModule','Initialize-SqlDscRebuildDatabase','Install-SqlDscPowerBIReportServer','Install-SqlDscReportingService','Install-SqlDscServer','Invoke-SqlDscQuery','Invoke-SqlDscScalarQuery','New-SqlDscAgentAlert','New-SqlDscAgentOperator','New-SqlDscAudit','New-SqlDscDatabase','New-SqlDscDatabaseSnapshot','New-SqlDscDataFile','New-SqlDscFileGroup','New-SqlDscLogin','New-SqlDscRole','Remove-SqlDscAgentAlert','Remove-SqlDscAgentOperator','Remove-SqlDscAudit','Remove-SqlDscDatabase','Remove-SqlDscLogin','Remove-SqlDscNode','Remove-SqlDscRole','Remove-SqlDscRSUrlReservation','Remove-SqlDscTraceFlag','Repair-SqlDscPowerBIReportServer','Repair-SqlDscReportingService','Repair-SqlDscServer','Restore-SqlDscDatabase','Resume-SqlDscDatabase','Revoke-SqlDscServerPermission','Save-SqlDscSqlServerMediaFile','Set-SqlDscAgentAlert','Set-SqlDscAgentOperator','Set-SqlDscAudit','Set-SqlDscConfigurationOption','Set-SqlDscDatabaseDefault','Set-SqlDscDatabaseOwner','Set-SqlDscDatabasePermission','Set-SqlDscDatabaseProperty','Set-SqlDscRSUrlReservation','Set-SqlDscRSVirtualDirectory','Set-SqlDscServerPermission','Set-SqlDscStartupParameter','Set-SqlDscTraceFlag','Suspend-SqlDscDatabase','Test-SqlDscAgentAlertProperty','Test-SqlDscBackupFile','Test-SqlDscConfigurationOption','Test-SqlDscDatabaseProperty','Test-SqlDscIsAgentAlert','Test-SqlDscIsAgentOperator','Test-SqlDscIsDatabase','Test-SqlDscIsDatabasePrincipal','Test-SqlDscIsLogin','Test-SqlDscIsLoginEnabled','Test-SqlDscIsRole','Test-SqlDscIsSupportedFeature','Test-SqlDscRSInstalled','Test-SqlDscServerPermission','Uninstall-SqlDscPowerBIReportServer','Uninstall-SqlDscReportingService','Uninstall-SqlDscServer')

    # Cmdlets to export from this module
    # Use wildcard to avoid PSDesiredStateConfiguration 2.0.7 filtering class-based DSC resources (see #2109).
    CmdletsToExport      = '*'

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

    # Aliases to export from this module
    AliasesToExport      = @('Disable-SqlDscRSTls','Enable-SqlDscRSTls','Install-SqlDscBIReportServer','Install-SqlDscPBIReportServer','Repair-SqlDscBIReportServer','Repair-SqlDscPBIReportServer','Test-SqlDscAgentAlert','Uninstall-SqlDscBIReportServer','Uninstall-SqlDscPBIReportServer')

    DscResourcesToExport = @('SqlAgentAlert','SqlAudit','SqlDatabase','SqlDatabasePermission','SqlPermission','SqlRSSetup','SqlAG','SqlAGDatabase','SqlAgentFailsafe','SqlAgentOperator','SqlAGListener','SqlAGReplica','SqlAlias','SqlAlwaysOnService','SqlConfiguration','SqlDatabaseDefaultLocation','SqlDatabaseMail','SqlDatabaseObjectPermission','SqlDatabaseRole','SqlDatabaseUser','SqlEndpoint','SqlEndpointPermission','SqlLogin','SqlMaxDop','SqlMemory','SqlProtocol','SqlProtocolTcpIp','SqlReplication','SqlRole','SqlRS','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   = 'preview0020'

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

            # 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 = '## [17.4.0-preview0020] - 2026-01-04

### Added

- Added public command `Set-SqlDscRSVirtualDirectory` to set the virtual directory
  for Reporting Services applications. Wraps the `SetVirtualDirectory` CIM method
  and supports ReportServerWebService, ReportServerWebApp, and ReportManager
  applications ([issue #2015](https://github.com/dsccommunity/SqlServerDsc/issues/2015)).
- Added public commands `Get-SqlDscRSUrlReservation`, `Add-SqlDscRSUrlReservation`,
  `Remove-SqlDscRSUrlReservation`, and `Set-SqlDscRSUrlReservation` to manage
  URL reservations for SQL Server Reporting Services or Power BI Report Server.
  These commands wrap the `ListReservedUrls`, `ReserveUrl`, and `RemoveURL` CIM
  methods respectively. The `Set-SqlDscRSUrlReservation` command provides a
  declarative approach to set URL reservations to an exact list, removing any
  existing reservations not in the specified list
  ([issue #2016](https://github.com/dsccommunity/SqlServerDsc/issues/2016))
  ([issue #2024](https://github.com/dsccommunity/SqlServerDsc/issues/2024)).
- Added public command `Get-SqlDscRSConfiguration` to retrieve the
  `MSReportServer_ConfigurationSetting` CIM instance for SQL Server Reporting
  Services or Power BI Report Server. Supports auto-detection of the Reporting
  Services version or explicit version specification. The returned CIM instance
  can be piped to `Enable-SqlDscRsSecureConnection` or `Disable-SqlDscRsSecureConnection`
  ([issue #2022](https://github.com/dsccommunity/SqlServerDsc/issues/2022)).
- Added public command `Get-SqlDscRSWebPortalApplicationName` to get the
  Reporting Services web portal application name based on the SQL Server
  version. Returns ''ReportServerWebApp'' for SQL Server 2016 (version 13) and
  later, or ''ReportManager'' for earlier versions. Accepts the setup configuration
  object from `Get-SqlDscRSSetupConfiguration` via pipeline.
- Added public command `Enable-SqlDscRsSecureConnection` to enable secure
  connection for SQL Server Reporting Services or Power BI Report Server by
  setting the secure connection level to 1. Accepts the configuration CIM
  instance from pipeline, supports `-WhatIf`/`-Confirm`, and `-PassThru` to
  return the configuration object
  ([issue #2022](https://github.com/dsccommunity/SqlServerDsc/issues/2022)).
- Added public command `Disable-SqlDscRsSecureConnection` to disable secure
  connection for SQL Server Reporting Services or Power BI Report Server by
  setting the secure connection level to 0. Accepts the configuration CIM
  instance from pipeline, supports `-WhatIf`/`-Confirm`, and `-PassThru` to
  return the configuration object
  ([issue #2023](https://github.com/dsccommunity/SqlServerDsc/issues/2023)).
- Added private function `Invoke-RsCimMethod` to invoke CIM methods on Reporting
  Services configuration instances with consistent error handling. This function
  is used by `Enable-SqlDscRsSecureConnection`, `Disable-SqlDscRsSecureConnection`,
  and the `SqlRS` resource.
- `Invoke-ReportServerSetupAction`
  - Now uses `Format-Path` with `-ExpandEnvironmentVariable` to expand environment
    variables in all path parameters (`MediaPath`, `LogPath`, `InstallFolder`)
    ([issue #2085](https://github.com/dsccommunity/SqlServerDsc/issues/2085)).
- Added public command `Get-SqlDscServerProtocolTcpIp` to retrieve TCP/IP address
  group information for SQL Server instances. Returns `ServerIPAddress` objects
  containing port configuration including `TcpPort`, `TcpDynamicPorts`, `Enabled`,
  and `Active` properties. Supports filtering by specific IP address group name
  and accepts pipeline input from `Get-SqlDscServerProtocol`.
- `SqlResourceBase`
  - Added `Protocol` property to specify the network protocol (`tcp`, `np`, `lpc`)
    when connecting to SQL Server instances
    ([issue #2041](https://github.com/dsccommunity/SqlServerDsc/issues/2041)).
  - Added `Port` property to specify the TCP port number when connecting to SQL
    Server instances
    ([issue #2041](https://github.com/dsccommunity/SqlServerDsc/issues/2041)).
- `Connect-SqlDscDatabaseEngine`
  - Added `Protocol` parameter to specify the network protocol when connecting.
  - Added `Port` parameter to specify the TCP port number when connecting.
    Connection strings now support the format `[protocol:]hostname[\instance][,port]`.
- `SqlDatabase`
  - Added new class-based resource to create, modify, or remove databases on a
    SQL Server instance. Supports a comprehensive set of database properties
    that can be configured with `Set-SqlDscDatabaseProperty`
    ([issue #2174](https://github.com/dsccommunity/SqlServerDsc/issues/2174)).
- `Install-SqlDscServer`
  - Added parameter `AllowDqRemoval` to the `Upgrade` parameter set
    ([issue #2155](https://github.com/dsccommunity/SqlServerDsc/issues/2155)).
- `Test-SqlDscIsSupportedFeature`
  - Added DQ, DQC, and MDS features as discontinued starting with SQL Server 2025
    (17.x) and later versions ([issue #2380](https://github.com/dsccommunity/SqlServerDsc/issues/2380)).
- Added public command `Get-SqlDscRSPackage` to retrieve package information for
  SQL Server Reporting Services or Power BI Report Server. Supports getting version
  information from an executable file
  ([issue #2082](https://github.com/dsccommunity/SqlServerDsc/issues/2082)).
- Added public command `Get-SqlDscBackupFileList` to read the list of database
  files contained in a SQL Server backup file. Useful for planning file
  relocations during restore operations ([issue #2026](https://github.com/dsccommunity/SqlServerDsc/issues/2026)).
- Added public command `Test-SqlDscBackupFile` to verify the integrity of a
  SQL Server backup file ([issue #2026](https://github.com/dsccommunity/SqlServerDsc/issues/2026)).
- Added public command `Restore-SqlDscDatabase` to restore SQL Server databases
  from backup files. Supports full, differential, transaction log, and file
  restores with options for file relocation (both simple path-based and
  explicit RelocateFile objects), point-in-time recovery, NoRecovery/Standby
  modes, and various performance tuning options ([issue #2026](https://github.com/dsccommunity/SqlServerDsc/issues/2026)).
- Added public command `Backup-SqlDscDatabase`. Supports full, differential,
  and transaction log backups with options for compression, copy-only, checksum,
  and retention ([issue #2365](https://github.com/dsccommunity/SqlServerDsc/issues/2365)).
- Added public command `Invoke-SqlDscScalarQuery` to execute scalar queries using
  `Server.ConnectionContext.ExecuteScalar()`. Server-level, lightweight execution
  that does not require any database to be online
  ([issue #2423](https://github.com/dsccommunity/SqlServerDsc/issues/2423)).
- Added public command `Get-SqlDscDateTime` to retrieve current date and time from
  SQL Server instance. Supports multiple T-SQL date/time functions to eliminate
  clock-skew and timezone issues between client and server
  ([issue #2423](https://github.com/dsccommunity/SqlServerDsc/issues/2423)).
- Added public command `Backup-SqlDscDatabase` to perform database backups using
  SMO''s `Microsoft.SqlServer.Management.Smo.Backup` class. Supports full,
  differential, and transaction log backups with options for compression,
  copy-only, checksum, and retention. Accepts both Server and Database objects
  via pipeline
  ([issue #2365](https://github.com/dsccommunity/SqlServerDsc/issues/2365)).
- `Set-SqlDscServerPermission`
  - Added integration tests for negative test scenarios including invalid
    permission names and non-existent principals.
- `SqlPermission`
  - Added integration tests for server role permissions to complement the
    existing login permission tests.
- `New-SqlDscDatabase`
  - Added comprehensive set of settable database properties that were previously
    only available in `Set-SqlDscDatabaseProperty`
    ([issue #2190](https://github.com/dsccommunity/SqlServerDsc/issues/2190)).
- Added public command `Resume-SqlDscDatabase` to bring a database online using
  SMO `Database.SetOnline()`. Supports Server and Database pipeline input
  ([issue #2191](https://github.com/dsccommunity/SqlServerDsc/issues/2191)).
- Added public command `Suspend-SqlDscDatabase` to take a database offline using
  SMO `Database.SetOffline()`. Supports Server and Database pipeline input;
  includes `Force` to disconnect active users
  ([issue #2192](https://github.com/dsccommunity/SqlServerDsc/issues/2192)).
- `Remove-SqlDscLogin`
  - Added parameter `-KillActiveSessions` to automatically terminate any active
    sessions for a login before dropping it
    ([issue #2372](https://github.com/dsccommunity/SqlServerDsc/issues/2372)).
- `Invoke-SetupAction`
  - Added parameter `AllowDqRemoval` for the `Upgrade` action to allow removal
    of Data Quality (DQ) Services during upgrade to SQL Server 2025 (17.x) and
    later versions.
  - Now outputs setup progress when `-Verbose` is passed by using `/QUIETSIMPLE`
    instead of `/QUIET`.
- `SqlResourceBase`
  - Added the method `ConvertToSmoEnumType()` to convert string values to SMO
    enum types at runtime. This method can be used by all resources inheriting
    from `SqlResourceBase` and supports a default namespace parameter to avoid
    repeating the full type name
    ([issue #2174](https://github.com/dsccommunity/SqlServerDsc/issues/2174)).

### Changed

- `Install-SqlDscServer`
  - Removed misleading Uninstall parameter documentation from comment-based help
    ([issue #2448](https://github.com/dsccommunity/SqlServerDsc/issues/2448)).
- `SqlRS`
  - Refactored to use the public commands `Enable-SqlDscRsSecureConnection` and
    `Disable-SqlDscRsSecureConnection` for setting the secure connection level
    instead of calling the CIM method directly.
  - Refactored to use the public commands `Get-SqlDscRSUrlReservation`,
    `Add-SqlDscRSUrlReservation`, `Remove-SqlDscRSUrlReservation`, and
    `Set-SqlDscRSUrlReservation` for managing URL reservations instead of call'


        } # End of PSData hashtable

    } # End of PrivateData hashtable
}