CmdLets/Master/Start-MasterBuild.ps1
|
Function Start-MasterBuild() { [CmdletBinding()] Param( [Parameter(Mandatory=$True)] $State ) $ProgressPreference = 'SilentlyContinue' $Global:Environment = $State.BaseFile | Get-Content | ConvertFrom-Json If ($State.OverlayFile) { $Global:Config = $State.OverlayFile | Get-Content | ConvertFrom-Json } $FileShares = If ($State.Shares) { $State.Shares } else { @($Config.FileShares + $Environment.FileShares) } $Global:Variables = @($Config.Variables + $Environment.Variables) $PreScriptBlocks = @($Config.Phases.($State.Phase).PreScriptBlocks + $Environment.Phases.($State.Phase).PreScriptBlocks) $Applications = @($Config.Phases.($State.Phase).Applications + $Environment.Phases.($State.Phase).Applications) $RegistrySettings = @($Config.Phases.($State.Phase).RegistrySettings + $Environment.Phases.($State.Phase).RegistrySettings) $PostScriptBlocks = @($Config.Phases.($State.Phase).PostScriptBlocks + $Environment.Phases.($State.Phase).PostScriptBlocks) If ($State.Pause.IsPresent) {Read-Host "Pausing before Phase: $($State.Phase), Press Enter to continue"} Initialize-PreReqs Initialize-Variables -Variables $Global:Variables Connect-FileShares -FileShares $FileShares Switch ($Environment.Version) { Default { Invoke-ScriptBlocks -ScriptBlocks $PreScriptBlocks Install-Applications -Applications $Applications Sync-RegistrySettings -RegistrySettings $RegistrySettings Invoke-ScriptBlocks -ScriptBlocks $PostScriptBlocks } 2 { Invoke-ScriptBlocks -ScriptBlocks $PreScriptBlocks Initialize-Library -Library (Get-Childitem (Join-Path $LibraryPath "*.json")) $Applications | Get-LibraryApplication | Save-LibraryApplication -Path $SoftwarePath $Applications | Get-LibraryApplication | Install-LibraryApplication -Path $SoftwarePath $Applications | Get-LibraryApplication | Sync-LibraryApplicationRegistry Sync-RegistrySettings -RegistrySettings $RegistrySettings Invoke-ScriptBlocks -ScriptBlocks $PostScriptBlocks } } } |