使用PowerShell从SFTP服务器下载文件
我需要使用PowerShell脚本将文件从SFTP服务器下载到本地计算机。使用PowerShell从SFTP服务器下载文件
将用于下载的API /库需要能够监控传输结果,记录传输以及归档/移动下载的文件。
在此先感谢。
在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语言。
(我的WinSCP的作者)
在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 –
您是否按照说明进行操作? https://winscp.net/eng/docs/library_powershell#installing_the_assembly –
它工作正常,现在我必须追加文件,如果有相同的路径在SFTP文件夹中的相同名称的2个文件。 –
好了马丁,我会记住这在我的脑海。你能帮我从SFTP下载文件到我的本地机器使用Powershell脚本? –