Campo managedby sin CN

Iniciado por palophp, 17 Octubre 2016, 20:54 PM

0 Miembros y 1 Visitante están viendo este tema.

palophp

Que va, poniendo eso solo me saca:

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

okik

#11
Cita de: palophp en 18 Octubre 2016, 23:01 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 (vb) [Seleccionar]
 For Each obj In ou
       If obj.managedby <> vbNullString Then '<- Si obj.managedby  es distinto de nada
        Dim sN() As String
        sN = Split(obj.managedby, ",")
        sN = Split(sN(0), "=")
   
           objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) _
           & " " & _
           "Hace PING" & vbNewLine)
       End If
   Next

palophp

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.

okik

#13
Cita de: palophp en 18 Octubre 2016, 23:14 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

CN=paloma,CN=Users,DC=palo,DC=age


sin espacios... ¿me lo puedes confirmar?

palophp

Cierto, así es.
Y quiero que me saque únicamente "paloma"

okik

#15

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

Código (vb) [Seleccionar]
If obj.managedby <> "" Then '

Fijate esta emulación devuelve el nombre.

Código (vb) [Seleccionar]
Dim managedby As String
managedby = "CN = paloma ,CN = Users, DC = palo, DC = age"
 If managedby <> vbNullString Then '<- Si Sn es distinto de nada
Dim sN() As String
sN = Split(managedby, ",")
sN = Split(sN(0), "=")

 MsgBox (UCase(sN(1)))
 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

palophp

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 (vb) [Seleccionar]

If responde_al_ping(StrEquipo) then
  For Each obj In ou
        If obj.managedby <> "" Then '<- Si obj.managedby  es distinto de nada
         Dim sN()
         sN = Split(obj.managedby, ",")
         sN = Split(sN(0), "=")

            objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) _
            & " " & _
            "Hace PING" & vbNewLine)
        End If
    Next
else
    objConsulta_PING2.WriteLine StrEquipo & TabStop & " No se ha podido apagar"
end if
Loop


palophp

Código (vb) [Seleccionar]

If responde_al_ping(StrEquipo) then
'Fichero Log que almacena los Equipos que se van apagando
For Each obj In ou
objConsulta_PING2.WriteLine (StrEquipo & TabStop & obj.managedby & " " & "SIIIIII PING")
Next

 For Each obj In ou
       If obj.managedby <> "" Then '<- Si obj.managedby  es distinto de nada
        Dim sN()
        sN = Split(obj.managedby, ",")
        sN = Split(sN(0), "=")

           objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) & " " & "Hace PING" & vbNewLine)
       End If
   Next
else
   objConsulta_PING2.WriteLine StrEquipo & TabStop & " No se ha podido apagar"
end if
Loop


Me saca esto directamente:
MIO   CN=paloma,CN=Users,DC=palo,DC=age SIIIIII PING
MIO   CN=Dani Alejo,CN=Users,DC=palo,DC=age SIIIIII PING
MIO   CN=Dani Alejo,CN=Users,DC=palo,DC=age SIIIIII PING
MIO1    No se ha podido apagar
MIO2    No se ha podido apagar



Ves? No hace ni siquiera tu codigo






okik

#18
Cita de: palophp en 18 Octubre 2016, 23:33 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 (vb) [Seleccionar]

If responde_al_ping(StrEquipo) then
 For Each obj In ou
       If obj.managedby <> "" Then '<- Si obj.managedby  es distinto de nada
        Dim sN()
        sN = Split(obj.managedby, ",")
        sN = Split(sN(0), "=")

           objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) _
           & " " & _
           "Hace PING" & vbNewLine)
       End If
   Next
else
   objConsulta_PING2.WriteLine StrEquipo & TabStop & " No se ha podido apagar"
end if
Loop




que raro jeje.

Código (vb) [Seleccionar]
For Each obj In ou
       If obj.managedby <> vbNullString Then '<- Si Sn es distinto de nada
           Dim sN() As String
           sN = Split(obj.managedby, ",")
           sN = Split(sN(0), "=")
       End If
       Dim Nombre As String
         Nombre = UCase(sN(1))
       If Nombre = "" Then Nombre = "NULO"
   
           objConsulta_PING2.WriteLine (StrEquipo & TabStop & Nombre _
           & " " & _
           "Hace PING" & vbNewLine)
   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 (vb) [Seleccionar]
If responde_al_ping(StrEquipo) Then
   'Fichero Log que almacena los Equipos que se van apagando
     For Each obj In ou
      ' If CStr(obj.managedby) <> "" Then '<- Si obj.managedby  es distinto de nada
        Dim sN()
        sN = Split(obj.managedby, ",")
        sN = Split(sN(0), "=")

           objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) & " " & "Hace PING" & vbNewLine)
     '  End If
   Next
Else
   objConsulta_PING2.WriteLine StrEquipo & TabStop & " No se ha podido apagar"
End If
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 (vb) [Seleccionar]
If CStr(obj.managedby) <> "" Then

o bien
Dim objManagedby as String
objManagedby = obj.managedby



Código (vb) [Seleccionar]
If responde_al_ping(StrEquipo) Then
   'Fichero Log que almacena los Equipos que se van apagando
     For Each obj In ou
     Dim objManagedby As String
     objManagedby = obj.managedby
       If CStr(objManagedby) <> "" Then '<- Si obj.managedby  es distinto de nada
        Dim sN()
        sN = Split(objManagedby, ",")
        sN = Split(sN(0), "=")

           objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) & " " & "Hace PING" & vbNewLine)
       End If
   Next
Else
   objConsulta_PING2.WriteLine StrEquipo & TabStop & " No se ha podido apagar"
End If
Loop




Se me olvidaba y también

Código (vb) [Seleccionar]
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.



palophp

Hola!
He estado mirando otra vez y poniendo los codigos que me pasaste y nada.