PowerShell能开发解决的问题
1、PowerShell 可以直接替掉Xshell等连接linux的的客户端,连接服务器。
PowerShell 连接服务器 :
1.用 $PROFILE 函数查看PowerShell 本机自定义函数文件的位置
2.找到文件,在文件的末尾添加函数如下
function u8(){
Set-Clipboard "Aa11111"
echo "密码已经在粘贴板"
ssh test@11.1.19.16
}
3.PowerShell 在当前窗口执行 .$PROFILE 加载本地函数文件
4.在PowerShell 在当前窗口 执行 u8 点击回车,粘贴 密码 ,回车进入服务器。
2、简化git命令
因为 PowerShell 可以自定义函数,我们可以帮 添加文件,提交到本地git及推到远程分支。函数如下
# git 提交代码
function git-cp ($content){
git status #当前变动
git add . #添加所有变动文件
echo "$content" #打印提交信息
git commit -m "$content" #提交git 信息
git push #推送代码
}
3、缩短服务器 操作的步骤
平时想去服务器上看个日志,我们需要登上服务器,进到目录下 ,执行查看日志的命令。用PowerShell 编写函数,可以直接查看日志。代码如下
function log_group(){
Set-Clipboard "Aa1111"
echo "密码已经在粘贴板"
ssh ewhine@11.1.19.16 'tail -20f /home/ewhine/var/log/usergroup/*.log'
}
当连接服务器时,需要通过堡垒机(跳板机),才能连上服务器的,操作的时候也能缩短整个链路的。操作代码如下:
function log_data(){
Set-Clipboard "Aa1111"
echo "密码已经在粘贴板"
ssh root@11.1.19.16 'sh /root/shell/log_data.sh'
}
4.简化工作流程
作为一个开发我们需要经常的打包 测试环境发版,可以编写一个PowerShell 函数帮我们做,节省时间保证操作的准确性。函数代码如下:
function ds_data(){
cd D:\ncxyWorkspace\datamonitor # 打开项目所在的路径
& git checkout uat # 切换本地项目的分支
& git pull -p # 拉去最新的代码
& git merge myf_pro #讲本地最新的代码合并到 uat分支
& git push #推送代码
& mvn clean # 用maven 清理下本地的编译过的代码
& mvn package # 用maven 打包
cd D:\ncxyWorkspace\datamonitor\target #打开编译后jar包的位置
Set-Clipboard "Aa1111"
echo "密码已经在粘贴板" # 向PowerShell 粘贴板放数据
& ssh root@11.1.19.6 'rm /root/deploy/datamonitor/datamonitor*.jar' # 删除跳板机上的包
& scp datamonitor-*.jar root@11.1.19.16:/root/deploy/datamonitor # 将跳板机上的包放到服务器。
cd D:\ncxyWorkspace\datamonitor # 打开项目所在的路径
& git checkout myf_pro # 切回原有分支
& ssh root@11.1.19.16 'sh /root/shell/ds_data.sh' # 切回原有分支 执行跳板机脚本启停服务
}
另一个案例:打生产包,因为我们的生产需要先把一些包打成tar包,再把tar包打成gz包。函数如下
function pro_data(){
# 需要复制的文件路径
$sourceFile1 = 'D:\ncxyWorkspace\datamonitor\install.sh'
$sourceFile2 = 'D:\ncxyWorkspace\datamonitor\build.rb'
# 定义目标文件夹路径
$destinationFolder = 'D:\ncxyWorkspace\datamonitor\target\ewhine_pkg'
cd D:\ncxyWorkspace\datamonitor
& git checkout 2.0.0
& git pull -p
& git merge myf_pro
& git push
& mvn clean
& mvn package
& git checkout myf_pro
# 复制文件到目标文件夹
Copy-Item -Path $sourceFile1 -Destination $destinationFolder
Copy-Item -Path $sourceFile2 -Destination $destinationFolder
cd D:\ncxyWorkspace\datamonitor\target
# 设置新文件夹的路径
$newFolderPath = "D:\ncxyWorkspace\datamonitor\target\datamonitor"
# 创建新文件夹
New-Item -ItemType Directory -Path $newFolderPath
# 复制目录内容到新文件夹
Copy-Item -Path $destinationFolder -Destination $newFolderPath -Recurse
# 用本机 bandizip 软件打包
& bandizip c -l:2 -fmt:tar datamonitor.tar datamonitor
Start-Sleep -Seconds 2
& bandizip c -l:2 -fmt:gz datamonitor.tar.gz datamonitor.tar
Start-Sleep -Seconds 1
# 设置要打开的目录路径
$directoryPath = "D:\ncxyWorkspace\datamonitor\"
# 启动文件管理器并打开指定目录
Start-Process explorer.exe -ArgumentList "/select, $directoryPath"
cd D:\ncxyWorkspace\mx_hnnx_datamonitor
}