使用Ruby来实现批量更新AD中字段
准备工作
安装需要用到的gem
gem install net-ldap
gem install roo
准备好要更新的数据,比如exel表: /root/account.xlsx,内容如下
| 姓名 | 性别 |
| 张三 | 男 |
| 李四 | 女 |
实现代码
require 'roo'
require 'net/ldap'
xlsx = Roo::Excelx.new("../account.xlsx")
ary = Array.new
#这里如果excel中的标签不是Sheet1,需要修改
xlsx.sheet_for("Sheet1").each_row do |row|
ary << row.map(&:cell_value).reverse
end users = ary.to_h if ARGV.count == 2
ldap = Net::LDAP.new :host => "172.16.1.6",
:port => 389,
:auth => {
:method => :simple,
:username => ARGV.first,
:password => ARGV.last
} count, rules = 0, []
treebase = "OU=User,OU=ABC,DC=example,DC=com"
ldap.search(:base => treebase, :scope => Net::LDAP::SearchScope_SingleLevel) do |entry|
displayname = entry.displayname.shift unless displayname.nil?
puts "########################################"
if users.has_key?(displayname)
ldap.modify :dn => entry.dn, :operations => [[ :replace, :pager, users.fetch(displayname) ]]
rules.delete(displayname) ; count += 1
puts "名字:#{displayname},性别:#{users.fetch(displayname)}: 已更新"
else
puts "跳过【#{displayname}】"
end
end
end
puts "更新总人数:#{count}"
#输出AD中未找到的用户
rules.each do |key, value|
puts "#{key}, #{value}"
end
end
至此,Excel表中的数据就更新到AD对应的属性了。
使用Ruby来实现批量更新AD中字段的更多相关文章
- SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int
--SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int --关键说明:--1.从系统表syscolumns中的查询所有xtype='48'的记录得到类型为[tinyint]的字段- ...
- Myabtis中批量更新update多字段
在mybatis中批量更新多个字段 推荐使用如下操作: 方式1:在Dao层接口中: void updateBatch(@Param("list")List<Student&g ...
- PHP如何批量更新MYSQL中的数据
最近项目需要用到批量更新数据库里的数据,在网上找了一下这方面的例子,觉得这个还不错,分享给大家. 在这个业务里里面涉及到了更新两张数据表,那么大家是不是会想到非常简单,马上上代码 $sql ,type ...
- PHP批量更新MYSQL中的数据
原文链接:https://blog.csdn.net/wuming19900801/article/details/62893429 $sql = "update newhouse_clic ...
- 使用DataAdpater自动批量更新DataSet中的数据到数据库
使用DataAdpater的批量更新,好处是不用写具体的sql脚本,尤其是做web服务这个优势非常吸引人. [WebMethod(Description = "Update服务提供的方法,将 ...
- mysql批量更新update中的锁表机制
mysql的行锁是通过索引加载的,即行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁则无法实现,取而代之的是表锁. CREATE TABLE SIMPLE_USER( I ...
- sql 批量更新表中多字段为不同的值
,),,),rand()) select newid() ,) update tablename , FB,)) , ), FC,)) , )
- SQL 根据关联表更新主表中字段数据
今天遇到一个客户的数据更新问题,两个相关联的表,一个主表用于保存单据主要信息,一个副表用于保存单据的明细信息:现在要把主表的其中一个字段的数据更新到副表的一个字段中保存.精通的SQL语法的,当然是很简 ...
- 用Update Select批量更新某一字段的值[可以跨库]
SQL:UPDATE test1 SET name = (SELECT y.name FROM DB2.dbo.test2 y WHERE test1.id = y.id)
随机推荐
- [LeetCode] Flip Game 翻转游戏之二
You are playing the following Flip Game with your friend: Given a string that contains only these tw ...
- JavaScript函数表达式、闭包、模仿块级作用域、私有变量
函数表达式是一种非常有用的技术,使用函数表达式可以无需对函数命名,从而实现动态编程.匿名函数,是一种强大的方式,一下总结了函数表达式的特点: 1.函数表达式不同于函数声明,函数声明要求有名字,但函数表 ...
- BZOJ 后缀自动机四·重复旋律7
后缀自动机四·重复旋律7 时间限制:15000ms 单点时限:3000ms 内存限制:512MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一段音乐旋律可以被表示为一段数构成的数列. 神奇的 ...
- python通过函数改变变量取值
严格讲应该是"通过函数调用,改变引用对象".python中,要区分"变量名"和"对象" 如果是类的对象,是引用类型的,那么可以通过函数调用, ...
- Beta版本冲刺总汇
DAY ONE: http://www.cnblogs.com/aruba/p/6149032.html posted @ 2016-12-09 12:37 DAY TWO: http://www.c ...
- 为什么FFT时域补0后,经FFT变换就是频域进行内插?
应该这样来理解这个问题: 补0后的DFT(FFT是DFT的快速算法),实际上公式并没变,变化的只是频域项(如:补0前FFT计算得到的是m*2*pi/M处的频域值, 而补0后得到的是n*2*pi/N处的 ...
- html页面制作css基本设置
html{ height: 100%;} *{ margin: 0; padding: 0;}/* tell the browser to render HTML 5 elements as bloc ...
- Chrome 开发工具之Console
前段时间看git的相关,记的笔记也大致写到了博客上,还有些因为运用不熟,或者还有一些疑惑点,暂时也不做过多纠缠,之后在实践中多运用得出结论再整理分享吧. 工欲善其事,必先利其器.要想做好前端的工作,也 ...
- POJ1390Blocks(DP+好题+抽空再来理解理解)
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4744 Accepted: 1930 Descriptio ...
- Premiere使用整理
整理部分自己在使用Premiere CC中遇到的问题和注意点. 1. 新建序列 若是录屏文件,可选择已加入到项目中的视频文件,点击 文件-新建-来自剪辑的序列. 2. 新建字幕 用于在视频中添加文字. ...