快速收集终端信息
2018-11-07
应用需求
学生机房新上了一批计算机,根据学校的要求,要登记计算机的信息,包括计算机名、主机序列号、MAC地址。本人之前制作过一个用于收集计算机信息的VBS脚本,用法是将脚本拷贝到U盘,然后将U盘接到要登记信息的计算机上,运行VBS脚本后生成一个文本文件,即完成信息的收集。这种办法虽然可行,但在机房每台计算机上操作一遍,效率太低。
考虑了一番后,决定利用电子教室软件来统一收集信息。思路为,在教师机上通过电子教室软件,将VBS脚本发送到学生机,然后远程执行该脚本,将收集的信息写入到教师机共享的文件夹内。实施的过程并不顺利,现将遇到的问题及解决过程记录下来,与大家分享。
操作步骤
图1 脚本d430.vbs
首先说明一下,机房计算机型号为D430,教师机和学生机安装的操作系统均为Windows 7旗舰版,IP地址为192.168.12.100(教师机JF2-00),192.168.12.101~ 159(学生机JF2-01~59)。
第一步:创建共享
在教师机上创建文件夹jf2,并设置共享,权限为允许everyone“完全控制”。
第二步:修改脚本
由于之前收集信息是写入VBS脚本所在文件夹,因此需要修改文件路径为共享文件夹。
修改后的脚本d430.vbs内容如图1所示。
双击运行d430.vbs,弹出“本机信息采集完成,请退出!”,jf2文件夹下成功创建了jf2.txt,内容如下:
--二机房计算机信息--
JF2-00,DTVMPCNB067200 011E9600,F4:4D:30:9F:71:06,OK!
脚本运行成功!
第三步:添加远程命令
在教师机上打开电子教室软件,添加远程命令(如图2)。添加完成后,单击“本地执行”(如图3),发现没有任何提示,将jf2.txt删除后再单击“本地执行”,仍未提示,也未创建jf2.txt。
原因分析:电子教室软件无法执行VBS脚本。
解决办法:创建一批处理文件d430.bat,内容为:d:d430.vbs,即通过执行该批处理程序来调用d430.vbs。在电子教室软件中,添加远程命令(如图4),然后单击“本地执行”按钮,成功创建了jf2.txt并收集到信息。
第四步:传文件到学生机(注:电子教室软件中非常好用的功能)
通过电子教室软件,将d430.vbs和d430.bat发送到学生机D盘根目录。
第五步:远程执行
选择所有学生机,在图3窗口中选中d430.bat,单击“远程执行”,以运行学生机上的d430.bat。
问题解决
在远程执行步骤遇到了一系列问题,分别说明一下。
学生机运行后,弹出错误提示“登录失败:用户账户限制……”。
原因分析:在默认情况下,要想访问Windows 7系统的共享文件夹,必须输入要访问的计算机上的用户名和密码,如果不设密码,访问时就会提示错误。
图2 添加命令
图3 本地执行命令d430.vbs
图4 添加命令d430.bat
解决办法:修改教师机本地安全策略,允许空密码远程登录。具体步骤为:运行gpedit.msc,打开组策略编辑器,依次点开“计算机配置→Windows设置→安全设置→本地策略→安全选项”,在右侧窗格中找到并打开“账户:使用空密码的本地账户只允许进行控制台登录”,设置为“已禁用”。
修改后再次“远程执行”,有5台学生机提示采集完成,其他均弹出错误提示“没有权限”和“已达到计算机的连接数最大值,无法再同此远程计算机连接”。打开jf2.txt,发现数据有些交叉错乱。
在几台提示错误的学生机上,单独执行d430.bat,均可完成信息采集。据此判断,不论错误提示是“没有权限”,还是“已达到计算机的连接数最大值”,出错原因应该是在有过多的学生机同时访问上。
百度搜索了一下“已达到计算机的连接数最大值”,方法有三类:添加共享名、修改本地安全策略或远程终端限制连接数、在服务器版操作系统上共享。
经过一一测试,有的方法虽能解决连接数问题,但仍无法解决“没有权限”和数据交叉错乱问题。
原因分析:应是同时写入同一文本文件的学生机过多,导致了上面的错误。
解决办法:两个方案
方案一,让学生机按顺序逐一执行VBS脚本,即让1号学生机
1秒后运行d430.vbs,2号 机 2秒 后 运行,依此类推。
具体是这样实现的:修改批处理程序d430.bat,先提取学生机IP地址最后一组数字,再减100,将得数赋值给变量ip4,由于ping 127.0.0.1一次用时1秒,加参数 -n “ip4”后表示“ip4”秒后再执行d430.vbs。
修改后的d430.bat内容如图5所示。
将修改后d430.bat发送到学生机,“远程执行”。
学生机跟预想的一样,按顺序逐一执行成功。
图5 修改后的d430.bat内容
方案二,让学生机执行VBS脚本时分别创建不同的文本文件(以计算机名命名),再通过DOS命令(type JF2-*.txt >>jf2.txt)将所有文本文件内容写入jf2.txt。
VBS脚本也需要修改,将获取计算机名部分的代码调整到脚本最前端,然后将创建的文件OutPutFile赋值语句修改为:
实际测试时,方案二的实现仍要先解决“已达到计算机的连接数最大值”问题。
注:在教师机上添加共享名和修改本地安全策略或远程终端限制连接数的方法,均未解决该问题。本人最终是在一台Windows Server 2012虚拟机上搭建共享文件夹测试的(操作比较简单,不再赘述)。
上述两个方案均通过测试,但方案一实现起来要简单一些,推荐使用。