Загрузка PowerShell SFTP без записи файлов на диск - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь использовать PowerShell для синхронизации файлов заработной платы, хранящихся на SFTP в SharePoint.У меня большая часть кода написана, единственное, что я не могу понять, это если есть способ избежать временной загрузки файла на диск.Учитывая чувствительность этих файлов, я предпочел бы хранить файлы как переменные, в отличие от того, как работает get-content, поэтому никто на подчиненном сервере Jenkins не сможет увидеть его содержимое или восстановить временные файлы.

Вот мойрабочий код, который загружает файл:

$session = New-Object WinSCP.Session
$session.Open($sessionOptions)
$file = $session.ListDirectory("/") | select -ExpandProperty files | ? {$_.FileType -ne "D"} | select -First 1
$session.GetFiles($file, "c:\temp\$($file.name)", $False, $transferOptions)
$session.Close()

Есть ли что-то, что я могу использовать для замены второго параметра WinSCP.Session.GetFiles [C: \ temp \ $ ($ file.name)], которыйпозволил бы мне перенести файл прямо в память, чтобы я мог развернуться и выгрузить в SharePoint?

Если вам интересно, как я мог бы получить его в sharepoint, я бы использовал это с get-content без проблем:

$fileToUpload = get-content c:\temp\test.csv -Encoding Byte
$FileCreationInfo = New-Object Microsoft.SharePoint.Client.FileCreationInformation
$FileCreationInfo.Overwrite = $true
$FileCreationInfo.Content = $fileToUpload
$FileCreationInfo.Overwrite = $true
$FileCreationInfo.Url = "test.csv"
$Upload = $Folder.Files.Add($FileCreationInfo)
$Ctx.Load($Upload)
$Ctx.ExecuteQuery()

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

WinSCP просто не делает этого.Я надеялся, что нижестоящий объект получит замену пути к файлу, но это не представляется возможным.Однако я понял это.Переходя к модулю posh-ssh, я смог использовать команду Get-SFTPContent, которая позволяет мне читать файл в память.

install-module posh-ssh
import-module posh-ssh
$Session = New-SFTPSession -ComputerName $SFTPHostName -Credential $SFTPcredential
Get-SFTPContent -SessionId $session.SessionId -Path $file.FullName -Encoding unicode -ContentType byte
0 голосов
/ 01 марта 2019

Сборка WinSCP .NET в настоящее время поддерживает загрузку только в физический файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...