PurviewConfigAnalyser.psm1
# PurviewConfigAnalyser PowerShell Module # Main module file that imports all functions and sets up the module environment # Get the module root path $ModuleRoot = $PSScriptRoot # Import all private functions first $PrivateFunctions = Get-ChildItem -Path "$ModuleRoot\Private\*.ps1" -ErrorAction SilentlyContinue foreach ($Function in $PrivateFunctions) { . $Function.FullName } # Import all public functions $PublicFunctions = Get-ChildItem -Path "$ModuleRoot\Public\*.ps1" -ErrorAction SilentlyContinue foreach ($Function in $PublicFunctions) { . $Function.FullName } # Auto-install required dependencies if not present function Initialize-Dependencies { $RequiredModules = @( @{Name = 'ImportExcel'; MinVersion = '7.0.0'}, @{Name = 'ExchangeOnlineManagement'; MinVersion = '3.0.0'} ) foreach ($Module in $RequiredModules) { if (-not (Get-Module -ListAvailable -Name $Module.Name)) { Write-Host "Installing required module: $($Module.Name)..." -ForegroundColor Yellow try { Install-Module -Name $Module.Name -MinimumVersion $Module.MinVersion -Force -Scope CurrentUser -ErrorAction Stop Write-Host "✅ Successfully installed $($Module.Name)" -ForegroundColor Green } catch { Write-Warning "Failed to install $($Module.Name): $($_.Exception.Message)" } } } } # Initialize dependencies on module import Initialize-Dependencies # Export module members Export-ModuleMember -Function @( 'Invoke-PurviewConfigAnalyser', 'Get-PurviewConfig', 'Test-PurviewCompliance', 'New-CustomControlBook' ) # Module cleanup $MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = { # Cleanup code here if needed } |