我正在尝试编写一个PowerShell脚本,以供我自己使用,以便在Windows上运行它,因此它会逐渐增加。当我复制脚本并将其粘贴到PowerShell窗口并单击enter时,它运行良好,但当我将脚本内容保存在.ps1文件中并从上下文菜单中使用PowerShell运行它时,它就无法工作。它会立即关闭,并且不会等到间隔条件完成后再进行。
$timer = New-Object Timers.Timer
$iter = 0;
$action = {
$iter += 1;
Write-Host "Interval: $iter";
if ($iter -eq 10) {
Unregister-Event thetimer;
pause;
}
}
$timer.Interval = 1000 #3 seconds
Register-ObjectEvent -InputObject $timer -EventName elapsed –SourceIdentifier thetimer -Action $action
$timer.Start()我简化了剧本。我应该使用什么命令和位置来挂起脚本,直到interval事件结束?
发布于 2018-04-01 13:47:30
计时器脚本块中的pause命令不会影响您启动计时器的父进程。
要使父窗口保持打开状态,直到计时器结束,可以添加一个检查作业状态的循环:
...
$timer.Start()
do {
Start-Sleep -Milliseconds 100
$job = Get-Job -Name 'thetimer'
} while ($job.State -in 'NotStarted', 'Running')https://stackoverflow.com/questions/49598574
复制相似问题