windows系统不支持网络共享路径自动监视与文件丢失告警的开箱即用功能,但可通过服务器端配置ntfs审核(事件id 4663)、任务计划触发powershell脚本弹窗告警,并辅以robocopy定期校验实现可靠预警。
windows 系统本身不支持对网络共享路径“自动监视 + 文件丢失即告警”的开箱即用功能,但可通过组合系统原生能力(目录监控、事件日志、任务计划)与轻量脚本实现可靠预警。关键在于:把“文件消失”转化为可检测的系统行为,并触发可见提醒或通知。
启用共享路径的NTFS审核并捕获删除操作
仅靠观察文件夹内容变化不可靠,必须让系统主动记录“谁删了什么”。这需要在共享文件夹所在服务器(即实际存放文件的那台Windows电脑)上配置审核规则:
- 右键共享文件夹 → 属性 → 安全 → 高级 → 切换到“审核”选项卡 → 点击“继续”获取权限
- 点击“添加”,主体选
Everyone或具体用户组 - 勾选以下两项(其他可不选,避免日志爆炸):
- 删除子文件夹和文件
- 删除
- 应用后,每次有人删除该文件夹内的内容,系统就会在【事件查看器 → Windows 日志 → 安全】中生成事件ID 4663(句柄被请求的操作含“DELETE”)
⚠️ 注意:此步骤必须在文件实际存储的服务器端配置,而不是在访问它的客户端电脑上。
创建任务计划,监听删除事件并触发警报
当4663事件出现时,用任务计划程序自动运行一个响应动作:
- 打开
taskschd.msc→ 创建基本任务 - 触发器选“当特定事件被记录时”
- 日志:Security
- 来源:Microsoft-Windows-Security-Auditing
- 事件ID:4663
- 操作选“启动程序”,填入:
powershell.exe -ExecutionPolicy Bypass -File "C:Alertson_delete_alert.ps1"
- 提前创建
C:Alertson_delete_alert.ps1,内容示例:$event = Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4663; StartTime=(Get-Date).AddMinutes(-1)} -MaxEvents 1 -ErrorAction SilentlyContinue if ($event) { $target = ($event.Properties[6].Value -split '\')[-1] # 获取被删文件名 $user = $event.Properties[1].Value # 获取操作用户 # 发送桌面弹窗(需启用Toast权限) [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null $toastXml = @" <toast><visual><binding template="ToastGeneric"><text>⚠️ 文件丢失警报</text><text>用户 $user 删除了共享文件:$target</text></binding></visual></toast> "@ $toastXml = [Windows.Data.Xml.Dom.XmlDocument]::New().LoadXml($toastXml) } - 首次运行前,在PowerShell中执行一次:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
补充:用Robocopy定期校验文件存在性(离线兜底)
如果共享路径偶尔断连、或审核日志被清空,可加一层主动检查:
- 写一个
.bat脚本,列出你关心的关键文件路径(如\servershare eport.xlsx,\servershareconfig.json),逐个用if not exist判断; - 若任一文件缺失,调用
msg * "警告:关键文件 report.xlsx 不见了!"(仅专业版/企业版)或发送邮件(需配置SMTP); - 用任务计划设为每15分钟运行一次,作为审核机制的补充手段。
不复杂但容易忽略











