平台化管理AD域用户及自动化重置密码、日志统计


部门现在缺人,从内网找了个高手来,这哥们是负责邮件集群的,挺牛逼的,负责全网mail系统,现在只有他自己负责这些了,所以他经常被琐碎的事情给缠着,没办法做外网的运维。他人过来,也就意味着我们部门也要兼管理exchange集群,本来和我八竿子打不着 的,上次开会居然让我帮忙搞这东西。。。哎。。。 领导的话,要听,走起!

要做的东西简单,以前管理账号,重置密码虽然有powershell的脚本,但是还是需要进入3389进入系统,填写密码,打开powershell脚本,运行相应的指令。相关的操作基本都是这样,很棘手的。

要改成尽量效率些,在保证安全的情况下,可以利用一切的接口。


项目名,adwebops


感叹公司大了,傻x也多了,每个星期都有超级多的重置密码、还有不少的入职和离职。 密码记不清的原因是,公司定期要求改密码,而且个数每次要增加一位。。。


用到的技术


powershell 大家懂的,编写windows脚本的神器,powershell可以很好的支持域信息的增删改查

ds命令 DC自带的命令集合

tornado 高性能web框架

jquery 前端

mysql 日志,平台账号密码

memcached token,kv


因为基本是我自己搞的,所以我可以直接把设计思路给大家共享下,但是具体的代码就不好分享啦,大家都懂的,毕竟是给公司写的。 这代码虽不能分享,但大家有疑问尽量的提出来吧,就当互相交流,我会尽量的回答的。。。。


powershell的用法,不难的,网上都有实例的。

举个例子,比如:收集用户信息

PowerShell收集AD用户信息
  #定义用户所属OU、域名
  $domain = "ou=Service,dc=testj,dc=com"
  #定义输出结果存放位置
  $aduser_output = "c:\aduser_output.csv"
  #定义函数:导出用户描述
  Function GetADUserDesc ($user)
  {
  $userpro = Get-ADUser $user -Properties *
  $aduserdesc = $userpro.Description
  return $aduserdesc
  }
  $dn="CN=tt,OU=server,OU=admin,DC=testj,DC=com"
  #定义函数,导出用户所在位置
  Function GetADUserCon ($user)
  {
  $userpro = Get-ADUser $user -Properties *
  $aduserdn= $userpro.DistinguishedName
  If ($aduserdn.contains("OU="))
  {
  $aduserdn.indexof("OU")
  $aduserdn.indexof("DC")
  $adusercon = $aduserdn.replace("$domain","")
  }
  Else {$adusercon = $aduserdn}
  return $adusercon
  }
  #导入AD管理模块
  Import-Module ActiveDirectory
  #导出AD用户信息
  $users = Get-ADUser -Filter * -SearchBase "$domain"
  #构造HASH表,将所需用户属性输出到CSV文件
  $users|Select-Object @{name="account";expression={$_.SamAccountName}},`
  @{name="description";expression={GetADUserDesc $_.SamAccountName}},`
  @{name="container";expression={"Service "}},`
  @{name="domain";expression={"testj.com"}}`
  |export-csv -encoding UTF8 -path $aduser_output

powershell 调用接口创建用户

$company = "Rich Computer"
$objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://OU=公司账户,OU=$company,DC=PSDomain,DC=com,DC=cn")
$objUser = $objDomain.Create("user", "CN=Jack Dong")
$objUser.Put("displayName","Jack Dong")
$objUser.Put("userPrincipalName",[email protected])
$objUser.Put("sAMAccountName","xiaorui")
$objUser.Put("company",$company)
     $objUser.Put("department","Sales")
     $objUser.Put("TelephoneNumber","110")
     $objUser.Put("title","VP")
     $objUser.SetInfo()
     $objUser.SetPassword("Pass01!")
     $objUser.psbase.InvokeSet("AccountDisabled", $false)
     $objUser.SetInfo()


有很多的域相关的管理功能的。~ 对我来说,不用太懂powershell的编程,老外有不少实例的,大家google下,改改就能用了

下图是我的设计思路,可以参考下。


063226187.jpg

首先是访问自助页面:

233759688.jpg排队的功能

233856912.jpg

给大家看下写的几个页面样式。。。

判断是否有手机号码 !!!


235527915.jpg输入验证码 !!!


235713971.jpg

如要没有手机号码,那么我们就走第二套方案,解决用户密码重置 ~

234015206.jpg

用户的添加删除 ~

003442842.jpg

登录~

005004219.jpg


修改成功后~

140613802.png

token ~

202248555.png

182745420.png

034532169.png

034541285.png

182707303.png

统计次数

234113762.jpg



223737109.jpg


我们实现了好多的扩展的功能,比如 日志的审计,图表的展现,自动配置域环境及信息等等。。。 关于demo暂时就给大家看这些吧。。。 关于详细的dd,有需要的朋友call我。。。


通过powershell,大家可以做好多的东西。。。 好多人都吐槽,windows自动化不好搞,以前我也是这么认为的,但是win提供了强大的powershell,我们的可玩性,就大大的提高了。。。



本文出自 “峰云,就她了。” 博客,谢绝转载!

你可能感兴趣的:(windows,windows,windows,python,自动化,自动化,powershell,powershell,域,运维自动化)