You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现FileSystemWatcher全天运行?解决关闭PowerShell窗口即停止问题

实现FileSystemWatcher 24小时不间断运行的解决方案

我来帮你搞定这个持续监控的问题,你遇到的两个小麻烦(重复运行报错、关闭ISE就停止)都有明确的解决办法,而且完全可以通过任务计划程序实现24小时不间断监控,下面一步步来拆解:

一、先解决重复运行时的「subscriber already exists」错误

重复运行脚本时报错,是因为之前注册的事件订阅还残存在PowerShell会话里。只要在脚本开头加一行清理命令,就能彻底解决这个问题:

# 先移除已存在的同名事件订阅(如果有),避免重复运行报错
Unregister-Event -SourceIdentifier FileCreated -ErrorAction SilentlyContinue

$folder = 'G:\localexcelfiles\Logistics\logistics automation'
$filter = '*.*' # 你可以改成'*.xlsx'来仅监控Excel文件
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
    IncludeSubdirectories = $false
    NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
    $path = $Event.SourceEventArgs.FullPath
    $Filename = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
    $timeStamp = $Event.TimeGenerated
    # 这里可以添加你的文件处理逻辑,比如输出日志或者调用处理函数
    "[$timeStamp] $changeType : $Filename at $path" | Out-File "C:\Scripts\MonitorLog.txt" -Append
}

# 让脚本保持运行状态,否则会话结束后事件订阅会直接失效
while ($true) {
    Start-Sleep -Seconds 30
}

注意我在脚本末尾加了个无限循环,让脚本一直处于运行状态——不然PowerShell执行完所有代码就会自动退出,事件订阅也就跟着失效了。

二、通过任务计划程序实现24小时不间断运行

关闭ISE后脚本停止,是因为脚本在交互式会话里运行,会话一结束进程就终止了。用任务计划程序可以把脚本改成后台服务式的运行,哪怕你注销账号、关闭所有窗口,它都能持续监控。

步骤1:创建自定义任务

打开「任务计划程序」,点击右侧的创建任务(别选「创建基本任务」,自定义任务能配置更多细节)。

步骤2:配置常规选项

  • 名称:比如「物流文件夹监控脚本」,方便识别
  • 安全选项:勾选「不管用户是否登录都要运行」(核心!这样即使你注销账号,任务依然在后台跑),然后选择一个有监控文件夹读写权限的账户(建议用本地管理员账户,避免权限不足的坑),再勾选「使用最高权限运行」。

步骤3:配置触发器

点击「触发器」选项卡,新建一个触发器:

  • 选择「启动时」(电脑开机就自动启动任务),或者「登录时」(用户登录后启动),按需选择;
  • 可以设置「延迟任务时间」为1分钟,避免开机时系统资源紧张导致脚本启动失败。

步骤4:配置操作

点击「操作」选项卡,新建操作:

  • 操作:选择「启动程序」
  • 程序/脚本:输入powershell.exe
  • 添加参数:把下面的路径换成你的脚本绝对路径,复制进去:
    -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File "C:\Scripts\YourMonitorScript.ps1"
    
    简单解释下参数:
    • -NoProfile:不加载PowerShell配置文件,加快启动速度
    • -WindowStyle Hidden:后台静默运行,不会弹出PowerShell窗口
    • -ExecutionPolicy Bypass:绕过系统执行策略限制,确保脚本能正常运行
    • -File:指定要运行的脚本文件路径

步骤5:配置条件和设置

  • 条件选项卡:取消勾选「只有在计算机使用交流电源时才启动此任务」,确保笔记本用电池时也能正常监控;
  • 设置选项卡:
    • 勾选「如果任务失败,每隔5分钟重试」,重试3次,避免临时故障导致任务中断;
    • 勾选「允许任务按需运行」,方便你手动测试;
    • 选择「如果任务已经运行,以下规则适用」:推荐选「不要启动新实例」,避免多个脚本同时监控同一个文件夹造成冲突;
    • 可以取消勾选「如果任务运行时间超过X小时就停止」,或者设置一个较长的时间(比如24小时),确保脚本持续运行。

步骤6:测试验证

配置完成后,回到任务计划程序主界面,找到你创建的任务,右键点击「运行」,然后往监控文件夹里扔个测试文件,检查日志文件(就是脚本里配置的MonitorLog.txt)是否有记录,确认脚本正常工作。

额外提醒

  1. 所有路径用绝对路径:脚本里的监控文件夹、日志文件路径,还有任务计划里的脚本路径,都要用绝对路径,别用相对路径,避免找不到文件;
  2. 日志很重要:一定要在脚本里加日志输出,方便后续排查问题;
  3. 权限提前确认:确保任务用的账户对监控文件夹有读写权限,否则FileSystemWatcher可能触发不了事件。

内容的提问来源于stack exchange,提问作者sireesha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:58:03