[英]Download files from an array from SFTP server using WinSCP in PowerShell only when the files exist
[英]Download files from SFTP server using PowerShell
我需要使用 PowerShell 腳本將文件從 SFTP 服務器下載到本地計算機。
將用於下載的 API/庫需要能夠監控傳輸結果、記錄傳輸以及存檔/移動下載的文件。
提前致謝。
PowerShell 或 .NET 框架中不支持 SFTP。 所以你必須使用外部 SFTP 庫。
一種可能性(您在問題中標記了自己)是WinSCP .NET assembly 。 有一篇關於使用 PowerShell 中的 WinSCP的文章。
PowerShell 中甚至還有一個用於 SFTP 下載的代碼示例:
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 xxxxxxxxxxx...="
}
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
# Download files
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
$remotePath = "/home/user/*";
$localPath = "d:\download\*";
$transferResult =
$session.GetFiles($remotePath, $localPath, $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 甚至可以為您的特定會話設置和傳輸選項生成 PowerShell SFTP 下載代碼,如上面的代碼:
(我是WinSCP的作者)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.