#Requires -RunAsAdministrator $RemoteURL = $args[0] $StagingDir = $PSScriptRoot #Disable progress bars to make Invoke-WebRequest actually fast $ProgressPreference = 'SilentlyContinue' # Download compressed boot dir to Staging Dir Invoke-WebRequest -Uri $RemoteURL/boot.zip -OutFile $StagingDir\boot.zip # Expand boot.zip to C:\Boot Expand-Archive -Path $StagingDir\boot.zip -DestinationPath C:\ -Force # Download WinPE wim to C:\Sources\boot.wim New-Item -ItemType "Directory" -Path C:\Sources -Force Invoke-WebRequest -Uri $RemoteURL/boot.wim -OutFile C:\Sources\boot.wim function BootToPE { <# .Synopsis This script will create a ramdisk containing the boot.wim which the computer will boot to on restart. This script will work only on Windows Imaging environment. .Prerequisites - From the Windows PE boot USB, copy boot.wim in the Sources folder to C:\Sources on the target - From the Windows PE boot USB, copy the Boot folder to C:\ on the target .Notes Because "bcdedit /bootsequence" is used, the computer should boot back into Windows when restarted if imaging is cancelled. #> # Checks that Disk 0 is the boot disk. $DISKZERO = Get-Disk 0 If ($DISKZERO.IsBoot -ne $true) { Write-Host "Disk 0 is not the boot disk. Exiting..." Exit 999 } else { Write-Host "Disk 0 is the boot disk. Proceeding..." } # Create {ramdiskoptions} and configure bcdedit -create "{ramdiskoptions}" bcdedit /set "{ramdiskoptions}" ramdisksdidevice partition=C: bcdedit /set "{ramdiskoptions}" ramdisksdipath \boot\boot.sdi # Add LiteTouch boot device to OSLOADER $Output = bcdedit -create /d "LiteTouch MDT" /application OSLOADER # Obtain LiteTouch boot device GUID $LTGUID = $Output | %{ $_.split(' ')[2] } # Configure LiteTouch to ramdisk boot bcdedit /set $LTGUID device "ramdisk=[C:]\sources\boot.wim,{ramdiskoptions}" bcdedit /set $LTGUID osdevice "ramdisk=[C:]\sources\boot.wim,{ramdiskoptions}" bcdedit /set $LTGUID systemroot \windows bcdedit /set $LTGUID detecthal yes bcdedit /set $LTGUID winpe yes # Adjust for UEFI vs Legacy BIOS types if ($env:firmware_type -eq 'UEFI'){ Write-Host "UEFI boot confirmed." bcdedit /set $LTGUID path \windows\system32\boot\winload.efi } Else { Write-Host "Legacy boot confirmed." bcdedit /set $LTGUID path \windows\system32\boot\winload.exe } # Force LiteTouch ramdisk on next boot and restart bcdedit /bootsequence $LTGUID shutdown /r /f /t 0 } Remove-Item -Path $StagingDir -Recurse