Tareas de WMI: tareas programadas

Las tareas programadas de WMI crean y obtienen información sobre las tareas programadas. Para obtener otros ejemplos, vea TechNet ScriptCenter en https://www.microsoft.com/technet.

Los ejemplos de script que se muestran en este tema obtienen datos solo del equipo local. Para más información sobre cómo usar el script para obtener datos de equipos remotos, consulte Conexión a WMI en un equipo remoto.

En el procedimiento siguiente se describe cómo ejecutar un script.

Para ejecutar un script

  1. Copie el código y guárdelo en un archivo con una extensión.vbs, como filename.vbs. Asegúrese de que el editor de texto no agregue una extensión.txt al archivo.
  2. Abra un símbolo del sistema y navegue hasta el directorio donde haya almacenado el archivo.
  3. Escriba cscript filename.vbs en el símbolo del sistema.
  4. Si no puede acceder a un registro de eventos, compruebe si se ejecuta desde un símbolo del sistema con privilegios elevados. Algunos registros de eventos, como el registro de eventos de seguridad, pueden estar protegidos mediante controles de acceso de usuario (UAC).

Nota

De forma predeterminada, cscript muestra la salida de un script en la ventana del símbolo del sistema. Dado que los scripts de WMI pueden generar un número elevado de salidas, es posible que le interese redirigir la salida a un archivo. Escriba cscript filename.vbs > outfile.txt en el símbolo del sistema para redirigir la salida del script filename.vbs a outfile.txt.

La tabla siguiente contiene ejemplos de script que se pueden usar para obtener varios tipos de datos del equipo local.

Cómo... Clases o métodos WMI
Crear tareas programadas mediante scripts Use la clase Win32_ScheduledJob y el método Create. Si tiene dificultades para que esta tarea funcione en Windows 7 o versiones posteriores, vea la sección Comentarios de Win32_ScheduledJob; es probable que la configuración le impida usar la clase.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
JobID = "Test"
Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
errJobCreate = objNewJob.Create _
    ("Notepad.exe", "********143000.000000-420", True , 1 OR 4 OR 16, ,True, JobId) 
If errJobCreate = 0 Then
    WScript.Echo "Job created successfully: " & VBNewLine _
        & "Notepad.exe scheduled to run repeately at 14.30 (2:30 P.M.) PST" & VBNewLine _
        & "on Mon, Wed, and Fri."
Else
    WScript.Echo "Job not created. Error code = " & errJobCreate
End If

En la cadena "********143000.000000-420" (que se usa en el valor del parámetro StartTime del método Create), "********143000.000000" especifica que la tarea comienza a las 14:30 y "-420" especifica la zona horaria. El número de zona horaria es la diferencia actual de la conversión de hora local. Es la diferencia entre la hora UTC y la hora local. Para calcular la diferencia de la zona horaria, multiplique el número de horas que la zona horaria está por delante o por detrás de la hora del meridiano de Greenwich (GMT) en 60 (use un número positivo para el número de horas si la zona horaria está por delante de GMT, y un número negativo si la zona horaria está por detrás de GMT). Agregue 60 más al cálculo si la zona horaria usa el horario de verano. Por ejemplo, la zona de la hora estándar del Pacífico está ocho horas por detrás de GMT, por lo que la diferencia es igual a -420 (-8 * 60 + 60) cuando el horario de verano está en uso, y -480 (-8 * 60) cuando el horario de verano no está en uso. También puede determinar el valor de la diferencia si consulta la propiedad Bias de la clase Win32_TimeZone.

Devolver una lista de todas las tareas programadas en un equipo

Use la clase Win32_ScheduledJob. Tenga en cuenta que esta clase solo puede devolver trabajos creados mediante un script o AT.exe. No puede devolver información sobre los trabajos creados o modificados mediante el Asistente para tareas programadas.

VB
strComputer = "."
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colScheduledJobs = objWMIService.ExecQuery ("Select * from Win32_ScheduledJob")
For Each objJob in colScheduledJobs
    Wscript.Echo "Command: " & objJob.Command & VBNewLine _
    & "Days Of Month: " & objJob.DaysOfMonth & VBNewLine _
    & "Days Of Week: " & objJob.DaysOfWeek & VBNewLine _
    & "Description: " & objJob.Description & VBNewLine _
    & "Elapsed Time: " & objJob.ElapsedTime & VBNewLine _
    & "Install Date: " & objJob.InstallDate & VBNewLine _
    & "Interact with Desktop: " & objJob.InteractWithDesktop & VBNewLine _
    & "Job ID: " & objJob.JobId & VBNewLine _
    & "Job Status: " & objJob.JobStatus & VBNewLine _
    & "Name: " & objJob.Name & VBNewLine _
    & "Notify: " & objJob.Notify & VBNewLine _
    & "Owner: " & objJob.Owner & VBNewLine _
    & "Priority: " & objJob.Priority & VBNewLine _
    & "Run Repeatedly: " & objJob.RunRepeatedly & VBNewLine _
    & "Start Time: " & objJob.StartTime & VBNewLine _
    & "Status: " & objJob.Status & VBNewLine _
    & "Time Submitted: " & objJob.TimeSubmitted & VBNewLine _
    & "Until Time: " & objJob.UntilTime
Next

Tareas de WMI para scripts y aplicaciones

Ejemplos de aplicaciones de C++ de WMI

TechNet ScriptCenter