使用Powershell检查计划任务是否已完成

时间:2015-07-17 20:23:01

标签: powershell scheduled-tasks powershell-v4.0

我在Windows Server 2012的任务计划程序中有几个计划任务。我通过PowerShell运行这些任务

 
$Tasks = Get-ScheduledTask -TaskPath "\PathHere\"
Foreach($task in $Tasks)
{
    Start-ScheduledTask | Where {$_.TaskName -notlike 'someExample'}
}

我正在寻找一种方法来检查任务何时完成。我想我可以检查$Tasks中任务的状态,但是在编写示例代码以复制问题时......

$task = Get-ScheduledTask someTask -TaskPath "\PathHere\"
Write-Host "State: $($task.State)"
Start-ScheduledTask $task.TaskName -TaskPath "\PathHere\"
Write-Host "State: $($task.State)"

我希望此代码生成Ready,然后生成Running,但最终会打印ReadyReady

我还注意到任务调度程序中的状态在任务进行时没有改变,就像用鼠标右键单击并选择运行一样。有关详细信息,请参阅this thread

我正在寻找任何方法来检查是否在PowerShell中完成了任务。

我在PowerShell中寻找某种形式的回调,但却找不到任何东西。

1 个答案:

答案 0 :(得分:2)

CIM对象不会自动更新。您必须手动刷新它们:

$task=$task|Get-CimInstance

现在您可以重新检查State属性的值。