首页 > 解决方案 > 立即执行计时器操作(而不是等待 Timer.interval)[Powershell3]

问题描述

当前执行基于定时器的动作,在指定的定时器间隔后激活动作。

我想要一个基于重复计时器的动作,但是当将其设置为更长的间隔(例如 1 小时)等时,必须有一种方法来测试动作块是否正确执行,而不必等待整个间隔。

是否可以立即激活操作,而不是在 Timer.interval 之后等待它开始?

***Console***

 17-08-2020 07:30:18 Script_Started
    
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
4      Timer.Elapsed                   NotStarted    False                                 Write-Host  $n


17-08-2020 07:30:28 Action block executed after Interval = 10000  
17-08-2020 07:30:38 Action block executed after Interval = 10000  



***Script***   
$Timer = New-Object System.Timers.Timer
$objectEventArgs = @{
    InputObject = $Timer
    EventName = 'Elapsed'
    SourceIdentifier = 'Timer.Elapsed'
}

$Timer.Interval = 1000 * 10 
$Timer.Autoreset = $True
$Timer.Enabled = $True


$global:n = "  Action block executed after Interval = " +  $Timer.Interval


Write-Host $((Get-Date).ToString() + "  Script_Started")

$action = { Write-Host  $(Get-Date).ToString() + $n } 

Register-ObjectEvent @objectEventArgs -Action $action


#Unregister-Event  -SourceIdentifier 'Timer.Elapsed' 

标签: powershell-3.0

解决方案


推荐阅读