You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:每周自动删除用户下载文件夹内容的PowerShell脚本故障排查

解决方法

先说说你两个脚本的问题

  1. 第一个脚本:$Env:Downloads是当前用户的下载路径,替换用户名成*后生成的路径格式不对,导致Get-ChildItem无法正确解析,自然执行报错。
  2. 第二个脚本:普通用户本身没权限访问其他用户的Downloads文件夹;管理员运行时,C:\Users\*\Downloads\*.*的通配符写法在PowerShell里不能正确遍历所有用户的下载目录,而且没加权限相关参数,所以只能处理管理员自己的文件夹。

修正后的可用脚本

# 设置7天前的截止日期
$CutOffDate = (Get-Date).AddDays(-7)

# 遍历C:\Users下的用户文件夹,排除系统默认的公共/默认用户目录
$userFolders = Get-ChildItem -Path "C:\Users" -Directory | Where-Object {
    $_.Name -notin @("Public", "Default", "Default User", "All Users")
}

# 逐个处理每个用户的Downloads文件夹
foreach ($userFolder in $userFolders) {
    $downloadsPath = Join-Path -Path $userFolder.FullName -ChildPath "Downloads"
    
    # 先确认Downloads文件夹存在,再执行清理
    if (Test-Path -Path $downloadsPath) {
        # 获取7天前创建的文件/文件夹,跳过无权限或正在使用的项目
        Get-ChildItem -Path $downloadsPath -Recurse -Force -ErrorAction SilentlyContinue |
            Where-Object { $_.CreationTime -lt $CutOffDate } |
            Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
    }
}

脚本细节说明

  • 排除系统目录:跳过Public、Default这类系统自带的用户文件夹,避免无效操作
  • 安全路径拼接:用Join-Path生成下载目录路径,比手动拼接更稳妥,不会出现格式错误
  • 权限与容错:-Force参数能处理只读文件,-ErrorAction SilentlyContinue会跳过无法访问或正在被占用的文件,防止脚本中途中断
  • 存在性检查:先判断Downloads文件夹是否存在,避免路径不存在的报错

自动运行设置(每周执行)

  1. 右键任务栏,打开任务计划程序,用管理员身份运行
  2. 创建基本任务:
    • 触发器选「每周」,设置你需要的执行时间
    • 操作选「启动程序」,程序/脚本填powershell.exe,添加参数填-ExecutionPolicy Bypass -File "你的脚本完整路径.ps1"
    • 勾选「不管用户是否登录都要运行」,并选中「使用最高权限运行」
  3. 保存任务即可

测试建议

第一次运行前,可以把Remove-Item那行换成Select-Object FullName,先查看将要删除的文件列表,确认无误后再改回删除命令,避免误删重要文件

内容的提问来源于stack exchange,提问作者qwertyyuiop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 12:33:14