仅当文件名不存在时,才需要将文件从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
由于无法接受本地同步,因此可以使用Session.ListDirectory
列出所有您感兴趣的文件,如果本地文件不存在,则一次传输一个。
您可能也可以很好地复习Session.ListDirectory
有关仅传输较新/修改的文件的其他技术。