Windows服务器IIS日志清理

IIS日志默认按天写入,长时间不清理会占满系统盘,导致网站无法访问。
本文面向零基础运维人员,讲解如何通过PowerShell脚本自动将旧日志归档为ZIP文件,并配合任务计划程序定时执行,最终实现日志自动清理与备份。

先确认日志目录和保留策略

动手前需要知道IIS把日志写在哪里。
默认路径是 C:\inetpub\logs\LogFiles,但很多服务器会修改到其他盘。
打开IIS管理器,点击左侧服务器名称,双击“日志”图标,查看“目录”字段的实际路径。

保留策略建议根据磁盘空间和合规要求决定。
一般保留30到90天,归档文件可以保留更久。
本文示例保留最近7天日志,超过7天的自动压缩归档到 D:\IISLogArchive

编写PowerShell自动归档脚本

D:\Scripts 下新建 Archive-IISLogs.ps1,内容如下。
脚本会遍历日志目录下的子文件夹,找出最后修改时间超过7天的 .log 文件,压缩到指定归档目录,并删除原文件。

$LogRoot = "C:\inetpub\logs\LogFiles"
$ArchiveRoot = "D:\IISLogArchive"
$DaysToKeep = 7
$CutoffDate = (Get-Date).AddDays(-$DaysToKeep)

if (-not (Test-Path $ArchiveRoot)) {
    New-Item -ItemType Directory -Path $ArchiveRoot | Out-Null
}

Get-ChildItem -Path $LogRoot -Recurse -Filter "*.log" | Where-Object {
    $_.LastWriteTime -lt $CutoffDate
} | ForEach-Object {
    $RelativePath = $_.FullName.Substring($LogRoot.Length).TrimStart('\')
    $ArchiveName = ($RelativePath -replace '\\', '_') + ".zip"
    $ArchivePath = Join-Path $ArchiveRoot $ArchiveName
    Compress-Archive -Path $_.FullName -DestinationPath $ArchivePath -Force
    Remove-Item $_.FullName -Force
}

注意:Compress-Archive 在PowerShell 5.0及以上版本可用。
如果服务器是Windows Server 2012 R2,请先确认PowerShell版本,版本过低需改用其他压缩方式。

用任务计划程序定时执行

打开“任务计划程序”,点击右侧“创建任务”。
常规选项卡中勾选“使用最高权限运行”,配置选择对应的Windows版本。

触发器选项卡新建触发器,设置为“每天”,时间建议凌晨3点,并勾选“启用”。
操作选项卡新建操作,程序或脚本填 powershell.exe,添加参数填 -ExecutionPolicy Bypass -File D:\Scripts\Archive-IISLogs.ps1

条件选项卡中取消勾选“只有在计算机使用交流电源时才启动此任务”,避免笔记本或虚拟机因电源策略不执行。
设置选项卡中勾选“如果任务失败,按以下频率重新启动”,间隔10分钟,尝试3次。

避坑指南:权限、路径与压缩失败

权限不足:任务计划程序默认以当前用户运行,可能没有权限删除IIS日志。
建议在“常规”中改为“不管用户是否登录都要运行”,并输入管理员账户密码。

路径含空格:如果日志目录或归档目录包含空格,脚本中的路径变量必须用引号包裹,否则会报错。

压缩失败Compress-Archive 遇到正在写入的日志文件可能失败。
建议在脚本开头增加判断,跳过最后修改时间在1小时内的文件,或者将任务安排在凌晨低峰期执行。

归档文件重复:如果同名ZIP已存在,脚本中使用了 -Force 会覆盖。
若希望保留历史版本,可改用时间戳命名,例如 $ArchiveName = ($RelativePath -replace '\\','_') + "_" + (Get-Date -Format "yyyyMMddHHmmss") + ".zip"

验证归档是否生效

执行脚本后,检查 D:\IISLogArchive 目录是否出现ZIP文件,同时确认原日志目录中超过7天的 .log 文件已被删除。
可以手动运行一次脚本:打开PowerShell,执行 -File D:\Scripts\Archive-IISLogs.ps1,观察是否有报错。

在任务计划程序中右键任务,选择“运行”,然后查看“上次运行结果”是否为 0x0
如果返回其他代码,可结合“历史记录”选项卡中的事件详情排查。

判断标准:归档目录出现按日期命名的ZIP文件,且原日志目录中旧文件消失,即表示自动归档脚本工作正常。

常见疑问

脚本可以处理子文件夹吗? 可以。
示例中使用了 -Recurse 参数,会递归查找所有子目录下的 .log 文件。

归档后需要手动删除ZIP吗? 建议根据磁盘容量设置二次清理策略,例如再写一个脚本删除超过180天的ZIP文件,同样通过任务计划程序执行。

IIS日志正在被占用怎么办? IIS会保持当前日志文件打开,但历史日志通常已关闭。
如果遇到占用错误,可将 $DaysToKeep 调大,确保只处理已关闭的文件。

能否只清理不归档? 可以,去掉 Compress-Archive 那行即可,但归档能保留排查问题的依据,建议保留。

按照以上步骤配置后,Windows服务器IIS日志清理与自动归档脚本就能稳定运行,磁盘空间不会再被日志悄悄占满。

分享到:
上一篇
Windows服务器远程桌面多用户设置
下一篇
Docker容器固定IP配置,内网容器互相访问
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意