使用PowerShell从SFTP服务器下载文件

问题描述:

我需要使用PowerShell脚本将文件从SFTP服务器下载到本地计算机。使用PowerShell从SFTP服务器下载文件

将用于下载的API /库需要能够监控传输结果,记录传输以及归档/移动下载的文件。

在此先感谢。

+0

好了马丁,我会记住这在我的脑海。你能帮我从SFTP下载文件到我的本地机器使用Powershell脚本? –

在PowerShell或.NET框架中没有SFTP支持。所以你必须使用一个外部的SFTP库。


一种可能性(你已经在你的问题自行标记)是WinSCP .NET assembly。有一篇关于using WinSCP from PowerShell的文章。

甚至还有一个code example in PowerShell for SFTP download

try 
{ 
    # Load WinSCP .NET assembly 
    Add-Type -Path "WinSCPnet.dll" 

    # Setup session options 
    $sessionOptions = New-Object WinSCP.SessionOptions -Property @{ 
     Protocol = [WinSCP.Protocol]::Sftp 
     HostName = "example.com" 
     UserName = "user" 
     Password = "mypassword" 
     SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx..." 
    } 

    $session = New-Object WinSCP.Session 

    try 
    { 
     # Connect 
     $session.Open($sessionOptions) 

     # Download files 
     $transferOptions = New-Object WinSCP.TransferOptions 
     $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary 

     $transferResult = 
      $session.GetFiles("/home/user/*", "d:\download\*", $False, $transferOptions) 

     # Throw on any error 
     $transferResult.Check() 

     # Print results 
     foreach ($transfer in $transferResult.Transfers) 
     { 
      Write-Host "Download of $($transfer.FileName) succeeded" 
     } 
    } 
    finally 
    { 
     # Disconnect, clean up 
     $session.Dispose() 
    } 

    exit 0 
} 
catch [Exception] 
{ 
    Write-Host "Error: $($_.Exception.Message)" 
    exit 1 
} 

的WinSCP GUI甚至可以generate a PowerShell SFTP download code,像上面的一个,为您的特定会话设置以及传输选项:

  • 登录到你的服务器WinSCP GUI;
  • 在远程文件面板中选择要下载的文件;
  • 导航到本地文件面板中的目标目录;
  • 调用下载命令;
  • Transfer options dialog,去传输设置>生成代码;
  • 在Generate transfer code对话框中,选择.NET assembly code tab; 选择PowerShell语言。

enter image description here

(我的WinSCP的作者)

+0

在PowerShell ISE中执行时,来自WINSCP的生成代码出错。添加类型:无法将参数“路径”绑定到目标。例外设置“路径”:“找不到路径”C:\ Users \ ratnesh.sharma \ WinSCPnet.dll' 因为它不存在。“ At line:2 char:16 + Add-Type -Path“WinSCPnet.dll” + ~~~~~~~~~~~~~~~~~~~~~ [Add-Type ],ParameterBindingException + FullyQualifiedErrorId:ParameterBindingFailed,Microsoft.PowerShell.Commands.AddTypeCommand –

+0

您是否按照说明进行操作? https://winscp.net/eng/docs/library_powershell#installing_the_assembly –

+0

它工作正常,现在我必须追加文件,如果有相同的路径在SFTP文件夹中的相同名称的2个文件。 –