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

求WinSCP PowerShell脚本:按文件名匹配下载最新文件

带文件名筛选的WinSCP最新文件下载PowerShell脚本

基于你提供的参考脚本,只需在文件筛选环节添加文件名匹配条件,即可实现只下载符合特定命名规则的最新文件。以下是修改后的完整脚本:

param (
    $localPath = "c:\downloaded",
    $remotePath = "/home/user",
    $fileNamePattern = "*" # 默认匹配所有文件,可修改为如"*report*.csv"的规则
)
 
try
{
    # 加载WinSCP .NET程序集
    Add-Type -Path "WinSCPnet.dll"
 
    # 设置会话参数
    $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
        Protocol = [WinSCP.Protocol]::Sftp
        HostName = "example.com"
        UserName = "user"
        Password = "mypassword"
        SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx..."
    }
 
    $session = New-Object WinSCP.Session
 
    try
    {
        # 连接服务器
        $session.Open($sessionOptions)
 
        # 获取远程目录文件列表
        $directoryInfo = $session.ListDirectory($remotePath)
 
        # 筛选符合文件名规则的最新文件
        $latest =
            $directoryInfo.Files |
            Where-Object { -Not $_.IsDirectory -and $_.Name -like $fileNamePattern } |
            Sort-Object LastWriteTime -Descending |
            Select-Object -First 1
 
        # 检查是否找到符合条件的文件
        if ($latest -eq $Null)
        {
            Write-Host "未找到符合条件的文件"
            exit 1
        }
 
        # 下载选中的文件
        $session.GetFileToDirectory($latest.FullName, $localPath) | Out-Null
        Write-Host "已成功下载最新文件: $($latest.Name)"
    }
    finally
    {
        # 关闭会话,清理资源
        $session.Dispose()
    }
 
    exit 0
}
catch
{
    Write-Host "错误: $($_.Exception.Message)"
    exit 1
}

核心修改说明

  • 在参数块新增$fileNamePattern,支持通过通配符指定文件名匹配规则(比如*daily*.xlsx匹配包含daily的Excel文件)
  • 在Where-Object筛选器中加入$_.Name -like $fileNamePattern,仅保留符合命名规则的文件
  • 新增下载成功的提示信息,方便确认执行结果

示例用法

若要下载远程目录中所有以backup_开头且以.zip结尾的最新备份文件,运行脚本时传入对应参数:

.\Download-LatestFilteredFile.ps1 -localPath "d:\backups" -remotePath "/server/backups" -fileNamePattern "backup_*.zip"

注意事项

  • 确保WinSCPnet.dll的路径正确,若脚本与dll不在同一目录,需修改Add-Type -Path的路径
  • 替换脚本中的服务器连接信息为你的实际SFTP服务器配置
  • 如需更复杂的匹配规则,可将-like替换为-match,并传入正则表达式作为$fileNamePattern

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:15:24