Powershell DSC安装Java

简介:

豆子需要在一些服务器上安装Java服务并保证更新版本。之前都是手动定期检查,现在考虑能否自动化一下这个流程。豆子考虑了Powershell 的Invoke-commnad,Powershell DSC或者GPO来实现。GPO用过很多次了,这里就不尝试了。


首先我试了试invoke-command的命令。这个思路很简单,远程直接执行exe文件就行了。刚开始没反应,后来发现必须以管理员身份执行才可以。注意invoke-command里面不可以访问网络资源,因此我首先需要拷贝到本地路径才行。


out-null是为了保证该复制命令完成才执行下一条; -verb runas 表示以管理员身份执行;-passthrough 是显示后台进程

1
2
3
new-item  \\sydittest\temp\jre8.exe -force
copy-item  C:\test\jre8.exe \\sydittest\c$\temp\jre8.exe |  out-null
invoke-Command  -ComputerName sydittest -ScriptBlock {  Start-Process  -filepath  "c:\temp\jre8.exe"  -argumentlist  "/s /L c:\temp\install.txt"  -Verb runas -PassThru -Wait }

wKioL1a5gs2jfVitAACWxPIHPUE870.png


成功!


第二种方式我尝试了PowerShell DSC的push模式。


最初我打算直接使用EXE文件,但是没反应,整个推送LCM就卡死了,状态显示正在更新~~


我估计这货不认EXE,于是把MSI从EXE文件里面给解压出来。解压方式很简单,直接点安装,他会自动解压出对应的MSI文件。Java的MSI文件不齐全,如果需要的话,还需要用Orca之类的MSI工具添加属性,这里我只是验证一下思路,就不去补齐属性了。用过GPO配置MSI文件的话,对于Orca应该很熟悉。


wKiom1a5gmiTQYsDAABGUQ_D6OU349.png


自动解压出来的MSI文件。

wKiom1a5gnKgfrNEAAAeCzx3NFY880.png


Okay,现在来配置一下DSC。

首先把客户端配置成Push模式,推送配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[DSCLocalConfigurationManager()]
Configuration LCM_Push 
{
Node sydittest
{
Settings
{
AllowModuleOverwrite =  $True
             ConfigurationMode =  'ApplyAndAutoCorrect'
RefreshMode =  'Push'
                         
}
}
}
LCM_Push -instancename sydittest -OutputPath C:\DSC\Mod5Config
Set-DSCLocalConfigurationManager  -ComputerName sydittest -Path c:\DSC\mod5Config –Verbose
Get-DscLocalConfigurationManager  -CimSession sydittest


确认模式配置成功

wKiom1a5hE7w4G1IAADumzCmNUk795.png


然后看具体的资源配置


首先复制一个MSI文件到客户端,然后安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
configuration Testmsi {
     Node sydittest {
      File MSIFile {
             Ensure =  "Present" 
             Type =  "Directory“ # Default is “File”
             Force = $True
             Recurse = $True
             SourcePath = '\\sydit01\test2'
             DestinationPath = 'C:\Downloads'  # On Sydittest
         }
         Package InstallJava {
             Ensure = " Present
             Name='Java 8 Update 71 (64-bit)'
             path='c:\downloads\jre1.8.0_71.msi'
             productid=" 26A24AE4-039D-4CA4-87B4-2F86418071F0"
             dependson= '[file]msifile'
         }
     }
}
Testmsi -OutputPath c:\temp\nscpconfig
Start-DscConfiguration  -computername sydittest -Path c:\temp\nscpConfig -Wait -Verbose -force


效果如下


wKioL1a5gtGS3Y-iAAIuJ7TVM0A868.png


成功安装!



配合豆子之前写过的程序 (http://beanxyz.blog.51cto.com/5570417/1695998),可以查看指定软件在不同机器上的安装版本编号,我可以完全用脚本来实现Java的版本比较,卸载和更新了。

wKiom1a5hZbCCsMKAAEcyd8VL_I389.png










本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1741436,如需转载请自行联系原作者

目录
相关文章
|
4月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
62 1
|
28天前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
61 1
|
1月前
|
Java Linux Windows
如何查看已安装的 Java 版本
要查看已安装的 Java 版本,打开命令提示符或终端,输入 `java -version`,回车后即可显示当前系统中 Java 的版本信息。
222 1
|
2月前
|
Oracle Java 关系型数据库
在 Debian 12 上安装 Java 21
在 Debian 12 上安装 Java 21
|
3月前
|
Java Linux Windows
如何安装java环境|4-17
如何安装java环境|4-17
|
2月前
|
IDE Java 编译器
java编译器的安装/环境变量的配置
java编译器的安装/环境变量的配置
39 0
|
2月前
|
Oracle IDE Java
IDEA安装教程配置java环境(超详细)
IDEA安装教程配置java环境(超详细)
1175 0
|
4月前
|
SQL Java 关系型数据库
实时数仓 Hologres产品使用合集之如何安装和使用Java SDK
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
3月前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
56 0
|
4月前
【Azure Function】Function App和Powershell 集成问题, 如何安装PowerShell的依赖模块
【Azure Function】Function App和Powershell 集成问题, 如何安装PowerShell的依赖模块