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=....
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.
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);
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()
If CStr(obj.managedby) <> "" Then
o bien
Dim objManagedby as String
objManagedby = obj.managedby
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
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.