If your PC can boot from a NTFS formatted USB drive, you don't need this script; all depends on the firmware of your PC.
The implemented correction is incomplete. Change lines 172-173 by : Code: Try{Clear-Disk $USB -RemoveData -RemoveOEM -Confirm:$False -ErrorAction Stop Set-Disk $USB -PartitionStyle MBR -ErrorAction Stop} (add -ErrorAction Stop) The complete updated script : Spoiler Code: <# : standard way of doing hybrid batch + powershell scripts @title Win10+ Setup Disk 2.8 &color 3E @powershell -noprofile "$param='%*';$ScriptPath='%~f0';iex((Get-Content('%~f0') -Raw))" &exit/b #> # # Homepage: https://forums.mydigitallife.net/threads/win10-setup-disk-works-with-uefi-with-secure-boot-bios-install-wim-over-4-gb.79268/ # Credits: @rpo, @freddie-o, @BAU & @abbodi1406 # # This script must be executed with admin privilege # # Test Administrator privileges If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { $uac_error="Elevating UAC for Administrator Privileges failed" # The following test is to avoid infinite looping if elevating UAC for Administrator Privileges failed if ($param -eq $uac_error) { read-host "$uac_error`r`nRight click on the script and select ""Run as administrator""`r`nPress Enter to exit...";exit} # Restart the script to get Administrator privileges and exit Start-Process "$ScriptPath" $uac_error -Verb runAs; exit } $pswindow = $host.ui.rawui # create a reference to the console’s UI.RawUI child object $pswindow.windowtitle = ([string]($pswindow.windowtitle -split "^.* ")).trim() ; $ShortTitle=($pswindow.windowtitle -split " @ .*")[0] # Add-Type -AssemblyName System.Windows.Forms # Load the class System.Windows.Forms # Filebrowser dialog object $FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{ Multiselect = $false # One file can be chosen Filter = 'ISO images (*.iso)|*.iso' # Select only iso files } # Function MsgBox {[System.Windows.Forms.MessageBox]::Show($Args[0],$ShortTitle,$Args[1],$Args[2])} # Function Update_bcd ($usbpartition) { "Set bootmenupolicy Legacy for $usbpartition" & bcdedit /store "$usbpartition\boot\bcd" /set '{default}' bootmenupolicy Legacy |Out-Null & bcdedit /store "$usbpartition\EFI\Microsoft\boot\bcd" /set '{default}' bootmenupolicy Legacy |Out-Null remove-item "$usbpartition\boot\bcd.*" -force remove-item "$usbpartition\EFI\Microsoft\boot\bcd.*" -force } # clear-host $USB=$Null $Form=New-Object System.Windows.Forms.Form # Create the screen form (window) $Form.TopMost = $True # Set the title and size of the window: $Form.Text=$ShortTitle $Form.Font='Consolas,10' $Form.Width=420 ; $Form.Height=270 $Form.StartPosition = "CenterScreen" $Form.SizeGripStyle = "Hide" [System.Windows.Forms.Application]::EnableVisualStyles(); # Add a Source Windows ISO label on the form $SourceISO=New-Object System.Windows.Forms.Label $SourceISO.Location=New-Object System.Drawing.Point(20,30) $SourceISO.Size=New-Object System.Drawing.Size(200,20) $SourceISO.text="Source Windows ISO" $Form.Controls.Add($SourceISO) # Add the ISO file name on the form $ISOFile=New-Object System.Windows.Forms.Label $ISOFile.Location=New-Object System.Drawing.Point(20,50) $ISOFile.Text=" " $ISOFile.Size=New-Object System.Drawing.Size(364,24) $ISOFile.Backcolor = [System.Drawing.Color]::White $ISOFile.BorderStyle = [System.Windows.Forms.BorderStyle]::FixedSingle $Form.Controls.Add($ISOFile) # Add a Target USB Disk label on the form $TargetUSB=New-Object System.Windows.Forms.Label $TargetUSB.Location=New-Object System.Drawing.Point(20,100) $TargetUSB.Text="Target USB Disk" $TargetUSB.Size=New-Object System.Drawing.Size(200,20) $Form.Controls.Add($TargetUSB) # Create a USB Disk drop-down list and fill it $USBDiskList=New-Object System.Windows.Forms.ComboBox $USBDiskList.DropDownStyle=[System.Windows.Forms.ComboBoxStyle]::DropDownList; $USBDiskList.Location=New-Object System.Drawing.Point(20,120) $USBDiskList.Size=New-Object System.Drawing.Size(363,22) $Form.Controls.Add($SelectUSBDiskList) $USBDisks=@() # array with USB disk number # $Disks=$Null;While (!$Disks){ If(!($Disks=Get-Disk | Where-Object {($_.BusType -eq "USB") -and ($_.OperationalStatus -eq "Online")})){ If((MsgBox "Plug in your USB disk first. `n`nClick OK to continue." "OKCancel" "Information") -eq "Cancel") {exit}}} # Add a Select ISO button on the form $SelectISOButton=New-Object System.Windows.Forms.Button $SelectISOButton.Location=New-Object System.Drawing.Point(20,185) $SelectISOButton.Text="Select ISO" $SelectISOButton.Size=New-Object System.Drawing.Size(110,26) $Form.Controls.Add($SelectISOButton) # Add a Create Setup Disk button on the form $CreateDiskButton=New-Object System.Windows.Forms.Button $CreateDiskButton.Location=New-Object System.Drawing.Point(140,185) $CreateDiskButton.Text="Create Setup Disk" $CreateDiskButton.Size=New-Object System.Drawing.Size(155,26) $Form.Controls.Add($CreateDiskButton) $CreateDiskButton.Enabled = $false $CreateDiskButton.DialogResult = [System.Windows.Forms.DialogResult]::OK # Add a Cancel button on the form $CancelButton=New-Object System.Windows.Forms.Button $CancelButton.Location=New-Object System.Drawing.Point(305,185) $CancelButton.Text="Cancel" $CancelButton.Size=New-Object System.Drawing.Size(80,26) $Form.Controls.Add($CancelButton) $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel # $SelectISOButton.Add_Click({ If ($FileBrowser.ShowDialog() -ne "Cancel"){ # if Cancel, just ignore $Global:ImagePath = $FileBrowser.filename # return the file name $ISOFile.Text= Split-Path -Path $ImagePath -leaf # extract filename and extension (iso) if (($ISOFile.Text).length -gt 44) {$ISOFile.Text = $ImagePath.PadRight(100," ").substring(0,43)+"..."} $CreateDiskButton.Enabled = $true $CreateDiskButton.Focus()}}) Foreach ($USBDisk in $Disks) { $FriendlyName=($USBDisk.FriendlyName).PadRight(40," ").substring(0,39) $USBDisks+=$USBDisk.DiskNumber $USBDiskList.Items.Add(("{0,-39}{1:n2} GB" -f $FriendlyName,($USBDisk.Size/1GB)))|out-null If ($Partitions) { Foreach ($Partition in $Partitions) { If(!$Partition.DriveLetter){$AccessPath=" "} Else {$AccessPath=$Partition.DriveLetter+":"} $Volumes=get-volume | Where-Object {$Partition.AccessPaths -contains $_.path } Foreach ($Volume in $Volumes) { $USBDisks+=$USBDisk.DiskNumber $USBDiskList.Items.Add(("{0,0}({1,2}){2,-32}[{3:n2} GB]" -f " ", ($AccessPath), $Volume.FileSystemLabel.PadRight(25," ").substring(0,25), ($Partition.Size/1GB)))|out-null } } } } $form.Controls.Add($USBDiskList) $USBDiskList.SelectedIndex=0 # $Groupbox=New-Object System.Windows.Forms.Groupbox # Add a group box on the form $Groupbox.Location=New-Object System.Drawing.Point(7,0) $Groupbox.Text="" $Groupbox.Size=New-Object System.Drawing.Size(390,225) $Form.Controls.Add($Groupbox) # @" 1.) Select "Source Windows ISO" 2.) Select "Target USB disk" 3.) Start "Create Setup Disk" "@| Write-Host # if($form.ShowDialog() -eq "Cancel") {MsgBox "The script was cancelled." "OK" "Information"|out-Null;exit} # # At this point the mounted USB disk and the iso image file path are defined # $USB=$USBDisks[$USBDiskList.SelectedIndex] # If((MsgBox "WARNING! `n`nYour USB disk will be converted to MBR scheme, repartitioned and reformatted.`n`nAll partitions and data currently stored in the USB disk will be erased.`r`n`r`nAre you sure you want to continue?" "YESNO" "Warning") -eq "NO"){exit} # Mount the image file if not already mounted and get the drive letter # # Check if iso already mounted by getting driveletter If($ISO=(Get-DiskImage -ImagePath $ImagePath | Get-Volume).DriveLetter){$Mounted=$True} Else # Mount iso and get drive letter {$Mounted=$False; Mount-DiskImage -ImagePath $ImagePath -StorageType ISO |out-null If(!($ISO=(Get-DiskImage -ImagePath $ImagePath | Get-Volume).DriveLetter)){Exit}} $ISO=$ISO+":" # Clear-Host Stop-Service ShellHWDetection -erroraction silentlycontinue|out-null # Clear the USB disk Try{Clear-Disk $USB -RemoveData -RemoveOEM -Confirm:$False -ErrorAction Stop Set-Disk $USB -PartitionStyle MBR -ErrorAction Stop} Catch{"Select disk $USB`nclean`nconvert MBR`nrescan`nexit`n"|diskpart} # Create the fat32 boot partition $usbfat32=(New-Partition -DiskNumber $usb -Size 1GB -AssignDriveLetter | Format-Volume -FileSystem FAT32 -NewFileSystemLabel "BOOT").DriveLetter + ":" # Create the NTFS intall partition $usbntfs=(New-Partition -DiskNumber $usb -UseMaximumSize -AssignDriveLetter -IsActive | Format-Volume -FileSystem NTFS -NewFileSystemLabel "SETUP").DriveLetter + ":" Start-Service ShellHWDetection -erroraction silentlycontinue|out-null # Copy needed files to the fat32 boot partition robocopy $iso"\" $usbfat32"\" bootmgr bootmgr.efi /a-:R robocopy $iso"\boot" $usbfat32"\boot" /e /a-:R robocopy $iso"\efi" $usbfat32"\efi" /e /a-:R robocopy $iso"\sources" $usbfat32"\sources" boot.wim /a-:R Update_BCD $usbfat32 # Remove the drive letter to hide the device Get-Volume -DriveLetter $usbfat32.substring(0,$usbfat32.Length-1) | Get-Partition | Remove-PartitionAccessPath -accesspath $usbfat32 # Copy needed files to the NTFS install partition robocopy $iso $usbntfs /e /a-:R Update_BCD $usbntfs # Eject the mounted iso image if it was loaded by the script If(!$Mounted){DisMount-DiskImage -ImagePath $ImagePath |out-null} MsgBox (($ShortTitle -split " @.*")[0]+" was created successfully.") "OK" "Information" |Out-Null;exit