2017-10-10 219 views
2

PowerShellスクリプトを使用してSFTPサーバーからローカルマシンにファイルをダウンロードする必要があります。PowerShellを使用してSFTPサーバーからファイルをダウンロード

ダウンロードに使用されるAPI /ライブラリでは、転送の結果を監視し、転送を記録し、ダウンロードしたファイルをアーカイブ/移動できる必要があります。

ありがとうございます。

+0

オーケーマーティン、私は私の心でこれを維持します。 Powershellスクリプトを使用してSFTPから私のローカルマシンにファイルをダウンロードするのを手伝ってもらえますか? –

答えて

4

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には、に移動します。転送設定>コードを生成;
  • 転送コードの生成ダイアログで、.NET assembly code tabを選択します。 PowerShell言語を選択してください。

enter image description here

(私はWinSCPのの著者です)

+0

PowerShell ISEで実行すると、WINSCPから生成されたコードがエラーを出しています。 Add-Type:パラメータ 'Path'をターゲットにバインドできません。例外設定 "パス": "パスが見つかりません 'C:\ Users \ ratnesh.sharma \ WinSCPnet.dll' が存在しないためです。ラインで :2文字:16 + -Path "WinSCPnet.dll" + ~~~~~~~~~~~~~~~ + CategoryInfo-タイプを追加します。WriteError:(:) [アドオンタイプ]、ParameterBindingException + FullyQualifiedErrorId:ParameterBindingFailed、Microsoft.PowerShell.Commands.AddTypeCommand –

+0

指示に従っていますか? https://winscp.net/english/docs/library_powershell#installing_the_assembly –

+0

これはうまくいきました。SFTPフォルダに同じ名前で同じパスに2つのファイルがある場合、ファイルを追加する必要があります。 –

関連する問題