【问题标题】:Async event not firing in Powershell Core 6Powershell Core 6 中未触发异步事件
【发布时间】:2018-06-04 19:19:33
【问题描述】:

我有一个 powershell 模块,它使用异步计时器事件来监控和触发操作。

在 windows 的 powershell 终端中启动时可以正常工作。

我很想知道它是否可以在 Raspberry Pi 上使用 Powershell Core 运行。差不多了!

异步事件似乎没有正确触发,但后来我注意到,如果我与终端交互,我将开始看到 Verbose 日志语句吐出,然后异步事件将触发。因此,例如,我知道我的脚本应该添加一个计时器事件以在 10 秒内触发 - 但它永远不会触发 - 但是如果我与终端交互(即使按下 Esc 键就足够了),详细日志会吐出,我可以看到正在记录的计时器事件,它将成功触发。

对此有什么想法吗?关于如何启动脚本以使其按预期工作以及它如何在 Windows 中的 powershell 终端下工作的任何想法?我的解决方法是在异步部分启动后运行一个同步无限循环,以保持事物的活力并模仿我与终端的交互。但如果有一种更简洁的方法可以在 Raspberry Pi 上启动并使其正常工作,我会更喜欢。

【问题讨论】:

  • 只是为了结束这个问题,因为它已经开放了一年而没有发表评论。我还在 MS PS Core 论坛中问过这个问题,但没有任何建议说明为什么它在 Windows PowerShell 终端会话中运行良好,但在 Linux PS 终端上却不行。因此,我确实继续实施了一个足够简洁且可以接受的 IMO 解决方法。对于阅读本文并遇到类似问题的任何人,您可以查看此项目中的代码并了解我如何使其工作:github.com/cathalmchale/hue

标签: powershell-core


【解决方案1】:

有关 Linux PS Core 后台事件的解决方案/解决方法与在 Windows 的 PowerShell 上的触发方式不同,请参阅此项目: https://github.com/cathalmchale/hue

特别看这个 Pester 单元测试: https://github.com/cathalmchale/hue/blob/master/Hue.Script/Hue.Script.Tests.ps1

BDD 风格的测试,使用 Given、When、Then 表示法询问并回答问题: 给定:在 Pi 上的 Powershell Core 中运行的脚本模块。 时间:在保持活动模式下启动灯光监视器。 然后:进入轮询循环。

这个无限/轮询循环允许后台事件在 Linux PS Core 终端会话上触发。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2019-02-25
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多