'------------------------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