Public/Invoke-xSConfig.ps1
function Invoke-xSConfig { [cmdletbinding()] param() begin { If (-not (Get-Module SConfig -ListAvailable)) { Throw "'SConfig' Module is missing. xSconfig cannot be used without it." } else { Import-Module SConfig $Module = Get-Module SConfig } } process { & $Module { # Pull in private functions to SConfig Module Scope if (Test-Path -Path $PSScriptRoot\..\Private\) { Get-ChildItem -Path $PSScriptRoot\..\Private\*-*.ps1 | ForEach-Object { . $_.FullName } } # IF # Update Menu Items $MenuItemsScriptBlock = Get-Command -Name Get-MenuItems -Module SConfig | Select-Object -ExpandProperty ScriptBlock $AdditionalMenuItems = @" 16) Extras $($Strings.MenuOptions_Prompt) "@ $UpdatedMenuItems = @" function Get-MenuItems { $($MenuItemsScriptBlock.ToString().Replace(' $($Strings.MenuOptions_Prompt)', $AdditionalMenuItems)) } "@ Invoke-Expression -Command $UpdatedMenuItems $SconfigScriptblock = Get-Command -Name Invoke-SConfig -Module SConfig | Select-Object -ExpandProperty ScriptBlock $UpdatedSconfigScriptblock = $SconfigScriptblock -replace '(switch \(Get\-MenuSelection\) \{)','$1 "16" { Invoke-ExtrasMenu } ' Invoke-Expression -Command $UpdatedSconfigScriptblock # This script's "main" function Invoke-SConfig } } } |