Window 上使用 PowerShell 脚本进行 Maven 部署

一、文件上传

  1. 打包
$project_dir="C:\Users\howeres\Documents\parent"
$deploy_dir="Public/system"
$user_name="root"
$ip_addr="1.1.1.1"
$service_name="service"

cd $project_dir
# Get-Variable project_dir
# maven 打包
## mvn clean install -f .\infrastructure\pom.xml -DskipTests=true
mvn clean package -f .\pom.xml -DskipTests=true
mvn clean package -f .\$service_name\pom.xml -DskipTests=true

# 拷贝
scp .\$service_name\target\$service_name.jar $user_name@$ip_addr:$deploy_dir/socket.jar

echo "success"

二、部署运行 Jar 包

$deploy_dir="Public/system"
$user_name="root"
$ip_addr="1.1.1.1"
$app_name="app"

# 停止
$socket_port=8888
$PROCESS=ssh $user_name@$ip_addr "lsof -i:$socket_port |awk '{if (NR=2) print "'$2'"; else exit}' |awk 'NR==2'"
if (-not [string]::IsNullOrWhiteSpace($PROCESS)) {
	echo "Kill the port [ $socket_port ] process [ $PROCESS ]"
	## ssh $user_name@$ip_addr "echo "$PROCESS
	ssh $user_name@$ip_addr "kill -9 "$PROCESS
}
if ($PROCESS -eq $null) {
	echo $socket_port" is not exist"
}

# 运行
echo $app_name"starting..."
ssh $user_name@$ip_addr "cd "$deploy_dir";nohup java -jar "$app_name".jar &> "$app_name" &"

echo "end"

三、PowerShell 基础

  • 文件操作
# 创建文件
New-Item test -ItemType Directory
cd .\test
New-Item test.txt -ItemType File
Remove-Item test.txt
Remove-Item test
# 添加内容
Add-Content .\test.txt "Hello World"
# 查看内容
Get-Content .\test.txt
# 设置内容
Set-Content .\test.txt "Welcome to New York"
# 添加内容
"Hello World!"| out-file -Append .\test.txt
# 查看当前执行策略 default: RemoteSigned
Get-ExecutionPolicy
  • 策略说明:
类型执行权限
Restricted为脚本不能运行,是默认设置
Unrestricted为允许所有的脚本运行
RemoteSigned为只能运行本地创建的本,不能运行从网上下载的脚本,除了有数字签名证书
Allsigned为只运行有受信任的发布者签名的脚本
# 设置策略 (管理员)
Set-ExecutionPolicy Unrestricted
# 定义变量- $x方式(推荐)/Set-Variable
$a = 1
$str = "hello world"
Set-Variable a 1
Set-Variable str "helloworld"
# (查看所有变量) 
Get-Variable 
# 查看变量a 
Get-Variable a 
# 查看变量str 
Get-Variable str 
# 查看变量是以s开头的,不区分大小写 
Get-Variable s*
# 清空变量a 
Clear-Variable a 
# 清空多个变量,与查看变量一样的操作 
Clear-Variable str*
# 删除变量a 
Remove-Variable a 
# 删除多个变量,与前面清空、查询是一样的操作 
Remove-Variable str*

## 四则运算
$interget1=1
$interget2=2 
# 加、减、乘、除、模 
$interget3=$interget1(+|-|*|/|% =|+=|-=|*=|/=|%= !|not|and|or)$interget2

## 字符串操作
$str="hello" $str1="world"
# 输出,查看结果 (注意:使用Write-Host时后面的内容需要使用 () 先进行计算,否则运算符会当作字符串处理)
# Write-Host 用于将自定义输出写入主机. 当需要展示一个特定信息,比如使用其他颜色来吸引人们的注意力的时候,可使用Write-Host命令. 
# Write-Host和其他 Cmdlets 一样使用管道,但是它不放置任何数据道管道中。反而会直接写到宿主应用程序的界面。正如此,可以使用命令行中的-ForegroundColor和-BackgroundColor参数将前景和背景设置为其他颜色
Write-Host ($str+$str1)
# Write-Output 命令会将对象发送给管道, 是PowerShell默认使用的一个Cmdlets,即默认输出方式。因为它不会直接发送到显示界面,所以不允许你指定其他任何的颜色
# Write-Output命令将String类型的对象Hello World!放入管道中, 管道中只有这个String对象,其会直接到达管道的末端,也就是Out-Default命令, Out-Default 再将对象传递给Out-Host命令, Out-Host命令要求PowerShell的格式化系统格式化该对象, Out-Host将格式化的结果集放在显示界面上
# Where-Object 会过滤再传递给 Out-Default
Write-Output "Hello World!", "hello" |Where-Object {$_.length -gt 10}
# 其他的输出方式:
Write-Warning
Write-Verbose
Write-Debug
Write-Error
# 字符串截取 
$str.Substring(0,5)
  • 比较运算符
比较运算符说明
-eq等于
-ceq区分大小写
-ne不等于
-gt大于
-ge大于等于
-lt小于
-le小于等于
-contains包含
if ($full -eq "-f") {
  # List of additional solutions required for full build
  $solutionPaths += ("../", "../modules/file-management") 
} else {
  Write-host ""
  Write-host ":::::::::::::: !!! You are in development mode !!! ::::::::::::::" -ForegroundColor red -BackgroundColor  yellow
  Write-host "" 
}

# 常量
Set-Variable -Name conpany -Value "电子厂" -Option Constant
# 尝试改变变量值,其实这里会异常的
$conpany="电子厂"

## 自带API的使用
$date=Get-Date
# 打印年月日部分
Write-Host $date.Date
# 变量增加一天
Write-Host ($date.AddDays(1))
  • PowerShell自带的变量
名称说明
$^前一命令行的第一个标记
$$前一命令行的最后一个标记
$_表示表示当前循环的迭代变量。
$?前一命令执行状态,成功(Ture) 或者 失败(False)
$Args为脚本或者函数指定的参数
$Error错误发生时,错误对象存储于变量Error 中
$Foreach引用foreach循环中的枚举器
$Home用户的主目录
$Host引用宿主 POWERSHELL 语言的应用程序
$Input通过管道传递给脚本的对象
$Switchswitch 语句中的枚举器
# Build all solutions
foreach ($solutionPath in $solutionPaths) {    
    $solutionAbsPath = (Join-Path $rootFolder $solutionPath)
    Set-Location $solutionAbsPath
    dotnet build --configuration Release
    # $? 前一命令执行状态,成功(Ture) 或者 失败(False)
    if (-Not $?) {
        Write-Host ("Build failed for the solution: " + $solutionPath)
        Set-Location $rootFolder
        exit $LASTEXITCODE
    }
}
  • 变量
类型说明
[int][long][string][char][bool][byte][double][decimal][single]表值类型
[array]数组对象
[xml]XML对象
[hashtable]哈希表对象,类似于一个字典对象
[int] $inter="1"
# 改变量值,这会异常 
$inter="1a" 
[string] $str="hello world"
  • 数组对象
# 定义数组
$arr=@(
    "张三",
    "李四",
    "王五"
)
# 直接使用下标操作数组
Write-Host ("第一个姓名:"+$arr[0])
# 遍历输出
foreach($name in $arr){
    Write-Host $name
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值