WMI 任务:计划任务
WMI 计划任务创建并获取有关计划任务的信息。 有关其他示例,请通过 https://www.microsoft.com/technet 访问 TechNet ScriptCenter。
本主题中所示的脚本示例仅从本地计算机获取数据。 有关如何使用脚本从远程计算机获取数据的详细信息,请参阅连接到远程计算机上的 WMI。
以下过程介绍了如何运行脚本。
运行脚本
- 复制代码并将其保存在扩展名为 .vbs 的文件中,例如 filename.vbs。 确保文本编辑器不会向该文件添加 .txt 扩展名。
- 打开命令提示符窗口并导航到保存该文件的目录。
- 在命令提示符下键入 cscript filename.vbs。
- 如果无法访问事件日志,请进行检查以查看是否正从提升的命令提示符运行。 某些事件日志(例如安全事件日志)可能受用户访问控制 (UAC) 的保护。
注意
默认情况下,cscript 会在命令提示符窗口中显示脚本的输出。 由于 WMI 脚本可以生成大量输出,因此可能需要将输出重定向到文件。 在命令提示符下键入 cscript filename.vbs > outfile.txt 以将 filename.vbs 脚本的输出重定向到 outfile.txt。
下表列出了可用于从本地计算机获取各种类型的数据的脚本示例。
...使用脚本创建计划任务? |
使用 Win32_ScheduledJob 类和 Create 方法。 如果在 Windows 7 或更高版本上执行此任务时遇到问题,请参阅 Win32_ScheduledJob 的“备注”部分;你的设置可能阻止使用该类。
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
|
在字符串“********143000.000000-420”(在 Create 方法的 StartTime 参数值中使用)中,“** ******143000.000000”指定任务在 14.30(下午 2:30)启动,“-420”指定时区。 时区编号是本地时间转换的当前偏差。 偏差是 UTC 时间和本地时间之差。 若要计算所在时区的偏差,请将该时区早于或晚于格林威治标准时间 (GMT) 的小时数乘以 60(如果该时区早于格林威治标准时间,请使用正数作为小时数,如果该时区晚于 GMT,则使用负数)。 如果时区使用夏令时,请在计算中额外加上 60。 例如,太平洋标准时区比 GMT 晚 8 个小时,因此在使用夏令时时,偏差等于 -420 (-8 * 60 + 60),在未使用夏令时时,偏差等于 -480 (-8 * 60)。 还可以通过查询 Win32_TimeZone 类的 bias 属性来确定偏差值。 |
...返回计算机上所有计划任务的列表? |
使用 Win32_ScheduledJob 类。 请注意,此类只能返回使用脚本或 AT.exe 创建的作业。 它无法返回有关计划任务向导创建或修改的作业的信息。
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
|
|
-
脚本和应用程序的 WMI 任务
-
WMI C++ 应用程序示例
-
TechNet ScriptCenter