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

Checking Scheduled Tasks for completion with Powershell

我在 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 中寻找某种形式的回调,但找不到任何东西。

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

$task=$task|Get-CimInstance

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