我对PowerShell非常陌生,正在编写一个脚本,通过WinSCP执行SFTP文件传输。然后,我将在Windows任务计划程序上创建一个任务,以便无限期地每15分钟运行一次此脚本。目前,我有以下代码行,它可以在20秒之前的最后一次写入时间内获取目录中的所有文件:
$filelist = Get-ChildItem C:\Users\lsarm\IHS\test |
where { $_.LastWriteTime -lt (Get-Date).AddSeconds(-20) }
有人告诉我,这需要更改,以便它获得自上次运行任务(15分钟前)以来的所有文件,但我在找到答案方面运气很差。
我试过使用Get-ScheduledTask
,但似乎只能得到任务的基本信息,似乎不是我脚本所需要的。另外,我已经下载了WinSCP .dll
文件,并在PowerShell中解除了阻止。TIA,欢迎提供任何帮助。
1条答案
按热度按时间sauutmhj1#
使用上次运行任务的时间是不可靠的。仍然有空间让你错过一些文件或重复传输一些文件。
相反,请考虑记住最近上载文件的时间戳。
假设您使用
Session.PutFiles
,则可以使用如下代码:并将
$latestTransfer
保存到一个文件中以备下次运行,或者延迟15分钟循环代码,而不是每15分钟调度一次。另一种选择是记住已经传输的文件。
这两个选项的详细信息见:How do I transfer new/modified files only?