需要使用以下命令禁用windows 2012中的群集计划任务,但它不会禁用群集计划任务。
get-ClusteredScheduledTask -disable
Disable-ScheduledTask -TaskName
发布于 2015-05-19 05:07:56
管道|导致从get-ClusteredScheduledTasks返回的整个对象集被传递给Disable-ScheduledTask。使用-TaskName会导致Disable-ScheduledTask命令出错,因为管道告诉它“将此命令应用于这些对象”,但随后您立即尝试将该命令应用于名为"schTest 123“的单个任务。This article提供了一些关于命令管道的更深层次的解释。
有几种不同的方法来解决这个问题,这取决于你想要做什么:
1)如果您的目标是禁用当前计划的所有任务:
$tasks = get-ScheduledTasks | where { $_.State -eq "Ready" } # exclude any tasks that are already disabled so we don't accidentally re-enable them later
$tasks | Disable-ScheduledTask
# do your work
$tasks | Enable-ScheduledTask
或
$tasks = get-ScheduledTasks | where { $_.State -eq "Ready" }
$tasks | foreach { Disable-ScheduledTask -TaskName $_.TaskName }
# do your work
$tasks | foreach { Enable-ScheduledTask -TaskName $_.TaskName }
它们在功能上是相同的,但第一个在语义上肯定更清晰。
2)如果您的目标是仅按名称禁用单个任务
Disable-ScheduledTask -TaskName $myTaskName
# do your work
Enable-ScheduledTask -TaskName $myTaskName
3)如果您想在关闭/启用之前确认单个任务存在
$task = get-ClusteredScheduledTasks | where { $_.TaskName -eq $myTaskName }
if ( $task -eq $Null ) { throw ( "Could not find scheduled task " + $myTaskName ) }
Disable-ScheduledTask -TaskName $task.TaskName
# do work
Enable-ScheduledTask -TaskName $task.TaskName
https://stackoverflow.com/questions/30270416
复制相似问题