首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止PowerShell脚本在运行计时器事件时立即关闭?

如何防止PowerShell脚本在运行计时器事件时立即关闭?
EN

Stack Overflow用户
提问于 2018-04-01 13:28:51
回答 1查看 261关注 0票数 0

我正在尝试编写一个PowerShell脚本,以供我自己使用,以便在Windows上运行它,因此它会逐渐增加。当我复制脚本并将其粘贴到PowerShell窗口并单击enter时,它运行良好,但当我将脚本内容保存在.ps1文件中并从上下文菜单中使用PowerShell运行它时,它就无法工作。它会立即关闭,并且不会等到间隔条件完成后再进行。

代码语言:javascript
复制
$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事件结束?

EN

回答 1

Stack Overflow用户

发布于 2018-04-01 13:47:30

计时器脚本块中的pause命令不会影响您启动计时器的父进程。

要使父窗口保持打开状态,直到计时器结束,可以添加一个检查作业状态的循环:

代码语言:javascript
复制
...
$timer.Start()

do {
    Start-Sleep -Milliseconds 100
    $job = Get-Job -Name 'thetimer'
} while ($job.State -in 'NotStarted', 'Running')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49598574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档