elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 ... 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [44] 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 ... 80
431  Programación / Programación Visual Basic / Re: Campo managedby sin CN en: 19 Octubre 2016, 20:55 pm
Perdona marca el punto de interrupción donde está el NEXT porque si no g te mostrará "".

432  Programación / Programación Visual Basic / Re: Campo managedby sin CN en: 19 Octubre 2016, 20:42 pm
hola

mira yo creo que ya más no puedo aportar. Para lo de crear líneas ya te propuse VbNewLine o vbCrLf y eso funciona.pero por alguna razón que desconozco no funciona dentro de tu código. Como no puedo reproducir tu código no hay forma de que pueda encontrar la razón.

Incluso he usado un código de VBScript y un For Each y dentro de este el Split. Para comprobar que funciona.

Para sacar el nombre lo del SPLIT que ya habrás comprobado que funciona,

Este código por ejemplo lista los procesos en formato "Aplicación.exe" y se trata de listarlo quitando ".exe".

Código
  1. Dim strComputer As String
  2. strComputer = "."
  3.        Dim objWMIService As Object
  4.            Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  5.        Dim colProcessList As Object
  6.            Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process")
  7.        For Each objProcess In colProcessList
  8.                Dim sN() As String
  9.                    sN = Split(objProcess.Name, ".")
  10.                    List1.AddItem (sN(0))
  11.        Next
  12.  
  13.  

funciona sin problemas

Ahora vamos con tu código. Es básicamente lo mismo pero no te funciona. Lo único que se me ocurre sin poder probarlo es quitar la condición y poner On error Resume Next.

Código
  1.  For Each obj In ou
  2.         Dim sN() As String
  3.              sN = Split(CStr(obj.managedby), ",")
  4.              sN = Split(sN(0), "=")
  5.              On Error Resume Next
  6.            objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) _
  7.          & " " & _
  8.            "Hace PING" & vbNewLine)
  9.    Next


Podrías probar a usar puntos de interrupción para ver el valor de obj.managedby en tiempo de ejecución antes de escribir.

En la parte izquierda del editor, justo donde acaba lo blanco,  hay una columna vacía tipo botón que si le das aparece un punto rojo.




Marca justo donde está la línea :

      objConsulta_PING2.WriteLine (StrEquipo & TabStop & obj.managedby  _
          & " " & _
            "Hace PING" & vbNewLine)


mete  obj.managedby en una variable String
 
Código
  1. Dim g As String
  2.  g = obj.managedby

y marca el el punto justo donde está   g = obj.managedby

y marca el el punto justo donde está   Next

Inicia le código y cuando se interrumpa coloca el puntero justo encima de g, debería mostrarse un texto que muestra su valor justo en ese momento. A ver que formato tiene, para poder extraer el nombre.


433  Programación / Programación Visual Basic / Re: Campo managedby sin CN en: 18 Octubre 2016, 23:54 pm
Lo he probado, pero es que directamente si lo meto donde el IF, no me saca ni siquiera ningún equipo al que hace PING...
Y si lo dejo como estaba, si que me saca todo pero con el CN=....

Código
  1. If responde_al_ping(StrEquipo) then
  2.  For Each obj In ou
  3.        If obj.managedby <> "" Then '<- Si obj.managedby  es distinto de nada
  4.         Dim sN()
  5.         sN = Split(obj.managedby, ",")
  6.         sN = Split(sN(0), "=")
  7.  
  8.            objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) _
  9.            & " " & _
  10.            "Hace PING" & vbNewLine)
  11.        End If
  12.    Next
  13. else
  14.    objConsulta_PING2.WriteLine StrEquipo & TabStop & " No se ha podido apagar"
  15. end if
  16. Loop
  17.  
  18.  


que raro jeje.

Código
  1. For Each obj In ou
  2.        If obj.managedby <> vbNullString Then '<- Si Sn es distinto de nada
  3.            Dim sN() As String
  4.            sN = Split(obj.managedby, ",")
  5.            sN = Split(sN(0), "=")
  6.        End If
  7.        Dim Nombre As String
  8.          Nombre = UCase(sN(1))
  9.        If Nombre = "" Then Nombre = "NULO"
  10.  
  11.            objConsulta_PING2.WriteLine (StrEquipo & TabStop & Nombre _
  12.            & " " & _
  13.            "Hace PING" & vbNewLine)
  14.    Next

a ver que te saca esto

con el ejemplo del Split ya tienes como sacar el nombre el porqué luego no se te ve, no entiendo, no se. Ya que como he dicho si antes te salía :

MIO   CN=paloma,CN=Users,DC=palo,DC=age Hace PING
MIO    Hace PING
MIO   CN=Dani ,CN=Users,DC=palo,DC=age Hace PING
MIO1    No se ha podido apagar
MIO2    No se ha podido apagar

solo dos de estas líneas deberían devolver un nombre "paloma" y "Dani", y debería devolver
MIO   PALORMA  Hace PING
MIO   DANI Hace PING

al haber puesto la condición de solo  If obj.managedby <> "" Then solo debería escribir  en el archivo si devuelve algún valor.

solo se me ocurre quitar la codición (quitar la condición if then implica un error con el Split si obj.managedby es nulo);

Código
  1. If responde_al_ping(StrEquipo) Then
  2.    'Fichero Log que almacena los Equipos que se van apagando
  3.      For Each obj In ou
  4.       ' If CStr(obj.managedby) <> "" Then '<- Si obj.managedby  es distinto de nada
  5.         Dim sN()
  6.         sN = Split(obj.managedby, ",")
  7.         sN = Split(sN(0), "=")
  8.  
  9.            objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) & " " & "Hace PING" & vbNewLine)
  10.      '  End If
  11.    Next
  12. Else
  13.    objConsulta_PING2.WriteLine StrEquipo & TabStop & " No se ha podido apagar"
  14. End If
  15. Loop

y ya en plan desesperado, es establecer el tipo a STRING porque puede ser que no se pueda comparar el objeto como string. añade Cstr()

Código
  1. If CStr(obj.managedby) <> "" Then

o bien
Dim objManagedby as String
objManagedby = obj.managedby



Código
  1. If responde_al_ping(StrEquipo) Then
  2.    'Fichero Log que almacena los Equipos que se van apagando
  3.      For Each obj In ou
  4.      Dim objManagedby As String
  5.      objManagedby = obj.managedby
  6.        If CStr(objManagedby) <> "" Then '<- Si obj.managedby  es distinto de nada
  7.         Dim sN()
  8.         sN = Split(objManagedby, ",")
  9.         sN = Split(sN(0), "=")
  10.  
  11.            objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) & " " & "Hace PING" & vbNewLine)
  12.        End If
  13.    Next
  14. Else
  15.    objConsulta_PING2.WriteLine StrEquipo & TabStop & " No se ha podido apagar"
  16. End If
  17. Loop


Se me olvidaba y también

Código
  1. sN = Split(Cstr(obj.managedby), ",")

Es como si vb no puediera trabajar con obj.managedby  como string. Por eso te comento lo de Cstr() o meterlo en una variable String primero, antes de trabajar con su valor.


434  Programación / Programación Visual Basic / Re: Campo managedby sin CN en: 18 Octubre 2016, 23:23 pm

De todos modos aunque tuviera espacios funcionaría igual. quizás es que usé vbnullstring prueba con ""

Código
  1. If obj.managedby <> "" Then '

Fijate esta emulación devuelve el nombre.

Código
  1. Dim managedby As String
  2. managedby = "CN = paloma ,CN = Users, DC = palo, DC = age"
  3.  If managedby <> vbNullString Then '<- Si Sn es distinto de nada
  4. Dim sN() As String
  5. sN = Split(managedby, ",")
  6. sN = Split(sN(0), "=")
  7.  
  8.  MsgBox (UCase(sN(1)))
  9.  End If

si obj.managedby devuelve algún valor, que entiendo que es como esto: "CN = paloma ,CN = Users, DC = palo, DC = age"

Entonces tiene que mostrar
Equipo Nombre  Hace PING
435  Programación / Programación Visual Basic / Re: Campo managedby sin CN en: 18 Octubre 2016, 23:16 pm
Nada.
Lo he metido en el IF y no me saca los equipos a los que hace ping.
Directamente se va al ELSE y me saca los que no hace el ping.

yo entiendo que  obj.managedby devuelve esto tal cual
Código:
CN=paloma,CN=Users,DC=palo,DC=age 

sin espacios... ¿me lo puedes confirmar?
436  Programación / Programación Visual Basic / Re: Campo managedby sin CN en: 18 Octubre 2016, 23:05 pm
Que va, poniendo eso solo me saca:

MIO1    No se ha podido apagar
MIO2    No se ha podido apagar


claro, fallo mio

Código
  1.  For Each obj In ou
  2.        If obj.managedby <> vbNullString Then '<- Si obj.managedby  es distinto de nada
  3.         Dim sN() As String
  4.         sN = Split(obj.managedby, ",")
  5.         sN = Split(sN(0), "=")
  6.  
  7.            objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) _
  8.            & " " & _
  9.            "Hace PING" & vbNewLine)
  10.        End If
  11.    Next
437  Programación / Programación Visual Basic / Re: Campo managedby sin CN en: 18 Octubre 2016, 22:51 pm
Si? Espero espero jaajja

Vale mira reemplaza esto:

Código
  1. For Each obj In ou
  2.        objConsulta_PING2.WriteLine (StrEquipo & TabStop & obj.managedby & " " & "Hace PING" & vbNewLine)
  3.   Next

Por esto otro:

Código
  1.  
  2.    For Each obj In ou
  3.       Dim sN() As String
  4.        sN = Split(obj.managedby, ",")
  5.        sN = Split(sN(0), "=")
  6.        If  sN(1) <> vbNullString Then '<- Si Sn es distinto de nada
  7.            objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) _
  8.            & " " & _
  9.            "Hace PING" & vbNewLine)
  10.        End If
  11.    Next
  12.  

y me cuentas q tal

El UCase es para que el nombre se vea en mayúsculas

438  Programación / Programación Visual Basic / Re: Campo managedby sin CN en: 18 Octubre 2016, 22:43 pm
Tampoco jajaja me sigue apareciendo esto, ademas no se porque me sale tantas veces el Equipo IMIO

MIO   CN=paloma,CN=Users,DC=palo,DC=age Hace PING
MIO    Hace PING
MIO   CN=Dani ,CN=Users,DC=palo,DC=age Hace PING
MIO1    No se ha podido apagar
MIO2    No se ha podido apagar



También se podría usar vbCrlf en lugar de vbNewline.

Ya lo tengo espera un rato...


439  Programación / Programación Visual Basic / Re: Crear y Eliminar fichero txt en el mismo script en: 18 Octubre 2016, 22:29 pm
Que va, he quitado el bucle y sigue igual.
Voy a mirarlo de nuevo, pero me lo he mirado mil veces y no hay manera.
Muchas gracias por tu ayuda.

Estaba editando mientras respondias mira

el archivo lo abres con el objeto objConsulta_PING ..>  "Set objConsulta_PING = objFSO_Lista_Equipos_LDAP.OpenTextFile..· y para cerrarlo pus debes usar Close con ese objeto.


objConsulta_PING.Close
Set delFile = objFSO_Lista_Equipos_LDAP.GetFile(FicheroOriginal)
delFile.Delete
440  Programación / Programación Visual Basic / Re: Campo managedby sin CN en: 18 Octubre 2016, 22:14 pm
a ver esto:

Añade VbNewLine

Código
  1. For Each obj In ou
  2.        objConsulta_PING2.WriteLine (StrEquipo & TabStop & obj.managedby & " " & "Hace PING" & vbNewLine)
  3.    Next
  4.  
Páginas: 1 ... 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [44] 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 ... 80
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines