中文
English
繁体
日本語
Español

Windows计划任务自动清理IIS日志:PowerShell脚本一键部署,每日定时删除过期文件释放磁盘空间

2026-08-07

⚙️ 终极攻略:Windows计划任务自动清理IIS日志,释放服务器空间

核心摘要:本指南提供一键式PowerShell脚本,用于在Windows Server上创建自动化计划任务。该任务每日凌晨扫描并删除过期的IIS日志文件,有效防止磁盘空间被占满,保障服务器稳定运行。

🎯 为什么你需要自动化清理IIS日志?

IIS(Internet Information Services)作为主流的Web服务器,其默认配置会持续生成访问日志。对于高流量的站点,这些日志文件体积增长极快,若不及时清理,极易导致系统盘爆满,引发网站崩溃或服务中断。

手动删除不仅繁琐,还存在误删风险。通过Windows计划任务结合PowerShell脚本,是实现IIS日志自动化清理最安全、高效的方案。

🚀 一键部署:自动创建清理任务与脚本

以下脚本将自动完成两件事:

  1. 在C:\Scripts目录下生成清理逻辑脚本Clean-IISLogs.ps1。

  2. 在任务计划程序中注册名为AutoClean-IIS-Logs的定时任务,每天凌晨2点自动执行。

操作前准备:请以管理员身份运行PowerShell。


# ================= 自动化部署脚本:IIS日志清理 =================


# 1. 定义路径与生成清理子脚本

$ScriptDir = "C:\Scripts"

$ScriptPath = Join-Path $ScriptDir "Clean-IISLogs.ps1"


# 如果目录不存在则创建

if (!(Test-Path $ScriptDir)) {

   New-Item -ItemType Directory -Path $ScriptDir | Out-Null

}


# 定义具体的清理逻辑内容

$ScriptContent = @'

$LogPath = "C:\inetpub\logs\LogFiles"

$DaysToKeep = -7

$ThresholdDate = (Get-Date).AddDays($DaysToKeep)


# 扫描并删除旧日志

Get-ChildItem -Path $LogPath -Recurse -Filter *.log |

Where-Object { $_.LastWriteTime -lt $ThresholdDate } |

Remove-Item -Force -ErrorAction SilentlyContinue

'@


# 将清理逻辑写入文件

Set-Content -Path $ScriptPath -Value $ScriptContent -Encoding UTF8


# 2. 注册 Windows 计划任务

$TaskName = "AutoClean-IIS-Logs"

$Description = "每日自动清理 IIS 日志,保留最近 7 天"


# 设置触发器:每天凌晨 02:00

$Trigger = New-ScheduledTaskTrigger -Daily -At 02:00


# 设置动作:调用 PowerShell 执行刚才生成的脚本

$Action = New-ScheduledTaskAction -Execute "powershell.exe" `

-Argument "-ExecutionPolicy Bypass -WindowStyle Hidden -File `"$ScriptPath`""


# 设置安全主体:使用 SYSTEM 账户(最高权限,无需密码)

$Principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest


# 注册任务

Register-ScheduledTask -TaskName $TaskName `

-Description $Description `

-Trigger $Trigger `

-Action $Action `

-Principal $Principal `

-Force


Write-Host "✅ 任务创建成功!任务名:[$TaskName],将在每天 02:00 自动运行。" -ForegroundColor Green


🔍 脚本核心逻辑解析

本方案采用“主脚本部署+子脚本执行”的架构,确保维护的灵活性。

  • 清理目标:脚本默认指向IIS默认日志路径C:\inetpub\logs\LogFiles。

  • 筛选机制:利用Get-ChildItem递归查找所有.log文件,并通过LastWriteTime属性判断文件年龄。

  • 执行动作:Remove-Item -Force确保文件被强制删除,ErrorAction SilentlyContinue则忽略因文件被占用等原因产生的非致命错误,保证任务稳定运行。

  • 权限配置:任务使用NT AUTHORITY\SYSTEM账户运行,这是Windows最高权限账户,能确保脚本无障碍访问和删除系统目录下的日志文件。

🛠️ 进阶配置:如何自定义日志保留天数?

若需调整日志保留策略(例如改为保留15天或30天),无需重新部署,只需修改子脚本。

  1. 使用记事本打开C:\Scripts\Clean-IISLogs.ps1。

  2. 找到代码行:$DaysToKeep = -7。

  3. 修改数值:

    • 改为15:保留最近15天的日志。

    • 改为30:保留最近30天的日志。


  4. 保存文件,计划任务将在下次运行时自动应用新规则。

✅ 验证与故障排查

任务创建后,建议进行简单验证以确保其正常工作。

  • 查看任务:按Win + R,输入taskschd.msc打开任务计划程序,在任务列表中找到AutoClean-IIS-Logs。

  • 手动测试:在任务计划程序中右键点击该任务,选择“运行”,然后检查C:\inetpub\logs\LogFiles目录下是否有符合删除条件的旧日志被清除。

  • 检查历史:在任务的“历史记录”选项卡中,可以查看任务的执行状态和结果。

通过本攻略,您已掌握Windows计划任务自动清理IIS日志的核心方法。此方案稳定、高效,是服务器运维的必备技能。


通过 PowerShell 脚本 创建自动化清理 IIS日志的任务.pdf


分享
下一篇:这是最后一篇
上一篇:这是第一篇