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

Powershell: FileSystemWatcher monitor only certain subfolders

如何在 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

那个根监控文件夹里面有一个树状结构:

任务 01

任务02

任务03

我只想检查 "approved" 个文件夹中的更改。

最简单的解决方案是

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

但这似乎不太奏效...

您将不得不在每个要监控的目录上设置一个观察器,因为路径不支持通配符(请参阅此 [= 上的 例外部分 15=]: FileSystemWatcher.Path) 尝试使用过滤器 属性 来支持可能的通配符路径也不会起作用。

嗯,一个可能的解决方法是评估我们的事件处理程序(创建、更改等)中的“路径”值,以查看它是否符合您要监视的文件夹的模式,并且处理。如果适合,则继续运行事件处理程序中的代码,如果不适合,则直接return退出处理程序。