gpt4 book ai didi

.net - 仅当文件不存在时才使用PowerShell从SFTP服务器传输文件

转载 作者:行者123 更新时间:2023-12-03 00:07:18 24 4
gpt4 key购买 nike

需要指导将文件从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

最佳答案

本地同步

我认为本地同步可能会为您服务,我假设您担心文件在远程端被存档/移动会导致本地副本丢失那些文件。如果将 bool removeFiles 方法调用的Session.SynchronizeDirectories设置为$False,则不应删除远程源中不存在的过时文件。

如果本地同步对您不起作用

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

您也可以在this page of the WinSCP .NET documentation上找到有关仅传输较新/修改的文件的其他技术的不错的选择。

关于.net - 仅当文件不存在时才使用PowerShell从SFTP服务器传输文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58842933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com