我在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
,但最终会打印Ready
,Ready
。
我还注意到任务调度程序中的状态在任务进行时没有改变,就像用鼠标右键单击并选择运行一样。有关详细信息,请参阅this thread。
我正在寻找任何方法来检查是否在PowerShell中完成了任务。
我在PowerShell中寻找某种形式的回调,但却找不到任何东西。
答案 0 :(得分:2)
CIM对象不会自动更新。您必须手动刷新它们:
$task=$task|Get-CimInstance
现在您可以重新检查State
属性的值。