仅使用不存在的文件,使用PowerShell从SFTP服务器传输文件

问题描述 投票:0回答:1

仅当文件名不存在时,才需要将文件从SFTP服务器传输到网络共享文件夹的指导。

我现在可以执行此操作,但是一直在将同名文件覆盖在传输到的文件夹上而苦苦挣扎,并且希望跳过同名文件。

尝试获取powershell脚本来检查文件是否存在,如果存在,请跳过并且不要传输。下面是我目前拥有和尝试过的东西,似乎无法正常工作,它以相同的名称覆盖了我现有的文件,而这并不是我想要的。我也将继续做进一步的研究。

# Load the Assemblemy and setup the session properties
try
{
   # Load WinSCP . NET assembly
   Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"

   # setup session options
   $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
      Protocol = [WinSCP.Protocol]::Sftp
      HostName = "0.0.0.0"
      UserName = "usernam01"
      Password = "Password"
      SshHostKeyFingerprint = "ssh-ed25519 256 **************************************"
  }


$session = New-Object WinSCP.Session
#end

try
    {
        # Connect
        $session.Open($sessionOptions)

        # Download files
        $transferOptions = New-Object WinSCP.TransferOptions
        $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
        #$transferOptions.FileMask = "*>=1D"

        $transferResult =
            $session.GetFiles("/home/*.csv", "\\fww\folder\", $False, $transferOptions)
        $remotePath = "\\fww\folder\"
        if ($session.FileExists($remotePath))
        {
             Write-Host "File $remotePath exists"
        }

        # Throw on any error
        $transferResult.Check()

        # Print results
        foreach ($transfer in $transferResult.Transfers)
        {
            Write-Host "Transfer of $($transfer.FileName) succeeded"
        }
    }
    finally
    {
        # Disconnect, clean up
        $session.Dispose()
    }

    exit 0
}
catch [Exception]
{
    Write-Host "Error: $($_.Exception.Message)"
    exit 1
.net powershell powershell-2.0 sftp winscp
1个回答
0
投票

由于无法接受本地同步,因此可以使用Session.ListDirectory列出所有您感兴趣的文件,如果本地文件不存在,则一次传输一个。

您可能也可以很好地复习Session.ListDirectory有关仅传输较新/修改的文件的其他技术。

© www.soinside.com 2019 - 2024. All rights reserved.