You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SFTP按文件最后修改日期从远程服务器获取对应文件

解决方案

你当前使用的Get-SCPFolder命令不支持直接按文件修改日期筛选,需要调整逻辑为「先枚举远程文件->按修改时间过滤->仅下载符合条件的文件」,基于Posh-SSH模块即可实现需求。

前置要求

首先确保已安装Posh-SSH模块,执行以下命令安装:

Install-Module -Name Posh-SSH -Scope CurrentUser

修改后的完整脚本

# 提前配置基础参数
$ComputerName = "远程服务器地址"
$RemoteLogFolder = "远程文件目录路径"
$LocalLogFolder = "本地保存目录路径"
$credentials = Get-Credential -Message "输入远程服务器登录账号密码"

$TodaysDate = Get-Date -UFormat "%d.%m.%Y %R"

function Read-Date {
  param(
    [String] $prompt
  )
  $result = $null
  do {
    $s = Read-Host $prompt
    if ( $s ) {
      try {
        $result = Get-Date $s
        break
      }
      catch [Management.Automation.PSInvalidCastException] {
        Write-Host "日期格式无效,请重新输入"
      }
    }
    else {
      break
    }
  }
  while ( $true )
  $result
}

Write-Host "当前日期: $TodaysDate"

$startDate = Read-Date "请输入开始日期(留空则不限制开始时间)"
$endDate = Read-Date "请输入结束日期(留空则不限制结束时间)"

# 建立SFTP会话
$sftpSession = New-SFTPSession -ComputerName $ComputerName -Credential $credentials

# 获取远程目录下所有文件,需要递归子目录则添加 -Recurse 参数
$remoteFiles = Get-SFTPChildItem -SessionId $sftpSession.SessionId -Path $RemoteLogFolder -File

# 按最后修改日期筛选文件
$filteredFiles = $remoteFiles | Where-Object {
    ($null -eq $startDate -or $_.LastWriteTime -ge $startDate) -and 
    ($null -eq $endDate -or $_.LastWriteTime -le $endDate)
}

Write-Host "找到符合条件的文件共$($filteredFiles.Count)个,开始下载..."

# 批量下载筛选后的文件
foreach ($file in $filteredFiles) {
    $localSavePath = Join-Path -Path $LocalLogFolder -ChildPath $file.Name
    Get-SFTPItem -SessionId $sftpSession.SessionId -Path $file.FullName -Destination $localSavePath -Force
    Write-Host "已完成下载:$($file.Name)"
}

# 释放SFTP连接
Remove-SFTPSession -SessionId $sftpSession.SessionId

Write-Host "全部符合条件的文件下载完成"

注意事项

  • 如果远程服务器时区和本地时区不一致,需要先将获取到的LastWriteTime属性转换为本地时区后再做日期对比,避免筛选误差
  • 如果需要保留远程目录的层级结构下载,可以在筛选文件后,对应创建本地子目录再保存文件
  • 如果远程文件数量较多,可以给Get-SFTPChildItem加上筛选参数减少枚举量

内容的提问来源于stack exchange,提问作者user12428212

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:54:04