2017-10-10 2 views
2

PowerShell 스크립트를 사용하여 SFTP 서버에서 로컬 컴퓨터로 파일을 다운로드해야합니다.PowerShell을 사용하여 SFTP 서버에서 파일 다운로드

다운로드에 사용할 API/라이브러리는 전송 결과를 모니터링하고 전송을 기록하며 다운로드 한 파일을 보관/이동할 수 있어야합니다.

미리 감사드립니다.

+0

좋아 마틴 (내가 WinSCP에의 저자 해요), 나는 내 마음이 계속됩니다. 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

+0

PowerShell ISE에서 실행할 때 WINSCP에서 생성 된 코드가 오류를 발생시킵니다. Add-Type : 'Path'매개 변수를 대상에 바인딩 할 수 없습니다. "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 개의 파일이있는 경우 파일을 추가해야합니다. –

관련 문제