【发布时间】:2016-11-14 21:50:38
【问题描述】:
我创建了一个 powershell 界面,它主要收集信息,然后通过 Start-Job 将该信息发送到外部 PS 脚本。我有一个每秒触发接收作业的计时器,并使用我创建的作业的 STDOUT 更新输出框。
外部 PS 脚本:
此脚本有许多功能(使用许多 cmdlet),并将通过 Write-Verbose 将消息打印到日志中。问题是,有时在这些函数中我会打印消息和/或返回一个值。
众所周知,函数返回的任何内容都会放入标准输出中。因此,只要函数返回一个值,该值就会打印到输出富文本框控件中。我不想要那个。另外,如果我使用 VERBOSE,则消息不会在控件中打印(但是,它会打印到控制台)
我想要什么: 仅将消息打印到我的富文本框和日志文件,流中没有函数返回值(除非它们是消息本身的一部分)。
注意:我正在将此应用程序从 VB.NET 应用程序重写为 Powershell Studio 应用程序...我之前注意到这是通过将 STD 输出流式传输到文本框来完成的,使用类似的外部 powershell 脚本——除了该脚本使用的是 WRITE-HOST。这对我来说没有意义,因为 write-host 甚至不应该被放入流中。
替代方法:
我有一个工作示例,让 Job 添加到日志本身,然后让 UI 运行 Get-Content -tail 1... 这将工作,除了我的一些消息将打印在多个线,它不会像预期的那样拉动一切。如果有人有办法让我随时在日志中获取任意 X 行新行,请告诉我。这可能比我目前的方法更容易。
【问题讨论】:
标签: powershell user-interface logging live