核心摘要:本指南提供一键式PowerShell脚本,用于在Windows Server上创建自动化计划任务。该任务每日凌晨扫描并删除过期的IIS日志文件,有效防止磁盘空间被占满,保障服务器稳定运行。
IIS(Internet Information Services)作为主流的Web服务器,其默认配置会持续生成访问日志。对于高流量的站点,这些日志文件体积增长极快,若不及时清理,极易导致系统盘爆满,引发网站崩溃或服务中断。
手动删除不仅繁琐,还存在误删风险。通过Windows计划任务结合PowerShell脚本,是实现IIS日志自动化清理最安全、高效的方案。
以下脚本将自动完成两件事:
在C:\Scripts目录下生成清理逻辑脚本Clean-IISLogs.ps1。
在任务计划程序中注册名为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天),无需重新部署,只需修改子脚本。
使用记事本打开C:\Scripts\Clean-IISLogs.ps1。
找到代码行:$DaysToKeep = -7。
修改数值:
改为15:保留最近15天的日志。
改为30:保留最近30天的日志。
保存文件,计划任务将在下次运行时自动应用新规则。
任务创建后,建议进行简单验证以确保其正常工作。
查看任务:按Win + R,输入taskschd.msc打开任务计划程序,在任务列表中找到AutoClean-IIS-Logs。
手动测试:在任务计划程序中右键点击该任务,选择“运行”,然后检查C:\inetpub\logs\LogFiles目录下是否有符合删除条件的旧日志被清除。
检查历史:在任务的“历史记录”选项卡中,可以查看任务的执行状态和结果。
通过本攻略,您已掌握Windows计划任务自动清理IIS日志的核心方法。此方案稳定、高效,是服务器运维的必备技能。