PurviewDLP.psm1
|
<# .SYNOPSIS PurviewDLP PowerShell Module - Root module loader. .DESCRIPTION This is the root module file for the PurviewDLP module. It loads all Private (internal) and Public (exported) functions and sets up the module state. .NOTES Module Name: PurviewDLP Author: uniQuk Version: 0.1.0 This module provides cmdlets for managing Microsoft Purview DLP policies including: - Connecting to Security & Compliance Center - Exporting DLP configurations - Updating notification settings - Restoring policies from backup - Generating policy reports #> #Requires -Version 7.0 # Module initialization Write-Verbose "Initializing PurviewDLP module..." # Get module root directory $script:ModuleRoot = $PSScriptRoot #region Load Private Functions Write-Verbose "Loading Private functions..." # Get all Private function files $privateFunctions = @( 'Common.ps1' 'LocationScope.ps1' 'PolicyHelper.ps1' 'ReportHelper.ps1' 'ValidationHelper.ps1' ) foreach ($functionFile in $privateFunctions) { $functionPath = Join-Path -Path $PSScriptRoot -ChildPath "Private\$functionFile" if (Test-Path -Path $functionPath) { Write-Verbose " Loading: $functionFile" . $functionPath } else { Write-Warning "Private function file not found: $functionPath" } } #endregion #region Load Public Functions Write-Verbose "Loading Public functions..." # Get all Public function files (cmdlets) $publicFunctions = Get-ChildItem -Path (Join-Path -Path $PSScriptRoot -ChildPath 'Public') -Filter '*.ps1' -ErrorAction SilentlyContinue if ($publicFunctions) { foreach ($functionFile in $publicFunctions) { Write-Verbose " Loading: $($functionFile.Name)" . $functionFile.FullName } } else { Write-Verbose "No Public functions found (cmdlets not yet created)" } #endregion #region Module State # Initialize module-level variables $script:ModuleVersion = '0.1.0' $script:ModuleName = 'PurviewDLP' # Module configuration (can be modified by users if needed) $script:ModuleConfig = @{ DefaultOutputPath = (Get-Location).Path VerboseOutput = $false ColorOutput = $true } #endregion #region Export Module Members # Export Public functions (cmdlets) # These will also be listed in the module manifest (PurviewDLP.psd1) $publicFunctionNames = $publicFunctions | ForEach-Object { $_.BaseName } if ($publicFunctionNames -and $publicFunctionNames.Count -gt 0) { Export-ModuleMember -Function $publicFunctionNames Write-Verbose "Exported $($publicFunctionNames.Count) public functions: $($publicFunctionNames -join ', ')" } else { # No public functions yet - this is Phase 1, only Private functions loaded # Explicitly export nothing to prevent Private functions from being exported Export-ModuleMember -Function @() Write-Verbose "No public functions to export (Phase 1: Foundation only)" } # Export module variables (if needed by advanced users) # Export-ModuleMember -Variable ModuleConfig #endregion #region Module Cleanup # Register cleanup action when module is removed $ExecutionContext.SessionState.Module.OnRemove = { Write-Verbose "Cleaning up PurviewDLP module..." # Add any cleanup code here if needed } #endregion Write-Verbose "PurviewDLP module loaded successfully" |