Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
# minimum size of USB stick 5.29GB
# Set here the path of your ISO file
$iso = 'C:\Users\localuser\Downloads\en_windows_server_2016_x64_dvd_9327751.iso'
# Clean ! will clear any plugged-in USB stick!!
Get-Disk | Where BusType -eq 'USB' |
Clear-Disk -RemoveData -Confirm:$true -PassThru
# Convert GPT
if ((Get-Disk | Where BusType -eq 'USB').PartitionStyle -eq 'RAW') {
Get-Disk | Where BusType -eq 'USB' |
Initialize-Disk -PartitionStyle GPT
} else {
Get-Disk | Where BusType -eq 'USB' |
Set-Disk -PartitionStyle GPT
# Create partition primary and format to FAT32
$volume = Get-Disk | Where BusType -eq 'USB' |
New-Partition -UseMaximumSize -AssignDriveLetter |
Format-Volume -FileSystem FAT32
if (Test-Path -Path "$($volume.DriveLetter):\") {
# Mount iso
$miso = Mount-DiskImage -ImagePath $iso -StorageType ISO -PassThru
# Driver letter
$dl = ($miso | Get-Volume).DriveLetter
if (Test-Path -Path "$($dl):\sources\install.wim") {
# Copy ISO content to USB except install.wim
& (Get-Command "$($env:systemroot)\system32\robocopy.exe") @(
# Split install.wim
& (Get-Command "$($env:systemroot)\system32\dism.exe") @(
# Eject USB
(New-Object -comObject Shell.Application).NameSpace(17).
# Dismount ISO
Dismount-DiskImage -ImagePath $iso
Copy link

soyfrien commented Aug 31, 2017

This is fantastic, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment