簡體   English   中英

使用 PowerShell 從 SFTP 服務器下載文件

[英]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 GUI 登錄到您的服務器;
  • 在遠程文件面板中選擇要下載的文件;
  • 在本地文件面板中導航到目標目錄;
  • 調用下載命令;

在此處輸入圖像描述

(我是WinSCP的作者)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM