functions/Invoke-RunLab.ps1
Function Invoke-RunLab { [CmdletBinding(SupportsShouldProcess)] [alias("Run-Lab")] Param ( [Parameter(HelpMessage = "The path to the configuration folder. Normally, you should run all commands from within the configuration folder.")] [ValidateNotNullOrEmpty()] [ValidateScript( { Test-Path $_ })] [String]$Path = ".", [Parameter(HelpMessage = "Run the command but suppress all status messages.")] [Switch]$NoMessages ) $Path = Convert-Path $path if (-Not $NoMessages) { Microsoft.PowerShell.Utility\Write-Host -ForegroundColor Green -Object @" This is the Run-Lab script. This script will perform the following: * Start the Lab environment Note! If this is the first time you have run this, it can take up to an hour for the DSC configurations to apply and converge. "@ } $LabName = Split-Path (Get-Location) -Leaf $DataPath = Join-Path $(Convert-Path $path) -ChildPath "*.psd1" if (-Not $NoMessages) { Microsoft.PowerShell.Utility\Write-Host -ForegroundColor Cyan -Object "Starting the lab environment from $DataPath" } $data = Import-PowerShellDataFile -Path $DataPath # Creates the lab environment without making a Hyper-V Snapshot if ($PSCmdlet.ShouldProcess($LabName, "Start Lab")) { try { Start-Lab -ConfigurationData $data -ErrorAction Stop } Catch { Write-Warning "Failed to start lab. Are you running this in the correct configuration directory? $($_.exception.message)" #bail out because no other commands are likely to work return } if (-Not $NoMessages) { Microsoft.PowerShell.Utility\Write-Host -ForegroundColor Green -Object @" Next Steps: To enable Internet access for the VM's, run: Enable-Internet Run the following to validate when configurations have converged: Validate-Lab To stop the lab VM's: Shutdown-lab When the configurations have finished, you can checkpoint the VM's with: Snapshot-Lab To quickly rebuild the labs from the checkpoint, run: Refresh-Lab To destroy the lab to build again: Wipe-Lab "@ } } #WhatIf } |