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