使用aida64实现批量统计、监测固定资产信息。
共享权限设置
aida64目录
将aida64的软件目录共享出来,并给这个文件夹设置可读取权限。
数据库目录
- 新建一个文件夹【Hareware】, 给该文件夹设置所有用户可读写权限
- 将
aida64\Sql_Schema\DB - Access.mdb
复制到该目录下
软件设置
- 打开aida64.exe程序
- 依次点击菜单栏的【文件】-【设置】
- 在数据库设置的地方将地址改为刚才共享的地址,并测试通过
- 在系统摘要设置的地方选取需要检测的条目
- 在警告设置的地方,配置警告方式。我用的是保存为HTML文件,这样当有硬件变动的时候就会将信息保存到制定的HTML文件方便查看。
-
配置警告触发器中需要的条目
组策略设置
设置一个登录脚本的组策略,并链接到需要检测的组
脚本内容:
CreateObject("WScript.Shell").Run "cmd /c \\172.16.12.6\aida64\aida64.bat",0
目的是为了静默运行一个批处理脚本。
脚本设置
在aida64目录下面新建一个aida64.bat的批处理文件,内容为:
\\172.16.12.6\aida64\aida64.exe /r /database /sum /silent /safe
可在【帮助】-【命令行选项(M)】中查看所需的命令以及功能。
查看配置
依次点击菜单栏的【文件】-【数据库管理器】即可查看到各电脑的详细配置信息了。
存在的问题
- 有的信息需要管理员权限才能检测出来,所以可能还需要给刚才的bat脚本文件用管理员的权限去运行。
- 命令行脚本中的
/safe
该参数可能导致无法检测出内存的SPD情况。
问题的解决方案
- 用Lsrunase调用管理员权限运行命令
lsrunase.exe /user:muchuan /password:p@ssw0rd /domain:sh /command:"cmd /c ""\\172.16.12.6\aida64\aida64.exe /r /database /sum /silent" "" /runpath:c:\
这里的命令要通过加载cmd再调用后门的命令才能正常运行,不然在win7系统中会提示无权限。缺点是会有一个运行窗口。语法是通过cmd /?
提示去写的。
该方法可以通过VBA脚本调用bat脚本实现隐藏窗口的功能。
- 用Lsrunase.exe调用另外一个脚本文件,并加入隐藏窗口的语句。
lsrunase.exe /user:muchuan /password:p@ssw0rd /domain:sh /command:"E:\aida64.bat" /runpath:c:\
我的使用方法是:
- 组策略启动脚本中建立一个脚本,内容如下:
@echo off
REM 磁盘映射
If not exist z: (net use z: \\sh-打印机\扫描)
REM 同步时间
\\172.16.12.6\software\lsrunase.exe /user:muchuan /password:p@ssw0rd /domain:sh /command:"net time \\172.16.12.160 /set /yes" /runpath:c:\
REM 硬件统计
copy /y \\172.16.12.6\software\Aida64.txt "%TEMP%\Aida64.bat"
\\172.16.12.6\software\lsrunase.exe /user:muchuan /password:p@ssw0rd /domain:sh /command:"%TEMP%\Aida64.bat" /runpath:c:\
这里有一些我的其他命令一并加入到了启动脚本中,映射虚拟硬盘,和通过命令同步时间。
- 启动脚本中提到的Aida64.txt的内容如下:
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~fx0"" h",0)(window.close)&&exit
:begin
\\172.16.12.6\aida64\aida64.exe /r /database /sum /silent
del /q %0
这样做的目的是将需要权限运行的命令脚本,放到本地的E盘,然后在执行这个脚本。因为win7系统如果直接运行网络中的脚本,会弹出一个确认窗口,而运行本机的脚本不会有提示。
另外在脚本的前面加入了隐藏自身窗口的语句,以免脚本执行过程中被误关闭。
报表处理
这个软件没有提供统计报表之类的功能,所以我们只能通过读取它数据库中的内容,然后自己制作。我是通过Excel读取数据库,然后通过函数公式完成了一个数据报表,效果如下图所示:
步骤:
- 通过高级筛选,得出不重复的RID;
- 通过多条件查找得出各IID的内容:
计算机名称:
=LOOKUP(1,0/(('1'!$I$1:$I$3000=$A3)*('1'!$H$1:$H$3000=B$2)),'1'!$F$1:$F$3000)
CPU公式一样,CPU整理的公式为(公司只有Inter):
=REPLACE(SUBSTITUTE(C3,"DualCore Intel",""),FIND(",",SUBSTITUTE(C3,"DualCore Intel",),1),FIND(")",SUBSTITUTE(C3,"DualCore Intel",),1)-FIND(",",SUBSTITUTE(C3,"DualCore Intel",),1)+1,"")
内存1的公式(数组公式):
{=VLOOKUP($A3&F$2,IF({1,0},'1'!$I$1:$I$3000&'1'!$H$1:$H$3000,'1'!$F$1:$F$3000),2,0)}
内存2的公式:
=IF(H3="","",LOOKUP(1,0/(('1'!$I$1:$I$3000=$A3)*('1'!$H$1:$H$3000=I$2)),'1'!$F$1:$F$3000))
区别是,第一个公式获取到的是相同值中的第一个,第二个则是获取相同值中的最后一个
内存整理的公式:
=MID(E3,8,FIND(" ",E3,11)-7)&LEFT(F3,14)
硬盘获取的公式与内存获取的公式差不多。硬盘整理的公式为(数组公式):
{=LEFT(K3,2)&" "&MID(K3,FIND("(",K3,1)+1,6)&" "&MID(K3,COUNT(FIND(" ",K3,ROW($A$1:$A$199)))+1,FIND(")",K3,1)-COUNT(FIND(" ",K3,ROW($A$1:$A$199)))-1)}
其他的项目跟CPU都是一样的了。整理的目的是为了报表看上去更直观清爽。至此整个收集、监测、报表功能全部完成。
lsrunase
百度网盘
提取码:cqj9