Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, estou enfrentando problemas na montagem de um código de repetição, o objetivo é rodar o mesmo código capturado de um formulário e dividido por virgulas, ele roda somente quando eu não utilizo dentro do FOR um If para tratar erro. Gostaria de saber se alguém tem alguma sugestão. O código é o seguinte:
CODE
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="../Connections/ConnWMIBank.asp" -->
<%
On Error Resume Next
Server.ScriptTimeout = 6000
Dim rsCurUserInfo__MMColParam
rsCurUserInfo__MMColParam = "1"
If (Session("MM_UserName") <> "") Then
rsCurUserInfo__MMColParam = Session("MM_UserName")
End If
%>
<%
Dim rsCurUserInfo
Dim rsCurUserInfo_numRows
Set rsCurUserInfo = Server.CreateObject("ADODB.Recordset")
rsCurUserInfo.ActiveConnection = MM_ConnWMIBank_STRING
rsCurUserInfo.Source = "SELECT Hash, DomainName FROM Users WHERE UserName = '" + Replace(rsCurUserInfo__MMColParam, "'", "''") + "'"
rsCurUserInfo.CursorType = 0
rsCurUserInfo.CursorLocation = 2
rsCurUserInfo.LockType = 1
rsCurUserInfo.Open()
rsCurUserInfo_numRows = 0
%>
<%
ArrayComputer = Split(Request.Form("Hosts"),",")
strUser = Session("MM_UserName")
strDomain = (rsCurUserInfo.Fields.Item("DomainName").Value)
strPassword = (rsCurUserInfo.Fields.Item("Hash").Value)
For Each strComputer in ArrayComputer
If Err.Number = 0 Then
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objSWbemLocator.ConnectServer(strComputer, "root\CIMV2", strUser, strPassword, "MS_409", "ntlmdomain:" +strDomain)
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem",,48)
For Each objItem in ColItems
Response.Write(objItem.Caption&"<BR/>")
CaptionCS = objItem.Caption
Response.Write(objItem.Domain&"<BR/>")
DomainCS = objItem.Domain
Response.Write(objItem.Manufacturer&"<BR/>")
ManufacturerCS = objItem.Manufacturer
RAM = objItem.TotalPhysicalMemory / 1000 /1000
RAMTotal = FormatNumber(RAM,0)
Response.Write (RAMTotal & " MB<BR/>")
Next
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem",,48)
For Each objItem in ColItems
Response.Write(objItem.Caption&"<BR/>")
CaptionOS = objItem.Caption
Next
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem",,48)
For Each objItem in ColItems
Response.Write(objItem.CSDVersion&"<BR/>")
ServPack = objItem.CSDVersion
Next
Next
Else
If Err.Number = "-2147024891" Then
Response.Write("</br></br></br></br></br></br></br></br></br></br></br></br><span class=""txtCorpo"">Acesso negado. Verifique suas permissões para o host " & strComputer & "</span>")
Response.Write("<meta HTTP-EQUIV=""refresh"" CONTENT=""4;URL=ScanOne.asp"">")
End If
If Err.Number = "-2147023174" Then
Response.Write("</br></br></br></br></br></br></br></br></br></br></br></br><span class=""txtCorpo"">Host " & strComputer & " não encontrado.</span>")
Response.Write("<meta HTTP-EQUIV=""refresh"" CONTENT=""4;URL=ScanOne.asp"">")
End If
End If
rsCurUserInfo.Close()
Set rsCurUserInfo = Nothing
%>
O FOR a que se referia é a linha:
For Each strComputer in ArrayComputer
Se eu não utilizar o If:
If Err.Number = 0 Then
que continua no Else e termina no ultimo End If o código roda corretamente, mas se eu coloco este If passa a dar o seguinte erro:
Tipo de erro:
Erro de compilação do Microsoft VBScript (0x800A041F)
'Next' inesperado
/HostsModule/ScanMoreResult.asp, line 65
Next
Já tentei inverter a lógica do If colocando:
If Err.Number > 0 Then ... e tratar os erros e depois do Else colocar o código, mas não deu certo. Agradeço a atenção.
Carregando comentários...