【发布时间】:2022-11-07 17:07:32
【问题描述】:
目标:我正在尝试获取所有 1 天或更新的文件。远程目录有很多目录以及根目录上的文件。
我需要查看每个目录,获取 1 天前的任何文件,以及 1 天前根目录上的任何文件,然后将所有这些文件转移到 1 个单个目录中。我不想复制任何空目录或任何包含超过 1 天文件的目录。
当前代码只是继续运行并且不传输任何文件。我不确定我是否正确设置了foreach,以及GetFiles 部分。
GetFiles 部分需要说明什么才能满足上面列出的文件要求?
这是它的外观示例:
代码:
# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"
# Set up session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::ftp
HostName = "ftp site"
UserName = "UserName"
Password = "Password"
SshHostKeyFingerprint = "stuff"
}
$sessionOptions.AddRawSettings("FSProtocol", "2")
$session = New-Object WinSCP.Session
$session.SessionLogPath = $log
try {
# Connect
$session.Open($sessionOptions)
# Set up transfer options
$transferOptions = New-Object WinSCP.TransferOptions -Property @{
TransferMode = [WinSCP.TransferMode]::Ascii
}
$lcdPath = 'Filepath\'
$time = (Get-Date).AddDays(-1)
$files = @(Get-ChildItem -Path $lcdPath -Attributes !Directory -Recurse | Where-Object { $_.LastWriteTime -gt $time })
# Transfer files
foreach ($file in $files) {
$session.GetFiles($files, "LocalFilePath", $False, $transferOptions).Check()
}
}
finally {
$session.Dispose()
}
exit 0
catch
{
Write-Host "Error: $($_.Exception.Message)"
exit 1
}
【问题讨论】:
标签: .net powershell ftp winscp winscp-net