- MdbAddr = "\\win-pc\vbs\1.mdb"
- Miaoshu = 1 '定义秒数等于1
- Shijian = Miaoshu*1000 '间隔时间等1乘1000毫秒
-
-
- Dim WMI'定义变量
-
- Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
- '建立wmi服务连接。
- '完整格式是:"winmgmts:[{SecuritySettings}!][\\ComputerName][\Namespace][:ClassName][.KeyProperty='Value']" winmgmts:"是前缀, 表示为WMI服务;第二部分用来验证权限和假冒级别的;
-
- '获取计算机名
- Set colComputers = WMI.ExecQuery("Select * from Win32_ComputerSystem")
- For Each objComputer in colComputers
- PcName = objComputer.Name
- Exit For
- Next
-
- '查找活动连接
- Set colItems = WMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled='TRUE'")
- For Each objItem In colItems
- NetName = Replace(objItem.Description,"/","_") '获取网卡名
- MacAddr = objItem.MacAddress '获取mac地址
- For Each objAddress in objItem.IPAddress
- If objAddress <> "" then
- IpAddr = objAddress '获取ip地址
- Exit For
- End If
- Next
- Next
- Set colItems = Nothing '释放对象colItems
- UserName= CreateObject("wscript.network").username
-
-
- '将控制权传递给函数Network
- Call Network(Name)
-
- Function Network(Names)
- '判断数据库文件是否存在
- If CreateObject("Scripting.FileSystemObject").FileExists(MdbAddr) Then
- 'MsgBox "数据库文件已经存在"
- Else
- 'MsgBox "数据库文件不存在,创建数据库"
- '创建数据库
- CreateObject("ADOX.Catalog").Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & MDBaddr
- '创建表以及字段
- Set connObj = CreateObject("ADODB.Connection")
- connObj.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & MdbAddr
- connObj.Execute "CREATE TABLE Speed(计算机名 varchar(255),用户名 varchar(255),IP地址 varchar(255),下载速度 varchar(255),上传速度 varchar(255),时间 varchar(255),MAC地址 varchar(255),网卡名称 varchar(255))"
- connObj.Close
- Set connObj = Nothing
- End If
- '循环开始
- Do
- Dim A
- Set A = WMI.ExecQuery("Select * from Win32_PerfRawData_Tcpip_NetworkInterface Where Name = '"& NetName &"'")
- For Each B In A
- R1 = B.BytesReceivedPersec '接收包
- S1 = B.BytesSentPersec '发送包
- T1 = B.BytesTotalPersec '总流量
- If T0 ="" Then :T0 = B.BytesTotalPersec :End If
- Next
- Set A = Nothing '释放A的对象
- WScript.Sleep(Shijian) '延迟时间获取数据
- Set A = WMI.ExecQuery("Select * from Win32_PerfRawData_Tcpip_NetworkInterface Where Name = '"& NetName &"'")
- For Each B In A
- R2 = B.BytesReceivedPersec
- S2 = B.BytesSentPersec
- T2 = B.BytesTotalPersec
- Next
- Set A = Nothing
- Down=CheckSize((R2-R1)/Miaoshu) &"/s" '计算下载速率
- Up=CheckSize((S2-S1)/Miaoshu) &"/s" '计算上传速率
-
- '数据库更新
- Dim rsObj
- Set connObj = CreateObject("ADODB.Connection") '前面虽然已经定义,但是后来释放了
- connObj.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & MdbAddr
- connObj.Open
- Set rsObj = CreateObject("ADODB.RecordSet") '数据的操作,主要靠的是ADODB.RecordSet对象
- rsObj.Open "select * FROM Speed where MAC地址 = '"& MacAddr & "'", connObj, 1, 3
- If Not rsObj.Eof Then
- 'MsgBox rsObj("MAC地址")&"已有数据,更新信息"
- rsObj("计算机名") = pcname
- rsObj("用户名") = username
- rsObj("IP地址") = ipaddr
- rsObj("下载速度") = down
- rsObj("上传速度") = up
- rsObj("时间") = Now()
- rsObj.Update
- rsObj.Close
- connObj.Close
- Else
- 'MsgBox "没有数据,添加新数据"
- rsObj.Close
- connObj.Close
- connObj.open
- rsObj.Open "select * FROM Speed", connObj, 1, 3
- rsObj.AddNew
- If Not rsObj.Eof Then
- rsObj("计算机名") = PcName
- rsObj("用户名") = UserName
- rsObj("IP地址") = IpAddr
- rsObj("下载速度") = Down
- rsObj("上传速度") = Up
- rsObj("时间") = Now()
- rsObj("MAC地址") = MacAddr
- rsObj("网卡名称") = NetName
- rsObj.Update
- rsObj.Close
- connObj.Close
- End If
- End If
- Set rsObj = Nothing
- Set connObj = Nothing
- Loop
- End Function
-
- '函数checksize
- Function CheckSize(SZ)
- On Error Resume Next
- If SZ => 1073741824 Then
- SZ = FormatNumber(SZ/1073741824) & " GB"
- ElseIf SZ => 1048576 Then
- SZ = FormatNumber(SZ/1048576) & " MB"
- ElseIf SZ => 1024 Then
- SZ = FormatNumber(SZ/1024) & " KB"
- Else
- SZ = SZ & " B"
- End If
- CheckSize=Right(" " & SZ,10)
- End Function
复制代码 最新刚学习vbs脚本。在论坛找了几个实例,修理了一下,让脚本更符合自己的需求使用。
基本大体是完成了(有幸得到论坛高手指导),不知道有什么不合理的地方。希望各位大侠帮忙指正一下。
不过该脚本在windows 7 64位的系统下面运行会出错,出错提示是:
脚本: E:\1.vbs
行: 79
字符: 6
错误: 未找到提供程序。该程序可能未正确安装。
代码: 800A0E7A
源: ADODB.Connection
在论坛提过一次问题,但是@yu2n 大佬说他的测试环境没有问题。也看了不少类似问题的帖子。不过大部分都是针对于ASP IIS上面的,少有vbs提及。
在此想问各位高手、英雄好汉们几个疑问:
1、win7 64无法ADODB.Connection的这个问题;
2、vbs如何用批处理的结果(例如批处理中的%username%等比较方便的获取系统信息的命令);
3、上面的脚本是不规范或者不合理的地方?
小弟在此谢过各位了! |