PowerShell脚本通配符遍历用户Temp文件夹实现定期清理
批量清理多用户Temp文件夹的PowerShell脚本
修改后的核心脚本
# 设置过期时间:清理15天前创建的文件 $CutOffDate = (Get-Date).AddDays(-15) # 遍历所有用户的Temp文件夹(通配符适配任意用户名) $userTempFolders = Get-ChildItem -Path "Z:\Profiles\Users\*\AppData\Local\Temp" -Directory -ErrorAction SilentlyContinue foreach ($folder in $userTempFolders) { # 清理当前Temp文件夹内的过期文件(含子文件夹) Get-ChildItem -Path $folder.FullName -File -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.CreationTime -lt $CutOffDate } | Remove-Item -Force -ErrorAction SilentlyContinue # 可选:输出处理日志 Write-Host "已完成清理:$($folder.FullName)" }
关键特性说明
- 通配符适配:用
Z:\Profiles\Users\*\AppData\Local\Temp自动匹配所有用户的Temp目录,无需手动指定用户名 - 容错处理:
-ErrorAction SilentlyContinue跳过不存在的文件夹或无权限访问的目录,避免脚本中断 - 精准清理:
-File参数确保只删除文件,不会误删子文件夹;-Recurse遍历所有层级的临时文件 - 强制删除:
-Force参数处理带只读属性的临时文件,提升清理覆盖率
组策略部署适配(百用户场景)
- 脚本部署方式:将脚本保存为
CleanupUserTemp.ps1,通过组策略的计算机配置 > 脚本 > 启动或用户配置 > 脚本 > 登录执行:- 选计算机启动:需确保系统账号对所有用户Temp文件夹有读/删权限
- 选用户登录:仅清理当前登录用户的Temp文件夹,权限问题更少
- 权限配置:提前给执行脚本的账号(如域管理员、系统账号)分配
Z:\Profiles\Users目录的遍历及子文件夹删除权限 - 测试建议:先在单用户环境验证脚本效果,确认无误后再批量部署到生产环境
- 日志扩展(可选):添加日志记录便于排查问题,示例代码:
$logFile = "D:\TempCleanupLogs\$(Get-Date -Format 'yyyyMMdd').log" Add-Content -Path $logFile -Value "[$(Get-Date -Format 'HH:mm:ss')] 已清理文件夹:$($folder.FullName)"
内容的提问来源于stack exchange,提问作者qwertyyuiop
相关产品推荐
相关产品推荐

