# Downloads and unpacks the WinSCP automation package engine.ps1 needs. # Called by setup.bat. Safe to re-run. [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $url = "https://winscp.net/download/WinSCP-6.3.6-Automation.zip" $zip = Join-Path $env:TEMP "winscp.zip" $dest = Join-Path $PSScriptRoot "WinSCP" if (Test-Path $zip) { Remove-Item $zip -Force } Write-Host "Downloading WinSCP from $url ..." try { Invoke-WebRequest -Uri $url -OutFile $zip -UseBasicParsing } catch { Write-Host "ERROR: Download failed - $($_.Exception.Message)" -ForegroundColor Red Write-Host "Check your internet connection, or ask IT if winscp.net / sourceforge.net are blocked." -ForegroundColor Yellow exit 1 } $fileInfo = Get-Item $zip if ($fileInfo.Length -lt 1MB) { Write-Host "ERROR: Downloaded file is only $($fileInfo.Length) bytes - too small to be WinSCP." -ForegroundColor Red Write-Host "This usually means antivirus, a firewall, or a web filter intercepted the download and replaced it with a block/warning page instead of letting the real file through." -ForegroundColor Yellow $preview = Get-Content -Path $zip -TotalCount 15 -ErrorAction SilentlyContinue if ($preview) { Write-Host "" Write-Host "--- What was actually downloaded (first 15 lines, for troubleshooting) ---" -ForegroundColor Yellow $preview | ForEach-Object { Write-Host $_ } Write-Host "--- end ---" -ForegroundColor Yellow Write-Host "" } Write-Host "Try running setup.bat again. If it keeps happening, ask IT whether winscp.net / sourceforge.net downloads are being blocked, or download WinSCP-6.3.6-Automation.zip manually in a browser and unzip it into:" -ForegroundColor Yellow Write-Host " $dest" -ForegroundColor Yellow Remove-Item $zip -Force exit 1 } try { Expand-Archive -Path $zip -DestinationPath $dest -Force } catch { Write-Host "ERROR: Could not unzip the download - $($_.Exception.Message)" -ForegroundColor Red Write-Host "The downloaded file was likely corrupted or cut short in transit. Try running setup.bat again." -ForegroundColor Yellow Write-Host "Left the bad file at $zip in case you want to look at it." -ForegroundColor Yellow exit 1 } Remove-Item $zip -Force Write-Host "WinSCP ready." -ForegroundColor Green