From d70615a32d305292bfe7458a53e4b9113c5452b7 Mon Sep 17 00:00:00 2001 From: rbalsleyMSFT <53497092+rbalsleyMSFT@users.noreply.github.com> Date: Mon, 23 Feb 2026 13:59:00 -0800 Subject: [PATCH] Added Helper Scripts section of FFU Builder docs site Added new docs for Create-PEMedia.ps1 and USBImagingToolCreator.ps1 files to help explain how to use the scripts. --- docs/build.md | 2 +- docs/create_pemedia.md | 91 ++++++++++++++++++ docs/helper_scripts.md | 20 ++++ .../1771882385742.png | Bin 0 -> 45771 bytes docs/usb_imaging_tool_creator.md | 76 +++++++++++++++ 5 files changed, 188 insertions(+), 1 deletion(-) create mode 100644 docs/create_pemedia.md create mode 100644 docs/helper_scripts.md create mode 100644 docs/image/usb_imaging_tool_creator/1771882385742.png create mode 100644 docs/usb_imaging_tool_creator.md diff --git a/docs/build.md b/docs/build.md index 76e6aa8..da20d45 100644 --- a/docs/build.md +++ b/docs/build.md @@ -620,7 +620,7 @@ During the build process, when **Build Deploy ISO** is enabled, the script creat You may want to disable Cleanup Deploy ISO in the following scenarios: -* **Creating deployment media separately**: When you want to create USB deployment drives at a later time (e.g. using `.\FFUDevelopment\USBImagingToolCreator.ps1`) +* **Creating deployment media separately**: When you want to create USB deployment drives at a later time, see [USB Imaging Tool Creator](/usb_imaging_tool_creator.html) for a staged workflow using `USBImagingToolCreator.ps1` with a deploy ISO, `FFU`, and `Drivers` folder (local path or network share). * **Testing in Hyper-V**: When deploying FFU images to Hyper-V VMs for testing, you can attach the deploy ISO directly to a VM as a DVD drive ## Cleanup Drivers diff --git a/docs/create_pemedia.md b/docs/create_pemedia.md new file mode 100644 index 0000000..c7b7720 --- /dev/null +++ b/docs/create_pemedia.md @@ -0,0 +1,91 @@ +--- +title: Create PE Media +nav_order: 1 +prev_url: /helper_scripts.html +prev_label: Helper Scripts +next_url: /usb_imaging_tool_creator.html +next_label: USB Imaging Tool Creator +parent: Helper Scripts +--- +# Create PE Media + +`Create-PEMedia.ps1` is a standalone helper script that creates WinPE capture or deployment ISO files outside the main build flow. + +This is useful when admins need to quickly generate a deploy ISO for a share (or local staging folder) that technicians will use with `USBImagingToolCreator.ps1`. + +## Common use case + +If your staging location does not already have a deployment ISO, run `Create-PEMedia.ps1` to generate one, then copy that ISO to the staging folder used by your technicians. + +## Prerequisites + +- Run from an elevated PowerShell session. +- Windows ADK + WinPE add-on must be installed (default path: `C:\Program Files (x86)\Windows Kits\10\`). +- Script should be run from the `FFUDevelopment` folder (or provide explicit paths via parameters). + +## Quick start (deploy ISO) + +From `FFUDevelopment`, this creates a deploy ISO by default: + +```powershell +.\Create-PEMedia.ps1 +``` + +Default output file: + +- `.\WinPE_FFU_Deploy_x64.iso` + +## Useful commands + +Create deploy ISO for x64: + +```powershell +.\Create-PEMedia.ps1 -Deploy $true -WindowsArch 'x64' +``` + +Create deploy ISO for ARM64: + +```powershell +.\Create-PEMedia.ps1 -Deploy $true -WindowsArch 'arm64' -DeployISO "$PSScriptRoot\WinPE_FFU_Deploy_arm64.iso" +``` + +Create capture ISO only: + +```powershell +.\Create-PEMedia.ps1 -Capture $true -Deploy $false +``` + +Create deploy ISO and include PE drivers from `.\PEDrivers`: + +```powershell +.\Create-PEMedia.ps1 -Deploy $true -CopyPEDrivers $true +``` + +## Stage output for USB imaging + +After creating the deploy ISO, place it in the same staging root used for USB media creation. + +Example: + +```text +\\Server\FFUStaging\ + WinPE_FFU_Deploy_x64.iso + FFU\ + .ffu + Drivers\ + +``` + +Then technicians can run: + +```powershell +.\USBImagingToolCreator.ps1 -DeployISOPath "\\Server\FFUStaging\WinPE_FFU_Deploy_x64.iso" -DisableAutoPlay +``` + +## Logging + +`Create-PEMedia.ps1` writes log output to: + +- `.\Create-PEMedia.log` (or custom path via `-LogFile`) + +{% include page_nav.html %} \ No newline at end of file diff --git a/docs/helper_scripts.md b/docs/helper_scripts.md new file mode 100644 index 0000000..87c65a4 --- /dev/null +++ b/docs/helper_scripts.md @@ -0,0 +1,20 @@ +--- +title: Helper Scripts +nav_order: 4 +prev_url: /ui_overview.html +prev_label: UI Overview +next_url: /create_pemedia.html +next_label: Create PE Media +has_children: true +has_toc: false +--- +# Helper Scripts + +This section documents standalone helper scripts used outside the primary UI-driven build workflow. + +## Available helper scripts + +- [Create PE Media](/create_pemedia.html) +- [USB Imaging Tool Creator](/usb_imaging_tool_creator.html) + +{% include page_nav.html %} diff --git a/docs/image/usb_imaging_tool_creator/1771882385742.png b/docs/image/usb_imaging_tool_creator/1771882385742.png new file mode 100644 index 0000000000000000000000000000000000000000..01599ff11847378036e2a4fbe8dbb8ef4e960d94 GIT binary patch literal 45771 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 Z`4?39e&(_wyzp$;XX+revd1=m{}0Xf!#n^0 literal 0 HcmV?d00001 diff --git a/docs/usb_imaging_tool_creator.md b/docs/usb_imaging_tool_creator.md new file mode 100644 index 0000000..798c3d3 --- /dev/null +++ b/docs/usb_imaging_tool_creator.md @@ -0,0 +1,76 @@ +--- +title: USB Imaging Tool Creator +nav_order: 2 +prev_url: /create_pemedia.html +prev_label: Create PE Media +parent: Helper Scripts +--- +# USB Imaging Tool Creator + +`USBImagingToolCreator.ps1` is a standalone helper for creating one or more deployment USB drives from a deploy ISO, FFU files, and optional drivers. This is best used when you want to provide remote technicians the FFU file(s) you've built and optionally a drivers folder that contains the drivers for the models they will need to manage. They can also provide their own drivers (using Drivers\Make\Model format (e.g Drivers\Dell\Optiplex 7060 (085D)) + +## How the script works + +- `-DeployISOPath` is required and should point to the deploy ISO file. +- The script uses the parent folder of that ISO as its working root. +- FFU files are copied from `\FFU` (all `.ffu` files, recursive). +- Drivers are copied from `\Drivers` (recursive) when present. +- If drivers are not found, the script creates an empty `Drivers` folder on each deploy partition. +- `-DisableAutoPlay` is optional and temporarily disables AutoPlay for the current user during media creation. This is useful in situations where you see File Explorer pop ups as it's building the USB drive. + +## Network share workflow (admin/technician) + +For a shared workflow, stage one folder on a share with the deploy ISO and content that technicians should copy to USB drives. + +If you do not already have a deployment ISO in the staging location, create one first using [Create PE Media](/create_pemedia.html). This lets admins quickly generate the deploy ISO and then stage it for technicians using `USBImagingToolCreator.ps1`. + +Example layout: + +```text +\\Server\FFUStaging\ + WinPE_FFU_Deploy.iso + FFU\ + .ffu + Drivers\ + +``` + +Run from an elevated PowerShell session: + +```powershell +.\USBImagingToolCreator.ps1 -DeployISOPath "\\Server\FFUStaging\WinPE_FFU_Deploy.iso" -DisableAutoPlay +``` + +The script passes `-DeployISOPath` directly to `Mount-DiskImage`, so use a path the local Windows host can mount. + +## Example folder structure + +In this example a folder named USBCreator was made and the Drivers and FFU folders as well as the WinPE_FFU_Deploy_x64.iso and USBImagingToolCreator.ps1 files were copied from the FFUDevelopment folder to this new folder. + +![1771882385742](image/usb_imaging_tool_creator/1771882385742.png) + +## What happens when you run it + +1. Detects disks with media type **Removable media** or **External hard disk media**. +2. Prompts for a single drive selection or an all-drives selection. +3. Stops `mmc` and `diskpart` processes to reduce drive lock issues. +4. Erases each selected disk and rebuilds it as MBR with: + - `Boot` partition (2 GB, FAT32, active) + - `Deploy` partition (remaining space, NTFS) +5. Mounts the deploy ISO and copies all ISO content to every `Boot` partition. +6. Copies FFU content to every `Deploy` partition. +7. Copies driver content into `Deploy\Drivers` (or creates an empty `Drivers` folder). +8. Dismounts the ISO and reports completion. + +{: .warning-title} + +> Warning +> +> Selected disks are fully erased (`Clear-Disk -RemoveData -RemoveOEM`), so verify drive selection carefully, especially when using the all-drives option. + +## Logging and progress + +- Progress is shown in the PowerShell progress UI. +- `Script.log` is written in the same folder as the deploy ISO (the working root folder). + +{% include page_nav.html %}