PowerShell 实现删除指定路径X天前文件功能并添加定时JOB实例

news/2024/10/22 14:33:14

公司的POA服务器的E盘隔三差五就爆满,原因是数据库备份文件越来越大,现在已经大到需要高频清理的地步了

十一前出现的这个问题,当时为了不专门在假期里某天特地去清理磁盘,想着一定要搞个定时JOB实现自动清理

最后选用了PowerShell脚本实现

新建一个txt文件,打开编辑内容如下:

# 设置要搜索的目录路径  
$searchPath = "E:\OracleFRA\RMAN\Backup\"  
  
# 获取日期(作为DateTime对象)  
$beforeday = (Get-Date).AddDays(-10)  # 遍历指定路径下的所有文件  
Get-ChildItem -Path $searchPath -File | Where-Object { $_.LastWriteTime -lt $beforeday } | ForEach-Object {  # 输出将要删除的文件路径(可选)  Write-Host "Deleting: $($_.FullName)"  # 删除文件  Remove-Item -Path $_.FullName -Force  
}  # 输出完成消息(可选)  
Write-Host "Done."

修改文件名及后缀为deletefiles.ps1

放到指定位置既可,参考位置D:\TOOL\IMT\deletefiles.ps1

然后打开Task Scheduler(任务计划程序)添加定时JOB既可

这里添加定时JOB的基础操作不提供了,只补充一个Action设置例图:

 下面那两个框的内容分别是

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-NoProfile -ExecutionPolicy Bypass -File "D:\TOOL\IMT\deletefiles.ps1"

 

补充一些后面想把这个JOB复制到其他服务器遇到的问题

遇到的第一个问题是PowerShell 脚本执行策略阻止运行 deletefiles.ps1 脚本

具体错误信息:File D:\Tool\IMT\deletefiles.ps1 cannot be loaded because the execution of disabled on this system

解决方法是以管理员身份运行 PowerShell,输入命令,更改执行策略,注意PowerShell 会进行命令确认, 输入 Y 并按回车键既可

更改执行策略的命令:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

遇到的第二个问题是服务器上PowerShell 版本太低不支持 -File 参数

具体错误信息:Get-ChildItem:A parameter cannot be found that matches parameter name 'File'

解决方法是使用 -Filter 参数配合文件通配符(如 *.*)来模拟 -File 参数的行为 或  通过将 Get-ChildItem 的输出传递给 Where-Object 来过滤实现相同功能

使用 -Filter 参数的PowerShell脚本:

# 设置要搜索的目录路径  
$searchPath = "E:\OracleFRA\RMAN\Backup\"  
  
# 获取要删除的日期(作为DateTime对象)  
$beforeday = (Get-Date).AddDays(-10)  # 遍历指定路径下的所有文件(使用 -Filter 参数)  
Get-ChildItem -Path $searchPath -Filter *.* | Where-Object { !$_.PSIsContainer -and $_.LastWriteTime -lt $beforeday } | ForEach-Object {  # 输出将要删除的文件路径(可选)  Write-Host "Deleting: $($_.FullName)"  # 删除文件  Remove-Item -Path $_.FullName -Force  
}  # 输出完成消息(可选)  
Write-Host "Done."

 

使用 Where-Object 过滤的PowerShell脚本:

# 设置要搜索的目录路径  
$searchPath = "E:\OracleFRA\RMAN\Backup\"  
  
# 获取要删除的日期(作为DateTime对象)  
$beforeday = (Get-Date).AddDays(-10)  # 遍历指定路径下的所有项,然后过滤出文件  
Get-ChildItem -Path $searchPath | Where-Object { !$_.PSIsContainer -and $_.LastWriteTime -lt $beforeday } | ForEach-Object {  # 输出将要删除的文件路径(可选)  Write-Host "Deleting: $($_.FullName)"  # 删除文件  Remove-Item -Path $_.FullName -Force  
}  # 输出完成消息(可选)  
Write-Host "Done."

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/72281.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

高等数学 5.3 定积分的换元法和分部积分法

目录一、定积分的换元法二、定积分的分部积分法 一、定积分的换元法定理 设函数 \(f(x)\) 在区间 \([a, b]\) 上连续,函数 \(x = \varphi(t)\) 满足条件: (1)\(\varphi (\alpha) = a, \varphi (\beta) = b\) ; (2)\(\varphi (t)\) 在 \([\alpha, \beta]\) (或 \([\beta…

Monaco Editor 实现一个日志查看器

我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:文长前言 在 Web IDE 中,控制台中展示日志是至关重要的功能。Monaco Editor 作为一个强大的代码编辑器,提供了丰富的功能和灵活的…

必看!解读Salesforce最新AI趋势报告

近年来,AI技术正在快速渗透到各行各业,尤其是在客户关系管理(CRM)领域。 据Salesforce最新的《AI在CRM中的趋势》报告显示,尽管AI发展潜力巨大,但许多公司在接受这一新技术时仍然犹豫不决。如何解决数据、信任和伦理等关键问题,成为企业能否真正释放AI潜力的关键。 员工…

OS-Nachos内存管理

实验目的在Nachos现有页表的基础上,增加TLB快表机制,使得在做虚拟地址到物理地址的转换时,优先从TLB快表中读取; 针对TLB增加NRU置换算法; 除实验源码和实验结果截图以外,需提供以下文字解释说明: 解释说明nachos -x userProgName 的启动过程及原生Nachos系统中的内存访…

vbox7安装winxp

用当前版本的virtualbox安装xp一直是个问题,装着装着就没响应了,进度条挂在那,看着动其实不动,参数也试着调了调,可反复试还是不成了,一度认为试兼容问题,好几次需用到xp系统时愣是卡在那,4-7的版本都试了试,不成,今日偶然间撞成了,设置需满足三个条件: 1.cpu只能选…

OS-Nachos实验环境的搭建

实验目的:按照实验教程在本地虚拟机搭建Nachos开发环境; 安装docker,下载镜像搭建基于docker的Nachos开发环境; 使用./nachos –u 学习nachos的用法,并对相关命令选项进行尝试; 使用nachos –x 选项加载test目录下编译为noff格式的用户程序运行,思考nachos执行结果错误的…

Nuxt.js 应用中的 modules:done 事件钩子详解

title: Nuxt.js 应用中的 modules:done 事件钩子详解 date: 2024/10/16 updated: 2024/10/16 author: cmdragon excerpt: modules:done 是 Nuxt.js 中一个重要的生命周期钩子,在 Nuxt 应用初始化期间触发。该钩子允许开发者在用户定义的模块安装完成后执行特定操作,如初始…

OS-Lab4-多线程编程基础

实验目的 事先编辑好数据文件1.dat和2.dat,它们的内容分别为1 2 3 4 5 6 7 8 9 10和 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10。根据示例代码和其运行效果设计一个程序,在这个程序中一共有3个线程,其中两个线程负责从文件读取数据到公共的缓冲区,另外一个线程从缓冲区读取数据作不同…