diff --git a/USB_Build.ps1 b/USB_Build.ps1 new file mode 100644 index 0000000..ac1dd7b --- /dev/null +++ b/USB_Build.ps1 @@ -0,0 +1,102 @@ +# Copy-FsTx-To-SVI.ps1 +# Run as Administrator + +$isAdmin = ([Security.Principal.WindowsPrincipal] ` + [Security.Principal.WindowsIdentity]::GetCurrent() +).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) + +if (-not $isAdmin) { + Write-Host "Please run this script as Administrator." -ForegroundColor Red + pause + exit +} + +$localSource = "C:\FsTx" + +if (-not (Test-Path $localSource)) { + Write-Host "Source folder not found: $localSource" -ForegroundColor Red + pause + exit +} + +Write-Host "" +Write-Host "Choose an option:" -ForegroundColor Cyan +Write-Host "1. New drive" +Write-Host "2. Rebuild drive" +$mode = Read-Host "Enter 1 or 2" + +if ($mode -notin @("1", "2")) { + Write-Host "Invalid option." -ForegroundColor Red + pause + exit +} + +Write-Host "" +Write-Host "Available drives:" -ForegroundColor Cyan +Get-PSDrive -PSProvider FileSystem | Select-Object Name, Root, Description + +Write-Host "" +$driveLetter = Read-Host "Enter the USB drive letter only, for example E" +$driveLetter = $driveLetter.TrimEnd(":") +$usbRoot = "$driveLetter`:\" + +$sviDir = Join-Path $usbRoot "System Volume Information" +$destDir = Join-Path $sviDir "FsTx" + +if (-not (Test-Path $usbRoot)) { + Write-Host "Drive $usbRoot does not exist." -ForegroundColor Red + pause + exit +} + +if (-not (Test-Path $sviDir)) { + Write-Host "System Volume Information folder not found. Creating it..." -ForegroundColor Yellow + New-Item -ItemType Directory -Path $sviDir -Force | Out-Null +} + +Write-Host "" +Write-Host "Taking ownership of System Volume Information..." -ForegroundColor Cyan +takeown /F "$sviDir" /R /D Y + +Write-Host "" +Write-Host "Granting Administrators full control..." -ForegroundColor Cyan +icacls "$sviDir" /grant Administrators:F /T /C + +if ($mode -eq "1") { + if (Test-Path $destDir) { + Write-Host "" + Write-Host "FsTx already exists on this drive:" -ForegroundColor Red + Write-Host $destDir + Write-Host "Use the rebuild option if you want to replace it." + pause + exit + } + + Write-Host "" + Write-Host "Copying FsTx from C:\ to System Volume Information..." -ForegroundColor Cyan + Copy-Item -Path $localSource -Destination $sviDir -Recurse -Force +} + +if ($mode -eq "2") { + if (Test-Path $destDir) { + Write-Host "" + Write-Host "Removing existing FsTx from System Volume Information..." -ForegroundColor Yellow + Remove-Item -Path $destDir -Recurse -Force + } else { + Write-Host "" + Write-Host "No existing FsTx folder found. Continuing with fresh copy..." -ForegroundColor Yellow + } + + Write-Host "" + Write-Host "Copying fresh FsTx from C:\ to System Volume Information..." -ForegroundColor Cyan + Copy-Item -Path $localSource -Destination $sviDir -Recurse -Force +} + +Write-Host "" +Write-Host "Done." -ForegroundColor Green +Write-Host "Source:" +Write-Host " $localSource" +Write-Host "Destination:" +Write-Host " $destDir" + +pause \ No newline at end of file