private/WinPEStartup/Initialize-WinPEStartupMain.ps1
|
#requires -Version 5.1 function Initialize-WinPEStartupMain { <# .SYNOPSIS Runs wpeinit and wpeutil to initialize the WinPE environment .DESCRIPTION Executes wpeinit.exe for hardware initialization, then runs wpeutil DisableFirewall and wpeutil UpdateBootInfo. This is the PowerShell equivalent of the wpeinit/wpeutil block in startnet.cmd / ReStartnet.cmd. .EXAMPLE Initialize-WinPEStartupMain Runs wpeinit and wpeutil initialization commands. .EXAMPLE Initialize-WinPEStartupMain -Verbose Runs initialization with detailed progress output. .NOTES Author: David Segura Module: OSDCloud #> [CmdletBinding()] [OutputType([void])] param () begin { $skipExecution = $false if ($env:SystemDrive -ne 'X:') { Write-Warning 'Initialize-WinPEStartupMain: Not running in WinPE (SystemDrive is not X:). Exiting.' $skipExecution = $true return } Write-Verbose 'Initialize-WinPEStartupMain: Starting' } process { if ($skipExecution) { return } Write-Host -ForegroundColor DarkGray "[$(Get-Date -format s)] Initialize wpeinit" Write-Host -ForegroundColor DarkGray "[$(Get-Date -format s)] Initialize wpeutil" Write-Verbose 'Running wpeinit.exe' Invoke-WpeInit Start-Sleep -Seconds 2 # Wait for wpeinit to complete before running wpeutil commands Write-Verbose 'Running wpeutil DisableFirewall' Invoke-WpeUtil -Command 'DisableFirewall' Start-Sleep -Seconds 2 # Wait for wpeutil DisableFirewall to complete before running wpeutil UpdateBootInfo Write-Verbose 'Running wpeutil UpdateBootInfo' Invoke-WpeUtil -Command 'UpdateBootInfo' Start-Sleep -Seconds 2 # Wait for wpeutil UpdateBootInfo to complete before proceeding Write-Host -ForegroundColor DarkGray "[$(Get-Date -format s)] Initialize network" ipconfig /release | Out-Null ipconfig /renew | Out-Null # Open a new powershell session minimized with no logo Start-Process -FilePath 'powershell.exe' -ArgumentList '-NoLogo', '-WindowStyle', 'Minimized' } end { if ($skipExecution) { return } Write-Verbose 'Initialize-WinPEStartupMain: Complete' } } |