在 PowerShell 中使用 WinSCP 仅下载新文件

2023-12-30

如何下载最新文件或某天发布的文件?导入包含以下内容的 CSV 文件Source and a 目的地柱子。需要检查路径是否存在/文件是否存在并且仅下载新文件。

现在的脚本正在将所有文件移动到相应的文件夹 - 但是一旦我再次运行脚本,它不仅仅下载新文件。

以下是 CSV 文件的示例:

try{

  Add-Type -Path "WinSCPnet.dll"
  # Setup session options
  $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::sftp
    HostName = "xxxxx"
    UserName = "xxxxr"
    Password = "xxxxxxx"
    PortNumber = "xx"
    GiveUpSecurityAndAcceptAnySshHostKey = $true
  }

  $session = New-Object WinSCP.Session

  try{
    # Connect
    $session.Open($sessionOptions)
    # Download files
    $transferOptions = New-Object WinSCP.TransferOptions
    $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary

    Import-Csv -Path "C:\movefiles.csv" -ErrorAction Stop | foreach{

      Write-Host $_.Source
      Write-host $_.Destination 

      $transferResult =
        $session.GetFiles($_.Source, $_.Destination, $False, $transferOptions)

      # Throw on any error
      $transferResult.Check()

      # Print results
      $smtpBody = ""
      foreach ($transfer in $transferResult.Transfers){

        Write-Host "Download of $($transfer.FileName) succeeded"

        $smtpbody += " Files : ( $transfer.filename - join ', ')" +
                     " Current location: $($_.Destination) "
      } 

      Send-Mail Message @smtpMessage  -Body $smtpbody
    }
    finally {
      # Disconnect, clean up
      $session.Dispose()
    }
  }
  catch
  {
    Write-Host "Error: $($_.Exception.Message)"
  }
}

CSV 文件示例:

Source, Destination
/client1/Business/2019, C:\test\test1
/client2/Reporting/2018, C:\test\test2

If your Source and Destination很朴素目录路径,您可以简单地替换Session.GetFiles with Session.SynchronizeDirectories https://winscp.net/eng/docs/library_session_synchronizedirectories:

Import-Csv -Path "C:\movefiles.csv" -ErrorAction Stop | foreach {

    $synchronizationResult = $session.SynchronizeDirectories(
        [WinSCP.SynchronizationMode]::Local, $_.Destination, $_.Source, $False)

    $synchronizationResult.Check()

    foreach ($download in $synchronizationResult.Downloads)
    {
        Write-Host "File $($download.FileName) downloaded"
    }
}

另请参阅 WinSCP 常见问题解答如何仅传输新的/修改的文件? https://winscp.net/eng/docs/faq_script_modified_files

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PowerShell 中使用 WinSCP 仅下载新文件 的相关文章

  • List.Clear() 在 C# 中是如何实现的?

    我假设它使用数组来实现 List 怎么List Clear 实施的 它实际上清理了数组还是只是为此列表创建了一个新数组 public class List private Array array public void Clear1 arr
  • WCF - 如何增加消息大小配额

    我有一个 WCF 服务 它将 1000 条记录从数据库返回给客户端 我有一个 ASP NET WCF 客户端 我在 asp net Web 应用程序项目中添加了服务引用来使用 WCF 当我运行客户端应用程序时 我收到以下消息 传入消息的最大
  • 如何在 C# 中捕获等待的异步方法的异常?

    我基本上想知道在 C 中我应该如何捕获通过等待的异步方法的异常await关键词 例如 考虑以下小控制台程序 其中最重要的是包含一个名为AwaitSync AwaitSync calls TestAsync 它返回一个任务 执行时会抛出异常
  • .Net Core appsettings.json 最佳实践 - 覆盖开发设置(或反之亦然)?

    寻找一种关于在 Net Core 中构造 appsettings json 文件的合理方法 是否应该将基本 appsettings json 文件配置为在开发环境中运行 然后基于环境的覆盖 例如 appsettings Production
  • 在分布式事务中手动登记后,使用 enlist=false 的连接不会关闭

    我有一个分布式事务上下文使用ServiceDomain 在其中 我打开一个 SQL 连接 其中连接字符串指定Enlist false 这样它就不是自动地被纳入交易 然后 如果我使用手动在分布式事务中登记连接EnlistDistributed
  • C# 中输入按键

    我尝试了这段代码 private void textBox1 KeyPress object sender KeyPressEventArgs e if Convert ToInt32 e KeyChar 13 MessageBox Sho
  • 如何使用 Get-ChildItem 仅获取目录?

    我正在使用 PowerShell 2 0 我想通过管道输出某个路径的所有子目录 以下命令输出所有文件和目录 但我不知道如何过滤掉文件 Get ChildItem c mypath Recurse 我尝试过使用 Attributes获取属性
  • 从 git 签出后 nuget dll 丢失

    I have a C solution containing different projects On those projects I have some normal nuget packages like Newtonsoft Js
  • 将 Flutter 前端与适用于 Android 和 iOS 的 .NET Core 后端相结合

    目前在一家使用 NET 不是 Core 的公司工作 但希望切换到 NET Core 并想通过创建一个具有 Flutter io 前端和 NET Core 后端的应用程序来实现这一目标 带后端的应用程序只是为了了解 NET Core 的功能
  • Python 仪器驱动程序

    我是一名实验物理学家 并且是Python http en wikipedia org wiki Python 28programming language 29 我发现它非常适合数据分析和脚本编写 实际上我还用它来连接实验室仪器 网络分析仪
  • MetadataException:无法加载指定的元数据资源

    突然间我不断收到MetadataException在实例化我生成的ObjectContext班级 App Config 中的连接字符串看起来正确 自上次工作以来没有更改 我尝试从底层数据库重新生成一个新模型 edmx 文件 没有任何更改 有
  • 当移动到控件的 ScrollBar 上时触发 MouseLeave 事件

    由于无法解决问题 我重新发布此问题 原始here https stackoverflow com questions 2024393 treeview mouseleave event fires when moves over scrol
  • 使用VS2019创建WebService

    我想使用 Visual Studio 2019 使用 C 在现有 NET 项目中创建 WebService 在互联网上搜索 我能找到的只是旧 VS 版本的教程 如何创建它 使用 Visual Studio 2019 接收 POST 数据的最
  • 无法使用前导 ../ 在顶级目录之上退出

    我有一个 asp net 网站 我们有管理区域 其中的登录页面仅供管理员使用 并且所有网站都允许所有人使用 当我收到此错误时 我需要询问如何为其定义正确的安全配置 Cannot use a leading to exit above the
  • C# 异步任务比同步慢

    你知道为什么同步斐波那契方法比异步 等待更快并且比异步任务更快吗 我在每个项目方法上都使用了异步 所以主要是这是一个非常糟糕的方法 Code static int FibonacciSync int number if number 0 r
  • 在VB.NET中获取文件修改日期

    我的文件夹中有许多文件 我需要获取最后修改日期 所以我用了 FDate IO File GetLastWriteTime FName 对于某些文件 它工作正常 但对于其他文件 我得到的日期为 1 1 1601 但是当我在 Windows 资
  • 在powershell中检查文件是否可读且正常

    我是 powershell 新手 我想检查文件是否可读且正常 在 unix 中 我们可以使用 f 和 r 在一行中完成此操作 例如 以下 shell 脚本函数接受文件名作为参数并检查文件的可读性和规律性 与此等效的 powershell 是
  • 表单上的 KeyEvents 只能与 CTRL 结合使用

    Code Private Sub KeyHandling ByVal sender As Object ByVal e As System Windows Forms KeyEventArgs Handles Me KeyDown Sele
  • 使用 OleDbCommand / OleDbDataAdapter 读取 CSV 文件

    我不明白为什么 但是当我使用 OleDbDataAdapter 或 OleDbCommand 读取 CSV 文件时 在这两种情况下 生成的数据结构良好 它识别文件头中的列 但行数据都是空字符串 我之前已经成功进行过多次 CSV 处理 因此我
  • 如果finally 块包含await,为什么*有时*不会在ThreadAbortException 上执行?

    UPDATE 我不认为这个问题是重复的ThreadAbortException最后可以跳过吗 https stackoverflow com questions 18002668 can threadabortexception skip

随机推荐

  • 远程 Glassfish v4.1 部署上出现 TimeoutException

    我在 OVH 上有 VPS 假设它是 vpsXXXX ovh net 使用 Debian 7 我已经安装了 Java 8 Glassfish 4 1 并启用了安全管理 asadmin gt change admin password use
  • 使用Sql Server 2016的OPENJSON函数从Json文档中的多个数组元素中选择结果

    是否可以在 Sql Server 2016 中将来自多个数组元素的 json 文档的部分组合成单个结果 给定这个 json fruit types possible Apples Bananas Pears category Basic p
  • C# 控制电脑音量

    有没有办法在 C 中控制计算机的实际音量并将其显示在垂直轨迹栏中 我几乎已经尝试了一切 但一定有一些东西我错过了 Thanks 您是否尝试过使用winmm dll通过 p Invoke 库 这就是本文所推荐的 http www dreami
  • 测试 SQLite 触发器内的 COUNT()>X

    如何比较 SQLite 中触发器内的 COUNT 结果 到目前为止 这是我想出的代码 CREATE TRIGGER mytrigger BEFORE INSERT ON mytable BEGIN SELECT CASE WHEN SELE
  • Django 查询聚合同一字段中匹配实例的总和

    我有以下 Django 2 1 模型 class Sales models Model product name models ForeignKey Product category models ForeignKey Category s
  • 如何在kubernetes环境中使用spark配置beam python sdk

    TLDR 如何使用 environment type EXTERNAL 或 PROCESS 配置 Apache Beam 管道选项 描述 目前 我们在 Kubernetes 中有一个独立的 Spark 集群 如下this https sta
  • MySQL存储过程中的变量

    我遇到了这个简单存储过程的问题 我想保存LAST INSERT ID放在一个变量中 然后将其分配给下一个插入 DELIMITER CREATE PROCEDURE Adda Name varCHAR 45 Surrname varCHAR
  • 非空参数的方法引用?

    我正在读关于Java 8 特性 http www techempower com blog 2013 03 26 everything about java 8 而且我看到他们有方法引用 但是我没有看到当方法重载时如何指定哪个方法 有人知道
  • Google 图表图例 - 重叠文本

    我在页面中使用谷歌图表 但图例文本重叠 如下图所示 这是我的代码 var dataTable new google visualization DataTable dataTable addColumn date Data dataTabl
  • Symfony2:与非命名空间 SDK(特别是 PayPal)集成

    我创建了一个PaypalBundle并添加了贝宝商家 php sdk https github com paypal merchant sdk php to my composer json现在我有一个vendor paypal merch
  • 检查java中长操作的进位

    我正在对 long 类型的数字进行加 减 有没有办法确定此操作是否会设置理论进位 这应该做 Add two long s with overflow detection r s d public static long add final
  • Airflow:使用新计划从头开始重新运行 DAG

    背景故事 我每天都在运行 Airflow 作业 其中包含start date2019 年 7 月 1 日 收集的作业从第三方请求每天的数据 然后将该数据加载到我们的数据库中 成功运行作业几天后 我意识到第三方数据源每月只刷新一次数据 因此
  • centos上无法安装erlang

    在cent os上安装erlang时出现以下错误 错误 软件包 erlang crypto R16B03 0 2 el6 x86 64 erlang 解决方案 需要 libcrypto so 10 libcrypto so 10 64位 错
  • 如何在 Angular 1.5 组件中等待 UI Router Resolve 的承诺

    我正在使用 Angular 1 5 组件 我不知道如何通过 Resolve 获取数据 您能透露一些信息吗 Plunker https plnkr co edit 2wv4YWn8YQvow6FDcGV0 https plnkr co edi
  • Openlayers 3. 如何为功能制作tootlip

    现在我正在将我的项目从 openlayers 2 移动到 openlayers 3 不幸的是 我找不到如何显示功能的标题 工具提示 OL2中有一种风格叫graphicTitle 您能给我一些如何在 OL3 上实现工具提示的建议吗 这是 ol
  • 元素在类中没有匹配项

    我正在使用 Simple XML 框架 只是重命名了一些 XML 布局 但现在它们似乎不再起作用了 这是我的 XML
  • 将多个帧发送到AWS rekognition

    我正在尝试从我的网络摄像头将图片发送到 aws rekognition 以使用 python 检测坐在它前面的人的活动 为此 我每 5 秒拍一张照片并将其发送到 aws 但当我这样做时 他似乎总是发回有关我发送的第一帧的信息 cap cv2
  • 防止缓存 CSS 文件

    我正在使用 PHP 开发一个简单的网站 开发配置 WAMP 生产配置 LAMP 在测试时 我更改了 CSS 文件 但是当我重新加载页面时 我的浏览器 不确定 仍然使用旧的缓存 css 我做了一些谷歌搜索 发现了我已经尝试过的不同解决方案 在
  • Android开发字符串数组资源太大,导致Android应用程序崩溃!

    我有一个字符串数组资源 其中包含大约 1000 个药物名称
  • 在 PowerShell 中使用 WinSCP 仅下载新文件

    如何下载最新文件或某天发布的文件 导入包含以下内容的 CSV 文件Source and a 目的地柱子 需要检查路径是否存在 文件是否存在并且仅下载新文件 现在的脚本正在将所有文件移动到相应的文件夹 但是一旦我再次运行脚本 它不仅仅下载新文