问题描述
我编写了一个 powershell 脚本,使用 Add-PnPFile 将在本地文件夹中创建的文件上传到 SharePoint。
我每 20 秒循环一次脚本以检查文件夹中是否有新文件,然后在文件不在 SharePoint 上时上传。我使用 Where-object 只选择最后 5 分钟,以便循环中没有太多文件。 (由于流程是ERP->本地文件夹->SharePoint,用户正在等待,因此需要快速上传)
这在 95% 的情况下都有效,但有时会跳过现有的文件。
$Localfolder = "D:\DATA"
$A_Files = Get-ChildItem -Path $Localfolder -Include @("*.pdf","*.csv") | Where-Object {$_.LastWriteTime -gt (Get-Date).AddMinutes(-5)}
如果我停止脚本并在同一个 Powershell 会话中运行,它不会显示该文件。 如果我打开另一个 powershell 会话并运行该命令,它会显示该文件。
有人知道是否有缓存或我遗漏了什么吗?
PS C:\Users\rob_admin> $PsversionTable
名称值
PS 版本 5.1.14409.1018
PS版桌面
PSCompatibLeversions {1.0,2.0,3.0,4.0...}
构建版本 10.0.14409.1018
CLR 版本 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
序列化版本 1.1.0.1
解决方法
我开始使用一种不同的方法,它在 IInspectable 评论后有 100% 的成功率: $watcher = 新对象 System.IO.FileSystemWatcher
所以触发器现在是: Register-ObjectEvent $watcher 'Created' -Action $action