2024-08-06 17:56:19 +01:00

77 lines
2.5 KiB
PowerShell

$RemoteURL = "https://git.mrmeeb.stream/MrMeeb/sure-recover-boot-wiper/raw/branch/main/payload"
$StagingDir = "$TEMP\SRBW"
# Make staging directory
mkdir -Path $StagingDir
# 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:\boot
# Download WinPE wim to C:\Sources\boot.wim
mkdir -Path C:\Sources
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
}