alexii пишет:То есть, обе ошибки из поста #1 происходят на строке?
oCN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Info.mdb;"
Какой-либо регулярности и повторяемости (время, машина) не наблюдается?
uniken1, для того, чтобы можно было просто хотя бы опробовать, нужен полный скрипт и более подробные данные.
Что значит регулярности? этот вопрос он к чему относится?
Если интересно посмотреть на полный скрипт, то вот:
On Error Resume Next
'====== Prepare
Randomize
Const HKEY_LOCAL_MACHINE = &H80000002
Dim oFSO
Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
'====== Get Current Path
sCurPath = WScript.ScriptFullName
iPos = InStrRev(sCurPath,"\")
sCurPath = Left(sCurPath,iPos)&"collect\"
'====== Get Computer Name, Domain Name and UserName
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
oTS.WriteLine Now&" "& Err.Number & ": " & Err.Description
'WScript.Quit
End If
For Each objOS In objService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
Exit For
Next
CompName = objOS.Caption
DomName = objOS.Domain
UserName = objOS.UserName
Set oTS = oFSO.OpenTextFile(sCurPath&"Logs\"&CompName&".log", 8, true, 0)
oTS.WriteLine Now&" Start Collect..."
oTS.WriteLine Now&" "&CompName&" "&UserName
Set oTS_GeneralLog = oFSO.OpenTextFile(sCurPath&"CollectInfo2.log", 8, true, 0)
oTS_GeneralLog.WriteLine Now&" Start Collect. "&CompName&" "&UserName
If Err.Number<>0 Then
oTS.WriteLine Now&" "&CompName&" "&"CollectInfo.log error ("&Err.Number&") "&"Error source: "&Err.Source&" "&"Erorr description: "&Err.Description
Err.Number = 0
End If
oTS_GeneralLog.Close
'====== Comp Description
Set objRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv")
strKeyPath = "System\CurrentControlSet\Services\lanmanserver\parameters"
strValueName = "srvcomment"
Dim strDescription
objRegistry.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strDescription
oTS.WriteLine Now&" "&CompName&" "&strDescription
'====== Get IP, GW, DNS, WINS, DHCP Addresses
Dim sIPAddress
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objAdapter in colAdapters
'ip adresses
If Not IsNull(objAdapter.IPAddress) Then
For i = 0 To UBound(objAdapter.IPAddress)
If i = 0 Then
sIPAddress = objAdapter.IPAddress(i)
Else
sIPAddress = sIPAddress &", "& objAdapter.IPAddress(i)
End If
Next
End If
'Gateway
If Not IsNull(objAdapter.DefaultIPGateway) Then
For i=LBound(objAdapter.DefaultIPGateway) to UBound(objAdapter.DefaultIPGateway)
If i = 0 Then
sGateway = objAdapter.DefaultIPGateway(i)
Else
sGateway = sGateway &", "& objAdapter.DefaultIPGateway(i)
End If
Next
End If
'DNS
If Not IsNull(objAdapter.DNSServerSearchOrder) Then
For i=LBound(objAdapter.DNSServerSearchOrder) to UBound(objAdapter.DNSServerSearchOrder)
If i = 0 Then
sDNS = objAdapter.DNSServerSearchOrder(i)
Else
sDNS = sDNS &", "& objAdapter.DNSServerSearchOrder(i)
End If
Next
End If
'WINS
If Not IsNull(objAdapter.WINSPrimaryServer) Then
If Not IsNull(objAdapter.WINSSecondaryServer) Then
sWins = objAdapter.WINSPrimaryServer&", "&objAdapter.WINSSecondaryServer
Else
sWins = objAdapter.WINSPrimaryServer
End If
End If
'DHCP
bDHCP = objAdapter.DHCPEnabled
Next
oTS.WriteLine Now&" "&CompName&" "&bDHCP&" "&sIPAddress&" "&sGateway&" "&sDNS&" "&sWins
'====== Test For Symantec
Dim Sym1Present ,SymVer
Set objShell = CreateObject("WScript.Shell")
SymVer = objShell.RegRead("HKLM\SOFTWARE\Symantec\Symantec Endpoint Protection\AV\ProductVersion")
Sym1Present = False
if SymVer = "922614" Then
Sym1Present = True
End If
'====== Time Zone
TZone = objShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\StandardName")
'====== SystemInfo
sWinName = objShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName")
sWinName = sWinName&" "&objShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion")
sWinName = sWinName&" ("&objShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\BuildLab")&")"
oTS.WriteLine Now&" "&CompName&" "&sWinName
'====== Write Info
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Set oCN=CreateObject("ADODB.Connection")
Set oRS=CreateObject("ADODB.Recordset")
oTS.WriteLine Now&" "&CompName&" "&"Database connected."
Dim strSelect,strUpdate,strInsert
strSelect = "SELECT Count(*) as cnt FROM InfoTable where CompName='"&CompName&"'"
strUpdate = "update InfoTable set DomainName = '"&DomName&"', LastLogon='"&Now&"', LoggedUser='"&UserName&"', Description='"&strDescription&"', IPAddr='"&sIPAddress&"', nDNS='"&sDNS&"', nWINS='"&sWins&"', nGateway='"&sGateway&"', nDHCP='"&bDHCP&"', SymantecPresent='"&Sym1Present&"', nTimeZone='"&TZone&"', nSystem='"&sWinName&"' where CompName='"&CompName&"'"
strInsert = "insert into InfoTable (CompName,DomainName,LastLogon,LoggedUser,Description,IPAddr,nGateway,nDNS,nWINS,nDHCP,SymantecPresent, nTimeZone, nSystem) values ('"&CompName&"', '"&DomName&"', '"&Now&"', '"&UserName&"', '"&strDescription&"', '"&sIPAddress&"', '"&sGateway&"', '"&sDNS&"', '"&sWins&"', '"&bDHCP&"', '"&Sym1Present&"', '"&TZone&"', '"&sWinName& "')"
Err.Number = 0
For i = 0 To 20
oCN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&sCurPath&"Info.mdb;"
If Err.Number<>0 Then
If Err.Number=3706 Then
oTS.WriteLine Now&" "&CompName&" "&"Provider cannot be found."
Exit For
Else
Wait
End If
oTS.WriteLine Now&" "&CompName&" "&"Open Connection("&i&") error ("&Err.Number&") "&"Error source: "&Err.Source&" "&"Erorr description: "&Err.Description
Err.Number = 0
Else
oTS.WriteLine Now&" "&CompName&" "&"Connection Opened"
Exit For
End If
Next
oRS.Open strSelect,oCN,adOpenStatic,adLockOptimistic
If Err.Number<>0 Then
oTS.WriteLine Now&" "&CompName&" "&"Open Recordset error ("&Err.Number&") "&"Error source: "&Err.Source&" "&"Erorr description: "&Err.Description
Err.Number = 0
End If
If oRS.Fields("cnt")=0 Then
oCN.Execute strInsert
If Err.Number<>0 Then
oTS.WriteLine Now&" "&CompName&" "&"Insert error ("&Err.Number&") "&"Error source: "&Err.Source&" "&"Erorr description: "&Err.Description
Err.Number = 0
Else
oTS.WriteLine Now&" "&CompName&" "&"Database Insert record"
End If
Else
oCN.Execute strUpdate
If Err.Number<>0 Then
oTS.WriteLine Now&" "&CompName&" "&"Update error ("&Err.Number&") "&"Error source: "&Err.Source&" "&"Erorr description: "&Err.Description
Err.Number = 0
Else
oTS.WriteLine Now&" "&CompName&" "&"Database Update record"
End If
End If
oRS.Close
oCN.Close
oTS.WriteLine Now&" "&CompName&" "&"Database Close"
oTS.Close
WScript.Quit
Sub Wait
WScript.Sleep Int((30000 * Rnd()) + 5000)
End Sub
В политике указан этот скрипт.
В папке с политикой лежит скрипт и папка Collect, в папке Logs, CollectInfo2.log и Info.mdb