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

如何通过PowerShell ISE或WinSCP上传指定时间戳的XML文件至FTP服务器

没问题,我来给你梳理清楚用PowerShell结合WinSCP实现这个自动化上传需求的具体步骤,亲测好用:

实现步骤

1. 准备WinSCP .NET组件

首先得搞定WinSCP的.NET Assembly,这是PowerShell能调用WinSCP FTP功能的核心。你可以从WinSCP官方渠道下载对应版本的安装包,安装完成后,在默认安装目录(一般是C:\Program Files (x86)\WinSCP\)里找到WinSCPnet.dll文件,后续脚本需要引用它。

2. 编写PowerShell自动化脚本

下面是完整的脚本示例,每个部分都加了注释,你可以根据自己的实际情况修改参数:

# 1. 加载WinSCP .NET程序集,请替换成你实际的WinSCPnet.dll路径
Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"

# 2. 配置FTP服务器连接参数
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Ftp  # 指定使用FTP协议
    HostName = "ftp.yourserver.com"    # 替换成你的FTP服务器地址
    UserName = "your-ftp-username"     # FTP登录用户名
    Password = "your-ftp-password"     # FTP登录密码
    # 如果你的FTP需要TLS加密连接,取消下面两行注释并配置
    # FtpSecure = [WinSCP.FtpSecure]::Explicit
    # TlsHostCertificateFingerprint = "服务器证书的指纹信息"
    # 若需要被动模式连接,添加下面一行
    # EnablePassiveMode = $true
}

# 3. 筛选本地要上传的目标文件
$localFolder = "C:\Your\Local\Folder\Path"  # 替换成你的本地文件夹路径
# 这里分两种常见情况,你根据实际需求选一种:

# 情况A:文件名中包含10pm标识(比如ABCDEF_10pm.XML)
$targetFiles = Get-ChildItem -Path $localFolder -Filter "*10pm*.XML" | Where-Object { $_.Name -match "^ABCDEF" }

# 情况B:文件的最后修改时间是晚上10点(22点)
# $targetFiles = Get-ChildItem -Path $localFolder -Filter "ABCDEF.XML" | Where-Object { $_.LastWriteTime.Hour -eq 22 }

# 4. 建立FTP连接并执行上传
$session = New-Object WinSCP.Session
try {
    # 打开FTP会话
    $session.Open($sessionOptions)

    foreach ($file in $targetFiles) {
        $remoteFilePath = "/your/remote/folder/" + $file.Name  # 替换成FTP服务器上的目标路径
        # 执行上传,第三个参数$false表示不覆盖已存在的文件,需要覆盖的话改成$true
        $transferResult = $session.PutFiles($file.FullName, $remoteFilePath, $false)

        # 检查上传结果并输出提示
        if ($transferResult.IsSuccess) {
            Write-Host "✅ 成功上传文件: $($file.Name)"
        } else {
            Write-Host "❌ 上传失败 $($file.Name): $($transferResult.Failures[0].Message)"
        }
    }
} finally {
    # 无论成功失败,最后都要关闭会话释放资源
    $session.Dispose()
}

3. 测试与定时执行

  • 先手动运行脚本测试,确保能正常连接FTP并上传文件,如果遇到报错,根据提示调整参数(比如服务器地址、用户名密码、文件路径这些)。
  • 如果需要每天自动执行,用Windows任务计划程序即可:创建一个基本任务,设置好触发时间,操作选择“启动程序”,程序或脚本选powershell.exe,添加参数为你的脚本路径(比如-File "C:\Scripts\UploadFTPScript.ps1")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:43:00