Hola.
He creado un script para realizar una consulta LDAP para obtener todos los equipos y me los escribe en un fichero txt.
Luego voy recorriendo equipo por equipo para ver si hace ping. Aquellos que me hace ping los escribo en otro txt.
Ahora lo que quiero es borrar el fichero txt del principio donde he guardado la consulta al Directorio Activo pero no lo consigo.
He probado a borrar ficheros y si que lo consigo, pero no cuando los creo y elimino en el mismo script.
Set fso = CreateObject("Scripting.FileSystemObject")
... y todo el codigo
y al finalizar pongo:
fso.DeleteFile "C:\rutaDelFichero.txt"
Y no me lo borra, me lo sigue manteniendo....
Hazlo así
Set delFile = fso.GetFile(FileName)
delFile.Delete
ejemplo
Dim FilenName As String
Dim fso As Object
Dim MyFile As Object
Dim delFile As Object
FileName = "D:\testfile.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("D:\testfile.txt", True)
MyFile.WriteLine "Hello world!"
MyFile.Close
Set delFile = fso.GetFile(FileName)
delFile.Delete
Hola, muchísimas gracias por tu aportación. Lo he probado pero no hay manera.
Seguro que mi codigo tiene muchos errores, porque estoy iniciándome.
Te pongo mi código por si lo pudieras mirar:
'------------------------SCRIPT APAGADO EQUIPOS
Dim FicheroOriginal
Dim objFSO_Lista_Equipos_LDAP
Dim objLista_Equipos
Dim delFile
FicheroOriginal = "C:\Users\toshiba\Desktop\apagadoEquipos.txt"
Set objFSO_Lista_Equipos_LDAP=CreateObject("Scripting.FileSystemObject")
'-----------------------CONSULTA LDAP PARA OBTENER LOS NOMBRES DE LOS EQUIPOS
'Comprobación de la existencia del Fichero
If objFSO_Lista_Equipos_LDAP.FileExists (FicheroOriginal) Then
Set objLista_Equipos = objFSO_Lista_Equipos_LDAP.CreateTextFile (FicheroOriginal) ' Se machaca automaticamente cada vez
Else
Set objLista_Equipos = objFSO_Lista_Equipos_LDAP.CreateTextFile (FicheroOriginal) ' Creación del Fichero
End If
On Error Resume Next
'Conectar con LDAP como administrador
Set objComp = GetObject("LDAP:")
'Validación en el Directorio Activo
Set ou = objComp.OpenDSObject("LDAP://palo.age/OU=Domain Controllers, DC=palo,DC=age", "toshiba", "I2016", 1)
'Bucle para obtener todos los Equipos de Sanidad e irlos escribiendo en el fichero
For Each obj In ou
objLista_Equipos.WriteLine (obj.cn)
Next
'-------------------------COMPROBACION DEL PING A LOS EQUIPOS
Function responde_al_ping (StrEquipo)
strComputer = "."
'Variable para obtener los permisos remotamente = admin
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
'Variable Ping Equipos
Set pingEquipos = objWMIService.ExecQuery _
("Select * from Win32_PingStatus Where Address = '" & StrEquipo &".palo.age" & "'")
For Each objComputer in pingEquipos
If objComputer.StatusCode = 0 Then
responde_al_ping = True
Else
responde_al_ping = false
End If
Next
End Function
Const ForReading = 1, ForWriting = 2
Dim TabStop, NewLine
TabStop = Chr(9)
NewLine = Chr(10)
'Variable Fecha
MyDate = Replace(Date, "/", "-")
Set objFichero_Log = CreateObject("Scripting.FileSystemObject")
Set objConsulta_PING = objFSO_Lista_Equipos_LDAP.OpenTextFile("C:\Users\toshiba\Desktop\apagadoEquipos.txt", ForReading)
Set objConsulta_PING2 = objFichero_Log.OpenTextFile("C:\Users\toshiba\Desktop\" & mydate & "_Log.txt", ForWriting, True)
Do Until objConsulta_PING.AtEndOfStream
StrEquipo = objConsulta_PING.ReadLine
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 & " " & "Hace PING")
Next
'Establecemos control de errores
On Error Resume Next
'Variable para obtener los permisos remotamente = admin
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & StrEquipo &".palo.age" & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Win32Shutdown(1)
Next
else
objConsulta_PING2.WriteLine StrEquipo & TabStop & " No se ha podido apagar"
end if
Loop
'Borrar Fichero con todos los EQUIPOS
Set delFile = objFSO_Lista_Equipos_LDAP.GetFile(FicheroOriginal)
delFile.Delete
Te has fijado que he puesto:
MyFile.Close
Sin no cierras el archivo no lo podrás borrar
objLista_Equipos.Close
Set delFile = objFSO_Lista_Equipos_LDAP.GetFile(FicheroOriginal)
delFile.Delete
Lo acabo de añadir y sigue igual...
He probado tu codigo aparte y si que me funciona, pero modificando el mio y añadiendo lo
tuyo nada de nada :(
quizás sea por el bucle Do/Loop, quítalo momentáneamente y dale al código a ver si te lo borra
Yo te he puesto
CitarobjLista_Equipos.Close
Porque no me había fijado que tienes mezclado tres partes de código. objLista_Equipos lo tienes declarado en otra parte. Que lio.
sería
objConsulta_PING.Close
Set delFile = objFSO_Lista_Equipos_LDAP.GetFile(FicheroOriginal)
delFile.Delete
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.
Cita de: palophp en 18 Octubre 2016, 22:23 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
Diooooooooos!! Muchisimas gracias! :D :D :D
Ahora sí, se me había olvidado cerrar ese fichero.
Ahora solo me falta lo del CN jaajajjaja