Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
252aa99
Add AllowAuditGuidChange parameter to Set-SqlDscAudit for GUID modifi…
johlju Oct 7, 2025
0e0337f
Remove specific error message expectation for AuditGuid modification …
johlju Oct 8, 2025
cfdce01
Refactor MaximumFileSizeUnit conversion for clarity in ConvertTo-SqlD…
johlju Oct 8, 2025
695576f
Align parameter names in Set-SqlDscAudit tests for consistency
johlju Oct 8, 2025
e8f57fa
Add ConvertTo-AuditNewParameterSet function and update related tests
johlju Oct 8, 2025
e53814f
Fix null check for OnFailure parameter in ConvertTo-AuditNewParameter…
johlju Oct 8, 2025
3630617
Enhance documentation for ConvertTo-AuditNewParameterSet with additio…
johlju Oct 8, 2025
d144bc7
Fix comments for clarity in BeforeDiscovery block of ConvertTo-AuditN…
johlju Oct 8, 2025
65a5c0f
Refactor GUID change handling in Set-SqlDscAudit function for clarity…
johlju Oct 8, 2025
bbb1f8a
Add INPUTS section to documentation for ConvertTo-AuditNewParameterSe…
johlju Oct 8, 2025
8030006
Refactor variable names for consistency and improve module loading pa…
johlju Oct 8, 2025
84d9c86
Change Write-Verbose to Write-Debug for improved logging in Set-SqlDs…
johlju Oct 8, 2025
632ab78
Refactor verbose messages to improve clarity in Set-SqlDscAudit function
johlju Oct 8, 2025
3323237
Fix typos and improve clarity in documentation for Set-SqlDscAudit fu…
johlju Oct 8, 2025
821237f
Add test for updating properties with existing AuditGuid in Set-SqlDs…
johlju Oct 8, 2025
f82d21c
Refactor Set-SqlDscAudit tests to set Guid property directly on SMO o…
johlju Oct 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Added integration tests for `Add-SqlDscTraceFlag` command to ensure it functions
correctly in real environments
[issue #2214](https://github.com/dsccommunity/SqlServerDsc/issues/2214).
- `Set-SqlDscAudit`
- Added `AllowAuditGuidChange` parameter to enable modifying the audit GUID
by dropping and recreating the audit with the new GUID. This parameter is
required when changing the `AuditGuid` property because SQL Server does not
allow direct modification of the audit GUID ([issue #2287](https://github.com/dsccommunity/SqlServerDsc/issues/2287)).

### Changed

Expand Down
144 changes: 144 additions & 0 deletions source/Private/ConvertTo-AuditNewParameterSet.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
<#
.SYNOPSIS
Converts audit object properties to parameters for New-SqlDscAudit.

.DESCRIPTION
This helper function analyzes an existing audit object and returns a hashtable
of parameters that can be splatted to New-SqlDscAudit to recreate the audit
with the same configuration.

.PARAMETER AuditObject
The audit object to analyze.

.PARAMETER AuditGuid
Optional GUID to set on the audit. If not specified, the existing GUID is used.

.EXAMPLE
$serverObject = Connect-SqlDscDatabaseEngine
$auditObject = $serverObject.Audits['MyAudit']
$parameters = ConvertTo-AuditNewParameterSet -AuditObject $auditObject

Converts an existing audit object to a parameter set that can be used with New-SqlDscAudit.

.EXAMPLE
$serverObject = Connect-SqlDscDatabaseEngine
$auditObject = $serverObject.Audits['MyAudit']
$parameters = ConvertTo-AuditNewParameterSet -AuditObject $auditObject -AuditGuid '12345678-1234-1234-1234-123456789012'

Converts an existing audit object to a parameter set with a custom GUID.

.INPUTS
None

This function does not accept pipeline input.

.OUTPUTS
System.Collections.Hashtable

Returns a hashtable of parameters for New-SqlDscAudit.
#>
function ConvertTo-AuditNewParameterSet
{
[CmdletBinding()]
[OutputType([System.Collections.Hashtable])]
param
(
[Parameter(Mandatory = $true)]
[Microsoft.SqlServer.Management.Smo.Audit]
$AuditObject,

[Parameter()]
[System.String]
$AuditGuid
)

$parameters = @{
ServerObject = $AuditObject.Parent
Name = $AuditObject.Name
}

# Determine LogType or Path based on DestinationType
switch ($AuditObject.DestinationType)
{
'ApplicationLog'
{
$parameters['LogType'] = 'ApplicationLog'
}

'SecurityLog'
{
$parameters['LogType'] = 'SecurityLog'
}

'File'
{
$parameters['Path'] = $AuditObject.FilePath

# Add file size parameters if set (not unlimited)
if ($AuditObject.MaximumFileSize -gt 0)
{
$parameters['MaximumFileSize'] = $AuditObject.MaximumFileSize

# Convert SMO unit to parameter value
$parameters['MaximumFileSizeUnit'] = switch ($AuditObject.MaximumFileSizeUnit)
{
'MB'
{
'Megabyte'
}
'GB'
{
'Gigabyte'
}
'TB'
{
'Terabyte'
}
}
}

# Add MaximumFiles or MaximumRolloverFiles (mutually exclusive)
if ($AuditObject.MaximumFiles -gt 0)
{
$parameters['MaximumFiles'] = $AuditObject.MaximumFiles

if ($AuditObject.ReserveDiskSpace)
{
$parameters['ReserveDiskSpace'] = $true
}
}
elseif ($AuditObject.MaximumRolloverFiles -gt 0)
{
$parameters['MaximumRolloverFiles'] = $AuditObject.MaximumRolloverFiles
}
}
}

# Add optional parameters if they have values
if ($null -ne $AuditObject.OnFailure)
{
$parameters['OnFailure'] = $AuditObject.OnFailure
}

if ($AuditObject.QueueDelay -gt 0)
{
$parameters['QueueDelay'] = $AuditObject.QueueDelay
}

if ($AuditObject.Filter)
{
$parameters['AuditFilter'] = $AuditObject.Filter
}

# Use provided GUID or existing GUID
if ($PSBoundParameters.ContainsKey('AuditGuid'))
{
$parameters['AuditGuid'] = $AuditGuid
}
elseif ($AuditObject.Guid -and $AuditObject.Guid -ne '00000000-0000-0000-0000-000000000000')
{
$parameters['AuditGuid'] = $AuditObject.Guid
}

return $parameters
}
Loading
Loading