概述
一、文件上传
- 打包
$project_dir="C:UsershoweresDocumentsparent"
$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 .infrastructurepom.xml -DskipTests=true
mvn clean package -f .pom.xml -DskipTests=true
mvn clean package -f .$service_namepom.xml -DskipTests=true
# 拷贝
scp .$service_nametarget$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 | 通过管道传递给脚本的对象 |
$Switch | switch 语句中的枚举器 |
# 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
}
最后
以上就是欢喜盼望为你收集整理的Window 上使用 PowerShell 脚本进行 Maven 部署的全部内容,希望文章能够帮你解决Window 上使用 PowerShell 脚本进行 Maven 部署所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复