Files
management-scripts/Upload-Contents.ps1
T
2019-11-11 19:22:39 -05:00

54 lines
2.1 KiB
PowerShell

param (
[string]$Path,
[string]$Password,
[int]$SpeedLimit=300,
[switch]$SelfDestruct
)
## Immediately delete this script from disk, if requested
if ( $SelfDestruct ) {
try { Remove-Item $MyINvocation.InvocationName -Force }
catch { Write-Host "Self destruct failed, killing script!"; exit } }
## Download required tools
$DOWNLOAD_TOOLS_SCRIPT = "https://emberkom.s3.amazonaws.com/management/scripts/Download-Tools.ps1"
try { Invoke-Expression ((New-Object System.Net.WebClient).DownloadString($DOWNLOAD_TOOLS_SCRIPT)) }
catch { Write-Host "Required tools failed to download!"; exit }
## Make sure WinSCP exists
$WINSCP = "${Env:Temp}\Emberkom\Tools\winscp.com"
if ( !(Test-Path "${WINSCP}") ) {
if ( Test-Path "${Env:ProgramData}\Emberkom\Tools\winscp.com" ) {
$WINSCP = "${Env:ProgramData}\Emberkom\Tools\winscp.com"
} else { Write-Host "WinSCP does not exist!"; exit } }
## Prepare WinSCP script file
$HOSTNAME = 'xfer.emberkom.net'
$HOSTKEY = 'ecdsa-sha2-nistp256 256 5iJFeMzLK5Ld7gbLn+NlcYyI+DvbSXB8fmFJLLDh7s0='
$USERNAME = 'JeQCXVBI80Pj3nL'
#$PASSWORD = ''
$SCRIPT_FILE = [System.IO.Path]::GetTempFileName()
$UPLOAD_SCRIPT = @(
"echo off",
"option batch on",
"option confirm off",
"open sftp://${USERNAME}:${Password}@${HOSTNAME}/ -hostkey=`"${HOSTKEY}`"",
"mkdir `"${Env:ComputerName}`"",
"cd `"${Env:ComputerName}`"",
"mkdir `"${Env:Username}`"",
"cd `"${Env:Username}`"",
"mkdir `"Manual Upload`"",
"cd `"Manual Upload`"",
"put -resume -nopermissions -preservetime -speed=${SpeedLimit} -resumesupport=on -neweronly `"${Path}`"",
"exit")
try { ForEach ($line in $UPLOAD_SCRIPT) { $line | Out-File "${SCRIPT_FILE}" -Append } }
catch { Write-Host "Script file could not be created: ${SCRIPT_FILE}"; exit }
## Upload the data
try { Start-Process -WindowStyle Hidden "${WINSCP}" -ArgumentList "/script=`"${SCRIPT_FILE}`"" -Wait }
catch { Write-Host "Data transfer failed!" }
## Delete the script file
try { Remove-Item -Path "${SCRIPT_FILE}" -Force }
catch { Write-Host "Script file could not be deleted: ${SCRIPT_FILE}" }