【发布时间】:2016-05-20 15:13:24
【问题描述】:
我希望能够在短时间内监视文件夹中的更改,届时将创建大量文件并进行其他更改。
下面的代码正在运行,但没有捕捉到所有的变化。
$folder = ’C:\Data’
$timeout = 1000
$FileSystemWatcher = New-Object System.IO.FileSystemWatcher $folder
Write-Host ”Press CTRL+C to abort monitoring $folder”
while ($true) {
$result = $FileSystemWatcher.WaitForChanged(‘all’, $timeout)
if ($result.TimedOut -eq $false)
{
Write-Warning (‘File {0} : {1}’ -f $result.ChangeType, $result.name)
}
}
Write-Host ’Monitoring aborted.’
如果我在C:\Data 上使用它,它可以工作但是:
我创建了一个 .txt,它显示了 2 次 new text document.txt。
然后我填写新 txt 的名称并输出 3 次。或者反过来。
请看下面的输出
- 在我的文件夹中创建
hello.txt - 创建一个名为
HiThere和 的新文件夹
- 然后将
hello.txt重命名为someTxt.txt - 然后将它们都删除
输出:
`Press CTRL+C to abort monitoring C:\Data
WARNING: File Created : New Text Document.txt
WARNING: File Changed : New Text Document.txt
WARNING: File Changed : New Text Document.txt
WARNING: File Changed : hello.txt
WARNING: File Created : New folder
WARNING: File Renamed : HiThere
WARNING: File Renamed : someTxt.txt
WARNING: File Changed : someTxt.txt
WARNING: File Changed : someTxt.txt
WARNING: File Changed : someTxt.txt
WARNING: File Deleted : someTxt.txt
WARNING: File Deleted : HiThere`
更多问题:如果我在 newtwork 驱动器上使用它,则不会捕获所有更改。 (这将是这个脚本的重点,从映射驱动器监视文件夹)。
在您的机器上测试代码,只需更改文件夹路径即可。
使用 Powershell ISE 3.0
【问题讨论】:
-
请注意,FileSystemWatcher 是出了名的不可靠,通常建议使用不同的方法来监控文件系统。
-
@GeraldSchneider 嗨,感谢您的重播。我明白了,不知道,但是也许有人有改进代码的想法。我主要是在玩 powershell 并试图找到新的很酷的方法来使用它。偶然发现了这个小项目,并想试一试。如果没有解决方案,我会放手,但还没有:)
标签: powershell directory monitoring powershell-3.0