FSRM过期文件清理脚本故障及误删问题求助
FSRM过期数据清理脚本问题排查与修复
初始脚本无法运行的原因
初始脚本存在语法错误:
- 多个变量定义写在同一行却未用分号
;分隔,PowerShell无法正确解析指令 - 部分环境对
where name -like这类简化语法兼容性不佳
修改后脚本删除数据超预期的原因
修改后的脚本里Where-Object用法完全错误:
正确的Where-Object需要用脚本块{}包裹过滤条件,且必须引用对象属性$_.Name。你的写法相当于未添加任何过滤规则,Get-ChildItem返回的所有文件夹都会被删除,自然超出预期范围。
正确的按天数清理脚本示例
# 计算6天前的日期,格式化为YYYY-MM-DD $Date = (Get-Date).AddDays(-6).ToString("yyyy-MM-dd") # 获取符合命名规则的目标文件夹 $ExpiredDirectory = Get-ChildItem "D:\FSRMExpire\XServer" | Where-Object { $_.Name -like "Expire Stale Data_$Date*" } # 先加-WhatIf验证要删除的内容,确认无误后再移除该参数 $ExpiredDirectory | Remove-Item -Recurse -WhatIf
按月份清理的修正版本
如果需要回到按6个月前的月份清理,使用以下脚本:
# 计算6个月前的月份,格式化为YYYY-MM $Date = (Get-Date).AddMonths(-6).ToString("yyyy-MM") $ExpiredDirectory = Get-ChildItem "C:\Expired Files\FQDN of Server" | Where-Object { $_.Name -like "Expire Stale Data_$Date*" } $ExpiredDirectory | Remove-Item -Recurse -WhatIf
关键注意事项
- 始终先用
-WhatIf参数验证删除范围,避免误删重要数据 - 确保文件夹命名规则与脚本中的匹配字符串完全一致(比如前缀、下划线等细节)
- 运行脚本的账号需具备目标文件夹的删除权限
内容的提问来源于stack exchange,提问作者jjtechtech
相关产品推荐
相关产品推荐

