如何实现指定文件夹文件变更时自动重启IIS?
实现指定文件夹文件变更时自动重启IIS的步骤
下面提供两种可行的实现方案,按需选择:
方法一:借助任务计划程序(系统自带工具)
1. 先写好重启IIS的脚本
新建一个文本文件,输入以下命令后保存为RestartIIS.bat(比如存到C:\Scripts文件夹下):
iisreset /restart
右键以管理员身份运行该脚本,测试是否能正常重启IIS。
2. 打开任务计划程序
按下Win+R,输入taskschd.msc回车启动工具。
3. 创建新任务
右键左侧“任务计划程序库”,选择“创建基本任务”:
- 给任务命名(比如“文件变更触发IIS重启”),填写描述后点击下一步;
- 触发器选择“当特定事件被记录时”,点击下一步;
- 日志选择
Microsoft-Windows-Filesystem/Operational,来源选择Microsoft-Windows-Filesystem,事件ID填4663,点击下一步; - 点击“自定义”按钮,切换到“XML”标签,勾选“手动编辑查询”,替换为以下XML内容(筛选指定文件夹的文件变更事件):
<QueryList> <Query Id="0" Path="Microsoft-Windows-Filesystem/Operational"> <Select Path="Microsoft-Windows-Filesystem/Operational">*[System[EventID=4663]] and *[EventData[Data[@Name='ObjectType']='File'] and *[EventData[Data[@Name='ObjectName']='C:\inetpub\wwwroot\mywebsite\products\files']]]</Select> </Query> </QueryList>
- 操作选择“启动程序”,点击下一步;
- 程序或脚本选择刚才创建的
C:\Scripts\RestartIIS.bat,点击下一步。
4. 配置任务权限
完成创建前,勾选“当单击完成时,打开此任务的属性对话框”:
- 在“常规”标签下,勾选“使用最高权限运行”(重启IIS需要管理员权限);
- 在“设置”标签下,取消勾选“如果任务运行时间超过XX小时就停止”,确保任务能正常执行。
方法二:用PowerShell脚本实时监控
1. 编写监控脚本
新建文本文件,输入以下代码后保存为RestartIISOnChange.ps1(比如存到C:\Scripts文件夹下):
# 目标监控文件夹路径 $folderPath = "C:\inetpub\wwwroot\mywebsite\products\files" # 创建文件监控对象 $watcher = New-Object System.IO.FileSystemWatcher $watcher.Path = $folderPath $watcher.IncludeSubdirectories = $true # 如需监控子文件夹设为true,否则设为false $watcher.EnableRaisingEvents = $true # 定义文件变更时的执行动作 $action = { $path = $Event.SourceEventArgs.FullPath $changeType = $Event.SourceEventArgs.ChangeType Write-Host "文件 $path 发生 $changeType 变更,开始重启IIS..." # 执行IIS重启命令 iisreset /restart } # 注册文件变更事件(修改、创建、删除、重命名) Register-ObjectEvent $watcher "Changed" -Action $action | Out-Null Register-ObjectEvent $watcher "Created" -Action $action | Out-Null Register-ObjectEvent $watcher "Deleted" -Action $action | Out-Null Register-ObjectEvent $watcher "Renamed" -Action $action | Out-Null Write-Host "正在监控文件夹 $folderPath 的变更..." # 保持脚本运行 while ($true) { Sleep 5 }
2. 测试脚本
右键以管理员身份运行PowerShell,执行脚本C:\Scripts\RestartIISOnChange.ps1,修改目标文件夹内的文件,验证是否自动重启IIS。
3. 设置脚本开机自启(可选)
如果需要脚本持续运行,可通过任务计划程序配置:
- 创建新任务,触发器选择“登录时”;
- 操作选择“启动程序”,程序填
powershell.exe,参数填-ExecutionPolicy Bypass -File "C:\Scripts\RestartIISOnChange.ps1"; - 同样勾选“使用最高权限运行”。
注意事项
- 权限要求:两种方案都需要管理员权限才能执行,否则无法重启IIS。
- 文件审核开启:方法一中的4663事件需要系统开启目标文件夹的文件审核,操作路径:文件夹属性→安全→高级→审核→添加,设置对“修改”等操作的审核规则,否则不会生成对应事件。
- 避免频繁触发:如果目标文件夹有高频文件变更,建议在脚本中添加延迟判断逻辑,防止IIS被频繁重启导致服务不稳定。
内容的提问来源于stack exchange,提问作者Phuluso Ramulifho
相关产品推荐
相关产品推荐

