param( [Parameter(Mandatory=$true, HelpMessage="Path to Windows 7 ISO file")] [ValidateScript(Test-Path $_ -PathType Leaf)] [string]$IsoPath, [Parameter(Mandatory=$true, HelpMessage="USB drive letter (e.g., D: or E:)")] [ValidatePattern("^[A-Za-z]:$")] [string]$UsbDriveLetter )
$diskNumberLine = diskpart /s (New-TemporaryFile | % $_.FullName; Set-Content $_.FullName "select volume $volNumber`nlist disk`nexit" ) $diskNumber = $diskNumberLine | Select-String -Pattern "\*" | ForEach-Object $_ -replace '.*Disk (\d+).*', '$1' | Select-Object -First 1 if (-not $diskNumber) Write-Host "Failed to get physical disk number." -ForegroundColor Red exit 1
$driveLetter = $UsbDriveLetter[0] $drivePath = $UsbDriveLetter + "\" windows 7 portable usb
# Diskpart commands to clean, partition, format, set active, assign letter $diskpartCommands = @( "select disk $diskNumber", "clean", "create partition primary", "select partition 1", "active", "format fs=ntfs quick label=WIN7USB", "assign letter=$driveLetter", "exit" )
# Copy files to USB Write-Host "Copying Windows 7 setup files to USB (this will take several minutes)..." -ForegroundColor Green if ($mountDrive -match "^[A-Z]:\\?$") # It's a drive letter (mounted ISO) Copy-Item -Path "$mountDrive\*" -Destination $drivePath -Recurse -Force else # It's a folder path Copy-Item -Path "$mountDrive\*" -Destination $drivePath -Recurse -Force HelpMessage="USB drive letter (e.g.
It works on Windows 7 itself (with PowerShell 2.0+) or newer Windows versions.
Write-Host "=== Windows 7 Bootable USB Creator ===" -ForegroundColor Cyan Write-Host "ISO : $IsoPath" Write-Host "USB : $UsbDriveLetter" Write-Host "WARNING: All data on $UsbDriveLetter will be DESTROYED!" -ForegroundColor Yellow $confirm = Read-Host "Type YES to continue" if ($confirm -ne "YES") Write-Host "Aborted." -ForegroundColor Red exit 0 "create partition primary"
Write-Host "USB disk number: $diskNumber" -ForegroundColor Green