TSAD.psm1
#region get public and private function definition files. $Public = @( Get-ChildItem -Path $PSScriptRoot\Public\*.ps1 -ErrorAction SilentlyContinue ) $Private = @( Get-ChildItem -Path $PSScriptRoot\Private\*.ps1 -ErrorAction SilentlyContinue ) #endregion #region source the files foreach ($Function in @($Public + $Private)) { $FunctionPath = $Function.fullname try { . $FunctionPath # dot source function } catch { Write-Error -Message "Failed to import function at $(FunctionPath): $_" } } #endregion #region read in or create an initial config file and variable $ConfigFile = "Config.psd1" $Params = @{ BaseDirectory = $PSScriptRoot FileName = $ConfigFile } if (Test-Path "$PSScriptRoot\$ConfigFile") { try { $Config = Import-LocalizedData @Params foreach ($variable in $Config.keys) { Write-Verbose "Setting $var variable." New-Variable -Name "$variable" -Value $Config.$variable -Force } } catch { Write-Warning "Invalid configuration data in $ConfigFile." Write-Warning "Please fill out or correct $PSScriptRoot\$ConfigFile." Write-Verbose $_.Exception.Message Write-Verbose $_.InvocationInfo.ScriptName Write-Verbose $_.InvocationInfo.PositionMessage } } else { @" @{ ADGlobalCatalog = "" AzureSyncServer = "" DomainPwdFile = "" DomainToDN = @{ '' = '' '' = '' '' = '' '' = '' } DNToDomain = @{ '' = '' '' = '' '' = '' '' = '' } } "@ | Out-File -Encoding UTF8 -FilePath "$PSScriptRoot\$ConfigFile" Write-Warning "Generated $PSScriptRoot\$ConfigFile." Write-Warning "Please edit $ConfigFile and re-import module." } #endregion #region set variables visible to the module and its functions only $Date = Get-Date -UFormat "%Y.%m.%d" $Time = Get-Date -UFormat "%H:%M:%S" $Green = @{ Background = 'Black' Foreground = 'Green' } $Cyan = @{ Background = 'Black' Foreground = 'Cyan' } $Magenta = @{ Background = 'Black' Foreground = 'Magenta' } #endregion #region export Public functions ($Public.BaseName) for WIP modules Export-ModuleMember -Function $Public.Basename #endregion |