powershell之启动远程jar服务



个人笔记,如有描述不当,欢迎留言指出~

起因

主管抽风说每次都要登录远程服务器再启动jar太麻烦了,要是有个一键启动远程jar的批处理就是。于是这个任务就交给我了…

powershell配置

用管理员权限启动 PowerShell,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#客户端或服务器公共配置:
Get-Service WinRM #查看WinRM服务的状态
Enable-PSRemoting –Force #配置系统接受远程命令
Set-Service WinRM -StartMode Automatic #开启WinRM服务自启动
winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="3000"}' #设置powershell最大内存 方法一推荐
Set-Item WSMan:\localhost\Plugin\Microsoft.PowerShell\Quotas\MaxMemoryPerShellMB 3000 #设置最大内存 方法二
Restart-Service winrm //重启winrm服务使配置生效


#服务器配置:
Set-Item WSMan:localhost\client\trustedhosts -value "192.168.1.44,192.168.1.45" #设置设置主机可信任的客户端地址
winrm set winrm/config/client @{TrustedHosts="192.168.1.45,192.168.1.44"} #设置设置主机可信任的客户端地址,当上个命令无效时,可选用该命令(该命令请在cmd中使用)
Get-Item WSMan:\localhost\Client\TrustedHosts #查看可信任主机
get-executionpolicy #查看脚本执行策略
set-executionpolicy remotesigned #设置执行策略为远程可执行
Restart-Service winrm #重启服务生效

Test-WsMan xxx.xxx.xxx.xxx #客户端测试远程连接

jar包上传处理命令

服务器上必须安装了ftp,否则没法上传文件。我公司服务器系统是windows server 2008,用它自带的IIS创建ftp,并设置虚拟目录。

新建上传文件脚本up.bat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
curl -X POST 192.168.1.44:8886/shutdown #关闭44服务器上8886端口服务
curl -X POST 192.168.1.44:8887/shutdown#关闭44服务器上8887端口服务
curl -X POST 192.168.1.44:8888/shutdown#关闭44服务器上8888端口服务

Echo open 192.168.1.44 >ftp.up #打开连接44服务器ftp连接
Echo Administrator>>ftp.up #服务器上登录用户名
Echo 59@SDS25>>ftp.up #登录密码
Echo cd .\project1>>ftp.up #因为进入的是ftp的根目录,所以使用.\project1,进入根目录下的project1
Echo binary>>ftp.up #二进制数据传输格式
Echo put "E:\Workspace\idea\jcnyJava\target\jcny-java-0.0.1-SNAPSHOT.jar">>ftp.up #传送本地文件到ftp中
Echo cd ..\project2>>ftp.up #使用..\project2,进入根目录下的project2目录
Echo put "E:\Workspace\idea\jcnyJava\target\jcny-java-0.0.1-SNAPSHOT.jar.original">>ftp.up #传送本地文件到ftp中
Echo cd ..\project3>>ftp.up #进入根目录下的project3目录
Echo put "E:\Workspace\idea\jcnyJava\target\jcny-java-0.0.1-SNAPSHOT.jar.original">>ftp.up #传送本地文件到ftp中
Echo bye>>ftp.up #客户端关闭ftp连接
FTP -s:ftp.up #服务器关闭ftp连接
del ftp.up /q #删除ftp连接
Pause

powershell启动远程服务命令

新建一个启动脚本deploy.ps1

1
2
3
4
5
6
7
8
$na = "yourname"  #服务器用户名

$p2 = ConvertTo-SecureString "yourpassword" -AsPlainText -Force #加密登录密码
$A = New-Object System.Management.Automation.PSCredential($na,$p2) #创建连接
Invoke-Command -ComputerName 192.168.1.44 -Credential $A -ScriptBlock { #执行远程操作
Set-Location E:\webroot\projects #进入远程服务器目录
invoke-expression -command E:\webroot\tongtu-projects\startall.bat #远程服务启动的脚本路径
}

以上命令都是针对Windows系统的,Linux系统应该是写bash脚本吧。
如果下次主管说要一键启动远程Linux上的服务的话,到时候我再写篇linux的吧。

请博主喝咖啡