Public/Run-ADModuleTasksFromConfig.ps1
<#
.SYNOPSIS Executes Active Directory automation tasks based on the configuration defined in a JSON file. .DESCRIPTION This function serves as a centralized runner for multiple AD-related automation tasks such as: - Adding users to distribution lists - Removing users from distribution lists - Generating line manager reports - Generating group membership reports Each task is optional and controlled via a JSON config file. Domains and other shared settings are managed through that config. .PARAMETER ConfigFile Path to the JSON configuration file containing the task definitions and parameters. .EXAMPLE Run-ADModuleTasksFromConfig -ConfigFile "C:\Configs\ADTasksConfig.json" #> function Run-ADModuleTasksFromConfig { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [string]$ConfigFile ) # Load configuration from JSON $config = Get-Content -Path $ConfigFile | ConvertFrom-Json $domains = $config.Domains Write-Host "`n[+] Loaded configuration from $ConfigFile" -ForegroundColor Cyan # Add Users to Distribution Lists if ($config.AddUsersToDL) { Write-Host "`n[+] Running: Add-UsersToDistributionLists" -ForegroundColor Green Add-UsersToDistributionLists -InputFile $config.AddUsersToDL.InputFile ` -GroupColumn $config.AddUsersToDL.GroupColumn ` -EmailColumn $config.AddUsersToDL.EmailColumn ` -LogPrefix $config.AddUsersToDL.LogPrefix ` -LogLocation $config.AddUsersToDL.LogLocation ` -Domains $domains } # Remove Users from Distribution Lists if ($config.RemoveUsersFromDL) { Write-Host "`n[+] Running: Remove-UsersFromDistributionLists" -ForegroundColor Green Remove-UsersFromDistributionLists -InputFile $config.RemoveUsersFromDL.InputFile ` -GroupColumn $config.RemoveUsersFromDL.GroupColumn ` -EmailColumn $config.RemoveUsersFromDL.EmailColumn ` -LogPrefix $config.RemoveUsersFromDL.LogPrefix ` -LogLocation $config.RemoveUsersFromDL.LogLocation ` -Domains $domains } # Line Manager Report if ($config.LineManagerReport) { Write-Host "`n[+] Running: Get-LineManagerReport" -ForegroundColor Green Get-LineManagerReport -InputCsvFile $config.LineManagerReport.InputCsvFile ` -EmailColumn $config.LineManagerReport.EmailColumn ` -DepartmentColumn $config.LineManagerReport.DepartmentColumn ` -Domains $domains } # Group Member Report (can handle multiple CSVs) if ($config.GroupMemberReport) { Write-Host "`n[+] Running: Get-ADGroupMembersFromCsv for each file..." -ForegroundColor Green foreach ($file in $config.GroupMemberReport.CsvFiles) { Get-ADGroupMembersFromCsv -CsvFile $file ` -ColumnName $config.GroupMemberReport.ColumnName ` -LabelPrefix $config.GroupMemberReport.LabelPrefix ` -LogLocation $config.GroupMemberReport.LogLocation ` -Domains $domains } } Write-Host "`n[✓] All configured tasks executed." -ForegroundColor Cyan } |