首页 > 系统相关 >PowerShell 实现删除指定路径X天前文件功能并添加定时JOB实例

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

时间:2024-10-16 15:22:27浏览次数:7  
标签:文件 路径 Get Object _. JOB 天前 PowerShell

公司的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."

 

标签:文件,路径,Get,Object,_.,JOB,天前,PowerShell
From: https://www.cnblogs.com/fkcxy/p/18470059

相关文章

  • Win10客户端使用Powershell连接到O365
    Win10客户端使用Powershell连接到O365 首选使用get-module命令查看我的本机电脑是否安装了相关模块,上图发现并没有安装相关模块Install-Module-NameMSOnline  (安装相应的模块)   ......
  • (保姆级图文)如何使用PowerShell连接Exchange Online
    (保姆级图文)如何使用PowerShell连接ExchangeOnline直接开始菜单->所有程序-> WindowsPowerShell->WindowsPowerShell 然后右键使用管理员权限打开打开后窗口如下#连接ExchangeOnlinePowerShell#为了使从Internet下载的所有PowerShell脚本能够由受信任的......
  • 如何在Windows中添加“在此处打开PowerShell”到右键菜单
    步骤2:打开注册表编辑器步骤3:导航到合适的注册表路径步骤4:创建新项步骤5:设置默认命令步骤6:完成并关闭步骤1:打开PowerShell按下 Win + X 键,然后选择“Windows PowerShell(管理员)”。在PowerShell窗口中输入以下命令并按下回车:powershellCopy$env:PAT......
  • XXJ-JOB任务调度-快速入门-集成项目-动态创建任务
    XXJ-JOB任务调度官方文档:https://www.xuxueli.com/xxl-job/概述XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。文档地址中文文档一、快速入门依赖<dependency><group......
  • 第109天:免杀对抗-PowerShell&混淆&分离加载&特征修改&EXE生成&填充替换
    知识点知识点:1、Powershell-对变量数据做文章2、Powershell-对Shellcode做文章3、Powershell-对执行代码特征做文章章节点:编译代码面-ShellCode-混淆编译代码面-编辑执行器-编写编译代码面-分离加载器-编写程序文件面-特征码定位-修改程序文件面-加壳花指令-资源代码......
  • WindowsTerminal安装,Windows powershell和powershell区别,powershell升级方法
    1.WindowsTerminal安装从微软应用商店搜索获取即可2.Windowspowershell和powershell区别WindowsPowerShell和PowerShell是两个独立的产品,主要区别在于其运行平台和构建基础‌。以下是具体对比:‌运行平台‌:WindowsPowerShell:仅在Windows上运行,随Windows系统附带。Power......
  • 【Azure Entra ID】使用PowerShell脚本导出Entra ID中指定应用下的所有用户信息
    问题描述在AzureEntraID中,需要导出一个Application下的用户信息,包含User的创建时间。 问题解答可以使用PowerShell脚本来实现,只需要执行如下脚本:Connect-AzureAD-AzureEnvironmentNameAzureChinaCloud$users=Get-AzureADServiceAppRoleAssignment-ObjectId<youra......
  • 【Azure Entra ID】使用PowerShell脚本导出Entra ID中指定应用下的所有用户信息
    问题描述在AzureEntraID中,需要导出一个Application下的用户信息,包含User的创建时间。 问题解答可以使用PowerShell脚本来实现,只需要执行如下脚本:Connect-AzureAD-AzureEnvironmentNameAzureChinaCloud$users=Get-AzureADServiceAppRoleAssignment-ObjectId......
  • 关于结合faststream + python rq callback 进行job 状态标记的简单说明
    以前简单介绍过基于faststream+pythonrqcallback进行job状态标记,以下是结合源码说明下处理参考玩法代码实现faststream参考代码fromfaststream.redisimportRedisBroker fromfaststream.asgiimportAsgiFastStream,get,AsgiResponse fromty......
  • 帝国cms实现发布时间为几小时前几天前等格式的方法
    要在帝国CMS中实现时间显示为“几小时前”、“几天前”等格式,可以通过自定义函数来完成。以下是具体的步骤和代码示例。步骤编写自定义函数:将自定义函数写入 userfun.php 文件中。调用函数:在列表模板和内容模板中调用该函数。自定义函数将以下代码放入 userfun.php 文......