Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 102 additions & 0 deletions USB_Build.ps1
Original file line number Diff line number Diff line change
@@ -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