Как сделать сценарий PowerShell FTPS (SSL) для загрузки одного файла? - PullRequest
0 голосов
/ 24 августа 2018

Мне нужен скрипт для загрузки одного файла в облако.

Я нашел несколько ответов по протоколу SFTP (SSH), но не могу найти скрипт, работающий с FTPS (SSL).

Я пробовал этот скрипт, но он не работает:

Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.ParseUrl("**ftps**://**login**:**password**@**ipoftheremoteserver**:990/")

$session = New-Object WinSCP.Session
$session.Open($sessionOptions)

$session.PutFiles("D:\QAPPLI\Quadra\DATABASE\PAIE\000001\qpaie.mdb", "/FOLDER1/08h00").Check()

$session.Dispose()

У меня есть эта ошибка:

PS C: \ Windows \ system32> D: \ Script \ 08h00_000001_Client1_to_ftps.ps1 Исключение для l'appel de «Check» аргумента «0»:
«Ошибка в передаче D: \ QAPPLI \ Quadra \ DATABASE \ PAIE \ 000001 \ qpaie.mdb». Сервер отправил пассивный ответ с недоступным адресом 172.16.59.131, используя вместо этого адрес хоста.
Copie de fichiers vers le coté дальний échouée.
Неверное имя файла
Au Niveau de D: \ 08h00_000001_Client1_to_ftps.ps1: 8 Caractère: 85 + $ session.PutFiles ("D: \ QAPPLI \ Quadra \ DATABASE \ PAIE \ 000001 \ qpaie.mdb", "/FOLDER1/08h00").Check <<<< () + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: DotNetMethodException </p>

Перевод на английский:

D: Script08h00_000001_Client1_to_ftps.ps1 Исключительная ситуация при вызове «Проверить» с аргументом (ами) «0»: «« Ошибка передачи файла »D: QAPPLIQuadraDATABASEPAIE000001qpaie.mdb '. Сервер отправил пассивный ответ с адресом, на котором не выполняется вызов, 172.16.59.131 вместо этого.
Копирование файлов на неисправную удаленную сторону.
Неверное имя файла
в D: 08h00_000001_Client1_to_ftps.ps1: 8 символов: 85 + $ сессия. PutFiles ("D: QAPPLIQuadraDATABASEPAIE000001qpaie.mdb", "/ FOLDER1 / 08h00"). Проверьте <<<() + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: DotNetMethodException </p>

Большое спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

remotePath (второй) аргумент Session.PutFiles:

Полный путь для загрузки файла в.

ПокаВы, кажется, передаете только путь к папке, а не полный путь к файлу.

Это должно быть правильно:

$session.PutFiles(
    "D:\QAPPLI\Quadra\DATABASE\PAIE\000001\qpaie.mdb", "/FOLDER1/08h00/qpaie.mdb").Check()
0 голосов
/ 25 августа 2018

Использование класса .W Framework FTPWebRequest из PowerShell со свойством EnableSsl для включения FTPS

[Net.ServicePointManager]::ServerCertificateValidationCallback={$true} 
    $Dir = "D:\FolderWithBackupFilesToMove" 
    foreach($item in (dir $dir)) 
    { 
        write-output "————————————–" 
        $fileName = $item.FullName 
        write-output $fileName 
        $ftp = [System.Net.FtpWebRequest]::Create("ftp://some.ftp.server.com/someRootFolder/"+$item.Name) 
        $ftp = [System.Net.FtpWebRequest]$ftp 
        $ftp.UsePassive = $true 
        $ftp.UseBinary = $true 
        $ftp.EnableSsl = $true 
        $ftp.Credentials = new-object System.Net.NetworkCredential("UserName","Password
        $ftp.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile 
        $rs = $ftp.GetRequestStream() 

        $reader = New-Object System.IO.FileStream ($fileName, [IO.FileMode]::Open, [IO.FileAccess]::Read, [IO.FileShare]::Read) 
        [byte[]]$buffer = new-object byte[] 4096 
        [int]$count = 0 
        do 
        { 
            $count = $reader.Read($buffer, 0, $buffer.Length) 
            $rs.Write($buffer,0,$count) 
        } while ($count -gt 0) 
        $reader.Close() 
        $rs.Close() 
        write-output "+transfer completed" 

        $item.Delete() 
        write-output "+file deleted" 
    }
...