CmdLets/Initialize-Variables.ps1
|
Function Initialize-Variables { [CmdletBinding()] Param( [Parameter(Mandatory=$True)]$Variables ) ForEach ($Variable in $Variables) { Write-Host "Processing Variable: $($Variable.Name)" ForEach ($ScriptBlock in $Variable.PreScriptBlocks) { Write-Host $ScriptBlock Invoke-Command -ScriptBlock ([ScriptBlock]::Create($ScriptBlock)) -NoNewScope } $Variable.Value = Convert-PlaceholderVariables -Value $Variable.Value -Variables $Variables if (Get-Variable -Name $Variable.Name -ErrorAction SilentlyContinue) { Write-Host "`tSetting Value: $($Variable.Value)" Set-Variable -Name $Variable.Name -Value $Variable.Value -Scope Global } else { Write-Host "`tCreating Value: $($Variable.Value)" New-Variable -Name $Variable.Name -Value $Variable.Value -Scope Global } ForEach ($ScriptBlock in $Variable.PostScriptBlocks) { Write-Host $ScriptBlock Invoke-Command -ScriptBlock ([ScriptBlock]::Create($ScriptBlock)) -NoNewScope } } } |