我需要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 }