Dot-Net
使用 PowerShell 從 SFTP 伺服器下載文件
我需要使用 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 GUI 登錄到您的伺服器;
在遠端文件面板中選擇要下載的文件;
在本地文件面板中導航到目標目錄;
呼叫下載命令;
在“傳輸選項”對話框中,轉到“傳輸設置”>“生成程式碼”;
在 Generate transfer code 對話框中,選擇.NET assembly code 選項卡;選擇PowerShell語言。
(我是WinSCP的作者)
