Public/Watch-OSDCloudProvisioning.ps1
function Watch-OSDCloudProvisioning { [CmdletBinding()] param ( [Parameter(Mandatory, Position = 1)] [scriptblock]$OSDCloudScript, [Parameter()] [Switch]$Window, [Parameter()] [ValidateSet("Win10", "Win11")] [string]$Style = "Win10", [Parameter()] [string]$TemplateFile = $DefaultTemplate ) begin { try { # Start screen first ################################################### if (-not(Test-PipeServer)) { Write-Verbose "No Named Pipe server running, starting OSDProgress in same process" $PSBoundParameters.Remove('OSDCloudScript') | Out-Null Invoke-OSDProgress @PSBoundParameters } # Prepare Environment ################################################### $OSDModuleInstalled = Test-OSDModule if (!$OSDModuleInstalled) { throw "Could not detect David Saguras OSD Module" } # Override 'Save-WebFile' function of OSD module ################################################### Register-OSDOverride # Start monitoring OSDCloud status ################################################### $winpeLog = Join-Path $env:windir "system32\winpeLog.log" Watch-OSDCloudLog -WinPELog $winpeLog } catch { $message = $_.Exception.Message Update-OSDProgress -DisplayError $message } } process { try { # Invoke passed Scriptblock ################################################### . $OSDCloudScript # Finaly done ################################################### Update-OSDProgress -Phase Finish } catch { $message = $_.Exception.Message Update-OSDProgress -DisplayError $message } } end { Stop-Transcript | Out-Null Unregister-OSDOverride } } |