wmi java_Java用wmi4j远程管理Windows服务

wmi4j是纯Java实现的Windows WMI客户端,它基于j-interop针对WMI重新封装,提供了更便捷的方法,能满足基本的windows管理,包括服务管理,性能查询,执行脚本等等。

wmi4j下载

用Maven的朋友们可以直接引入,groupId=cn.chenlichao, artifactId=wmi4j, version=0.9。 源码地址: Github: https://github.com/chenlichao-cn/wmi4j使用其他构件框架的朋友,可以去maven中央库或者http://maven.oschina.net查询wmi4j,当然要记得下载它的依赖包:org.glassfish.main.external:j-interop-repackaged:4.0

org.slf4j:slf4j-api:1.7.7

org.apache.commons:commons-lang3:3.1

使用wmi4j管理Windows服务

用wmi4j管理很方便,少量代码就可以完成功能,下面我们用一个实际的例子来演示如何获取服务列表,查询服务,获取指定服务状态,启动服务和停止服务几个最常用的功能。

WMI相关的文档,请参考微软官方文档: WMI Referencepublic static void main(String[] args) {

//设定连接参数

String server = "192.168.1.201";

String username = "administrator";

String password = "password";

String namespace = "root\\cimv2";

//构建连接器

SWbemLocator locator = new SWbemLocator(server,username,password,namespace);

try {

//连接远程服务器

SWbemServices wbemServices = locator.connectServer();

//遍历服务列表

SWbemObjectSet services = wbemServices.instancesOf("Win32_Service");

System.out.println("服务数量: " + services.getCount());

Iterator iterator = services.iterator();

while(iterator.hasNext()) {

SWbemObject service = iterator.next();

System.out.println(service.getObjectText());

System.out.println("-----------------------------------------------");

break; //服务很多,就只打一个吧

}

//查询Windows开头的服务

SWbemObjectSet winServices = wbemServices.execQuery(

"select * from Win32_Service where DisplayName like 'Windows%'");

System.out.println("Windows开头的服务数: " + winServices.getCount());

//通过服务名,直接获取服务。

//注意: 服务名不是services.msc列表里显示的名称,显示的名称是DisplayName属性,

//而get方法必须使用主键属性Name. 例如: Application Management服务,

//在services.msc是这样显示的, 但它服务名是AppMgmt, 可以通过属性查看。

SWbemObject dhcpClient = wbemServices.get("Win32_Service.Name='AppMgmt'");

System.out.println("服务名: " + dhcpClient.getPropertyByName("Name")

.getStringValue());

System.out.println("显示名: " + dhcpClient.getPropertyByName("DisplayName")

.getStringValue());

//获取服务状态

System.out.println("状态: " + dhcpClient.getPropertyByName("State").getStringValue());

//启动服务

dhcpClient.execMethod("StartService");

System.out.println("启动后的状态: " + wbemServices.get("Win32_Service.Name='AppMgmt'")

.getPropertyByName("State").getStringValue());

//停止服务

dhcpClient.execMethod("StopService");

System.out.println("再次停止后的状态: "

+ wbemServices.get("Win32_Service.Name='AppMgmt'")

.getPropertyByName("State").getStringValue());

} catch (WMIException e) {

e.printStackTrace();

} catch (UnknownHostException e) {

e.printStackTrace();

}

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值