使用WMIC停止计划任务

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

这是我所得到的:

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

但是这只是回报:

 No Instance(s) Available. 

所以我不知道如果我做错了什么,或者如果我需要在服务器上configuration的东西。

看来WMIC只支持使用WMIC本身创build的作业或者用AT命令创build的作业( source -starting page 205)。

这就是为什么你No Instance(s) Available.

我也是一个Powershell上瘾者,但如果这是一个问题,你可以使用schtasks工具(如你所说)。

远程禁用任务:

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

禁用任务的好处在于,您可以确定它将继续运行,直到它完成(如果它正在运行)(在这种情况下,只有将来的执行被禁用)。

如果你想等到任务结束,你将不得不等待这个过程结束。 为了避免使用另一个第三方工具/命令,你也可以通过查询任务状态来完成这个工作。

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

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

schtasks /END将立即schtasks /END任务。

为什么不是PowerShell? WMIC是相当酷的,但我不禁觉得,PowerShell现在是这种事情的最佳解决scheme:

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