{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
现在我们开始。。。。。。话说从研究这个功能到实现它前后大致花了一周的时间,毕竟用java实现这个不是一件简单的事情,谁让exchange和.net更亲呢。一开始想了两个方案:
至于ssh2和powershell是啥,这里就不重复叙述了,感兴趣的同学可以百度了解下。
powershell学习资料地址:http://www.pstips.net/powershell-online-tutorials/
下面直接上步骤吧
这个很简单,下载freesshd软件,按照教程安装就行,安装完成之后使用putty工具连接测试。
freesshd下载地址:
http://www.freesshd.com/?ctt=download
freesshd安装参考百度经验的文章:
https://jingyan.baidu.com/article/f7ff0bfc1ebd322e27bb1344.html
putty安装地址:
https://pan.baidu.com/s/1dg1l1f7密码:gwou
putty测试连接成功后,可以编写java代码连接了,该过程需要ganymed-ssh2-build210.jar的支持,所以需要添加maven坐标
连接代码案例
importch.ethz.ssh2.connection;importch.ethz.ssh2.session;
/***ssh登录远程服务器*@return*/publicbooleanlogin(){booleanresult=false;try{conn=newconnection(ip,port);conn.connect();//连接if(!conn.authenticatewithpassword(username,userpwd)){logger.error("通过ssh2登录outlook邮件服务器错误,验证失败");conn.close();returnresult;}result=true;}catch(ioexceptione){logger.error("通过ssh2登录outlook邮件服务器异常",e);}returnresult;}/***退出远程服务器*@return*/publicvoidexitconnect(){if(conn!=null){conn.close();}}2:powershell脚本编写与测试
这边提供一个get-mailbox方法的脚本getemail.ps1,用于获取员工的邮箱信息
set-executionpolicyremotesigned$user=$args[0]$password=convertto-securestring-string$args[1]-asplaintext-force$credential=new-object-typename"system.management.automation.pscredential"-argumentlist$user,$password$session=new-pssession-authenticationkerberos-credential$credential-configurationnamemicrosoft.exchange-connectionurihttp://xxxxxxxx(你的邮件服务器)/powershellimport-pssession$sessionget-mailbox$args[2]$args[i]代表给ps脚本传递的参数,$args[0]是outlook管理员的用户名,$args[1]是管理员登录的密码,$args[2]是需要查询的ad账号。
测试案例:
测试结果:
接下来只要将ps脚本中的get-mailbox$args[2]方法替换成enable-mailbox$args[2]-database$args[3]就行,$args[2]代表员工的ad账号,$args[3]代表员工的邮箱创建在哪个数据库中。