functions/general/Activate-TmfConfiguration.ps1
function Activate-TmfConfiguration { <# .SYNOPSIS Activates already created TMF configurations. .DESCRIPTION Activate configurations you want to apply to your tenant. An activated configuration will be considered when testing or invoking configurations. .PARAMETER ConfigurationPaths One or more paths to Tenant Management Framework configuration directories can be provided. .PARAMETER Force Overwrite already loaded configurations. .PARAMETER DoNotLoad Do not load resource definitions after activating. .EXAMPLE PS> Activate-TmfConfiguration -ConfigurationPaths "C:\Temp\SomeConfiguration" Activates the configuration in path C:\Temp\SomeConfiguration. #> [CmdletBinding()] Param ( [string[]] $ConfigurationPaths, [switch] $Force, [switch] $DoNotLoad ) begin { $configurationsToActivate = @() foreach ($path in $ConfigurationPaths) { $configuration = [PSCustomObject] @{ filePath = "{0}\configuration.json" -f $path directoryPath = $path alreadyActivated = $false } if (!(Test-Path $configuration.filePath)) { Stop-PSFFunction -String "TMF.ConfigurationFileNotFound" -StringValues $configuration.filePath return } else { # Clean configuration path $configuration.filePath = Resolve-PSFPath -Provider FileSystem -Path $configuration.filePath -SingleItem } $contentDummy = Get-Content $configuration.filePath | ConvertFrom-Json -ErrorAction Stop $contentDummy | Get-Member -MemberType NoteProperty | ForEach-Object { Add-Member -InputObject $configuration -MemberType NoteProperty -Name $_.Name -Value $contentDummy.$($_.Name) } $configuration.alreadyActivated = $script:activatedConfigurations.Name -contains $configuration.Name if (!$Force -and $configuration.alreadyActivated) { Write-PSFMessage -Level Warning -String "Activate-TMFConfiguration.AlreadyActivated" -StringValues $configuration.Name, $configuration.filePath } $configurationsToActivate += $configuration } } process { if (Test-PSFFunctionInterrupt) { return } foreach ($configuration in $configurationsToActivate) { if ($Force -and $configuration.alreadyActivated) { Write-PSFMessage -Level Host -String "Activate-TMFConfiguration.RemovingAlreadyLoaded" -StringValues $configuration.Name, $configuration.directoryPath -NoNewLine $script:activatedConfigurations = @($script:activatedConfigurations | Where-Object {$_.Name -ne $configuration.Name}) Write-PSFHostColor -String ' [<c="green">DONE</c>]' } elseif (!$Force -and $configuration.alreadyActivated) { continue } Write-PSFMessage -Level Host -String "Activate-TMFConfiguration.Activating" -StringValues $configuration.Name, $configuration.filePath -NoNewLine $script:activatedConfigurations += $configuration | Select-Object Name, @{Name = "Path"; Expression = {$_.directoryPath}}, Description, Author, Weight, Prerequisite Write-PSFHostColor -String ' [<c="green">DONE</c>]' } Write-PSFMessage -Level Host -String "Activate-TMFConfiguration.Sort" -NoNewLine $script:activatedConfigurations = @($script:activatedConfigurations | Sort-Object Weight) Write-PSFHostColor -String ' [<c="green">DONE</c>]' } end { if (!$DoNotLoad) { Load-TmfConfiguration } } } |