Powershell:FileSystemWatcher仅监视某些子文件夹

时间:2015-08-20 11:35:57

标签: powershell wildcard filesystemwatcher

如何在Powershell中使用FileSystemWatcher仅监控文件夹的某些子文件夹?

我像这样创建一个新的FileSystemWatcher:

$folder = 'path\to\root\monitoring\folder'
$filter = '*.xml'   

$fsw = New-Object IO.FileSystemWatcher

$fsw.Path = $folder
$fsw.Filter = $filter
$fsw.IncludeSubdirectories = $true
$fsw.EnableRaisingEvents = $true

在根监控文件夹中有一个树状结构:

task01

  • 工作
  • 批准
  • 批准

task02

  • 工作
  • 批准
  • 批准

task03

  • 工作
  • 批准
  • 批准

我只想查看"已批准"的更改?文件夹。

最简单的解决方案是

$folder = 'path\to\root\monitoring\folder\*\approved'

但这似乎没有用......

2 个答案:

答案 0 :(得分:0)

您必须在每个要监视的目录上设置一个观察程序,因为路径没有通配符支持(请参阅此链接上的例外部分FileSystemWatcher.Path ) 尝试使用Filter属性来支持可能的通配符路径也不起作用。

答案 1 :(得分:0)

好吧,一种可能的解决方法是评估我们的事件处理程序(已创建、已更改等)中的“路径”值,以查看它是否适合您要监视和处理的文件夹的模式。如果合适,则继续运行Event Handler中的代码,如果不合适,则直接从Handler中返回。