使用 WMIC 停止计划任务

使用 WMIC 停止计划任务

我需要找到一些方法来禁用远程计算机上的计划任务如果该任务恰好正在运行,则等待该任务停止执行。如果可能的话,我想通过 WMIC 来执行此操作。这将集成到更大的批处理过程中。

这是我目前得到的信息:

> wmic /node:%SERVER_NAME% /namespace:\\root\cimv2 path Win32_ScheduledJob

但这只会返回:

No Instance(s) Available.

所以我不确定我是否做错了什么或者是否需要在服务器上配置一些东西。

答案1

似乎WMIC仅支持使用其自身创建WMIC或使用AT命令创建的作业(来源- 从第 205 页开始)。

这当然是你得到的原因No Instance(s) Available.

我也是 Powershell 的狂热爱好者,但如果它是一个问题,您可以使用schtasks实用程序(正如您所提到的)。

要远程禁用任务:

schtasks /change /disable /TN "task name" /S server_fqdn /U domain\user /P password

禁用任务的优点是,您可以确保它将继续运行直到完成(在这种情况下,只有未来的执行才会被禁用)。

如果您想等到任务完成,则必须等待该过程完成。为了避免使用其他第三方工具/命令,您也可以schtasks通过查询任务状态来执行此操作:

schtasks /query /TN "task name" /S server_fqdn /U domain\user /P password | finstr Running

(附言:请注意,由于我的 Windows 操作系统是法语,因此我不确定“运行”状态。请根据您的语言进行检查)。

schtasks /END将立即终止任务。

答案2

为什么不使用 PowerShell?WMIC 非​​常酷,但我不禁觉得 PowerShell 现在是此类事情的首选解决方案:

Invoke-Command -ComputerName $Server -ScriptBlock { Disable-ScheduledJob -Name $Task }

相关内容