Windows环境powershell 运维之历史文件压缩清理

一、Power Shell概述
1.1 Windows Power Shell简介
Windows PowerShell 是微软发布的一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。

引入了许多非常有用的新概念,从而进一步扩展了在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。

1.2 PowerShell是什么
PowerShell,从名字可以知道,他首先是一个shell,shell的意思就是和Linux的bash等一样、和原来的cmd一样就是在里边敲命令(可执行文件)使用;而Power就意味他是一个功能强大的shell,从面向用户而言,个人觉得其功能强大体现在以下几方面:

(1) 微软态度。微软是真正的在推行PowerShell,包括Office等更多自家软件,底层都是调用PowerShell来实现。

(2) 兼容性cmd。PowerShell包含原先cmd的所有命令,原先命令使用形式不变,在是在其基础上添加命令。

(3) 对标Linux。PowerShell使用了Linux Shell的思想,也就是所有的系统操作、配置,都可以在shell中敲写命令实现。

(4) 统一的命令格式和自包含的文档。PowerShell的两个优点:第一点是PowerShell所有命令使用统一的cmdlet命令格式(也就是“动词-名词”的格式,比如get-process)会使人很容易记住;第二点这里所谓自包含是指你要干一件事你可以逐步找到要做的事所需的所有命令,即便你记不得命令你也可以很容易找到,你找到命令看文档就很容易知道怎么使用。

1.3 windows执行策略更改
右击开始找到 powershell 管理员

Windows环境powershell 运维之历史文件压缩清理

进入powershell命令行执行如下命令: 一定要执行!

执行如下命令,回车选择Y( 复制后鼠标 右击可粘贴,也可将执行的命令放到临时文本中再复制到命令行执行)

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

执行如下命令,回车选择Y

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope localMachine

执行下面的命令查看 CurrentUser,LocalMachine 是否已改为 Bypass

get-executionpolicy -list
Windows环境powershell 运维之历史文件压缩清理

修改后的执行策略检查

Windows环境powershell 运维之历史文件压缩清理

检查通过后,关闭powershell 即可。

二、PowerShell使用


2.1 文件复制


文件有一个目录拷贝到另一个目录

write-host "copy file data start ..."
# 当前日期
$fileDate=Get-Date -Format 'yyyy-MM-dd'
write-host $fileDate
 
# 从当天的目录下拷贝文件到目标路径
Copy-Item  D:\test\00000\$fileDate\*   D:\test\00000\bak

执行结果

Windows环境powershell 运维之历史文件压缩清理

PowerShell ISE 提供模块方法查询,可以对ps脚本进行编辑运行和测试

Windows环境powershell 运维之历史文件压缩清理

2.2 文件压缩清理

获取文件夹下7天之前的天文件夹目录进行打包压缩,并删除7天之前的文件夹。压缩使用7-zip。


######################################################
#    Desc: File Compress 1.0                         #
#    Author: kangll                                  #
#    soft: Use 7-zip                                 #
#    Date: 2023-12-13                                #
######################################################
 
 
############################ 全局变量 ###################
 
# 设置7-zip命令程序路径
$zip7="D:\test\7-Zip\7z.exe"
 
# 当天日期
$backup_date=get-date -format "yyyy-MM-dd"
 
# 获取一周前的日期
$weekAgo=(get-date).adddays(-7)| get-date -format "yyyy-MM-dd"
 
########################## bak file #######################
# 定位到待压缩的文件夹
$bak_file="D:\test\reid_traj"
 
# 保存的路径
$bak_save_dir="D:\test\reid_traj"
 
 
# 文件夹除当天外的日期文件夹都打包
Get-ChildItem $bak_file | ForEach-Object -Process{
   if ($_.CreationTime -lt $backup_date)
   {
	   # 使用7zip将轨迹文件夹目录下文件夹件压缩为zip格式 
	   $dateStr=$_.name
	   & $zip7 a -tzip $bak_save_dir\$dateStr.zip $bak_file\$dateStr
   }
}
 
 
# 列出一周前的文件夹删除,除当天外的所有日期均打包完成
Get-ChildItem $bak_file | ForEach-Object -Process{
   if ($_.CreationTime -lt $weekAgo)
   {
		# $_.Fullname ,获取文件夹全路径删除,D:\test\reid_traj\2023-05-11
        Remove-Item $_.Fullname  -Recurse
   }
}

执行完成 按照天路径打包

Windows环境powershell 运维之历史文件压缩清理

我们可以看下bat脚本,bat执行sqlServer存储过程。

:: 带"-"的日期
set today=%date:~0,4%-%date:~5,2%-%date:~8,2%
set today2=%date:~0,4%%date:~5,2%%date:~8,2%
 
:: 数据库连接信息
set execOSQL="osql" -S localhost\ipva   -U sa -P 123456 -d test -Q
 
:: 存储过程, windows环境执行存储过程将文件插入到表中
set "hhh=loadFile 'D:\test\reid_trace\%today%','%today2%'"
 
:: 存储过程执行
%loadFile.sql%
%execOSQL% "exec %hhh%"
if %errorlevel% == 0 (echo  -------------------- Procedure %hhh% executer successfully! --------------------) else (echo Procedure %hhh% executer failed!)

bat 和PS个人使用下来 感谢PS脚本更加强大和简单,BAT看起来就有点臃肿并复杂难懂。

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/10783

赞 (0)
凯影的头像凯影
上一篇 2023年12月27日 下午4:32
下一篇 2023年12月29日 下午4:01

相关推荐

  • rsync+sersync实现实时监控备份同步

    rsync+sersync简介 sersync是基于inotify开发的,类似于inotify-tools的工具。所以同样内核需先支持inotify,才能搭建。 sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录。 搭建环境:2台Linux(ce…

    2023年3月29日
    1.7K00
  • 已达成计算机的连接数最大值无法再,已达到计算机的连接数最大值,无法再同此远程计算机连接…

    已达到计算机的连接数最大值,无法再同此远程计算机连接 当打开文件共享时,弹出无法连接的对话框:“….已达到计算机的连接数最大值,无法再同此远程计算机连接”。对于server版的服务器系统,从未遇到过如此问题,而现在访问的服务器是XP专业版系统,它默认的共享连接数是10,超过10个连接数后,后者就无法连接。这里,查看客户端与此服务器的连接个数可以从…

    2023年8月17日
    2.5K00
  • 二进制安装MySQL

    Yum/rpm包安装,简单、快速、无法定制化、新手推荐使用 二进制安装,解压缩后直接简单配置即可使用,速度较快,专业DBA常用 源码编译安装,特点是可以定制化安装需求,缺点过程较为复杂 二进制安装 创建mysql用户 因为这个用户只是用来进行管理,为了系统安全,配置无登录权限 下载mysql二进制软件包(本案例为mysql5.7.33版本) 创建tools目…

    2022年6月24日
    1.9K00
  • WinServer服务器设置多用户同时远程访问

    1、按Win+R键,在弹出的面板中输入gpedit.msc,进入到“本地组策略编辑器”。  2、依次选择计算机配置→管理模板→Windows组件→远程桌面服务→远程桌面会话主机→连接,双击选择“将远程桌面服务用户限制到单独的远程桌面服务会话” 3、在“将远程桌面服务用户限制到单独的远程桌面服务会话”面板中,选择“已禁用”选项,点击确定。 &nbsp…

    2022年11月14日
    1.7K00
  • 用户管理命令

    useradd 命令 创建普通用户 指定uid和组 创建用户,禁止登录且不创建家目录 使用 -M -s 参数 userdel命令 删除用户与相关文件 案例 passwd命令 passwd命令修改用户密码和过期时间等,root可以改普通用户,反之不可以 一条命令设置密码,企业常用 echo “密码” | passwd — stdin 用户名 –s…

    2022年6月11日
    1.9K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信