记录Powershell作业结果

记录Powershell作业结果

问题描述:

我创建了一个基本上收集信息并通过Start-Job将该信息发送到外部PS脚本的PowerShell界面。我有一个计时器,每秒都会触发接收作业,并使用我创建的作业中的STDOUT更新输出框。记录Powershell作业结果

外部PS脚本:

此脚本具有许多功能(其利用许多小命令),并且将打印通过写详尽以一个日志消息。问题是,有时在这些函数中我会打印消息和/或返回一个值。我们都知道,函数返回的任何东西都放在标准输出中。因此,只要函数返回一个值,该值就会打印到输出Rich Textbox控件中。我不想那样。另外,如果我使用的详细,并没有被打印在控制(不过,它被打印到控制台)

我想什么消息:唯一 打印邮件到我的富文本框和我的日志文件,在流中没有函数返回值(除非它们是消息本身的一部分)。

注意:我重写从VB.NET应用程序这个应用程序,以一个PowerShell工作室应用......我注意到以前这被正在通过流STD输出到文本框中完成,采用了类似外部PowerShell脚本 - 除了脚本使用WRITE-HOST。这对我来说没有意义,因为写主机甚至不应该放入流中。

另类视角

我不得不让工作添加到日志本身,然后具有UI运行获取内容-tail 1 ...这会工作的工作示例,除了一些我的信息将被印在不止一行上,并且不会按预期拉动所有内容。如果有人有办法让我在任何时候都能在日志中获得任意数量的新行,请告诉我。这可能比我目前的方法更容易。

所以基本上你想使用PowerShell向后?函数只应返回实际输出流中所需的值,如果想要提供有关该命令正在执行的操作的信息,则应将任何不应将值返回到流中的变量或发送到Out-Nullwrite-verbose的用途。 Write-Verbose按预期工作,就像写主机一样,它不会被放入流中。

要回答你的问题,你应该做的是重写你的函数,以便它们返回一个值(或者根本没有值),对于不能被重写的函数,你可以通过脚本禁止它们的输出或者将它们分配给一个变量(如果它们必须稍后使用),或者将它们分配给Out-Null。当前需要成为输出一部分的详细流中捕获的任何内容也应该移动到标准流中,并使用Write-Output编写,如果您只希望某些运行中的数据包含If语句,但是如果你真的想要将详细流与标准流结合起来,你可以在这里查看信息 - Redirect two or more Powershell streams other than output stream to the same file

+0

Out-Null或将函数结果赋值给变量做我现在需要的东西。谢谢。当我需要一个值在流中的时候,我试图去适应这种情况,但是我想我可以用这种方式来处理它。 – Zephyrus1898

+0

听起来不错,一般来说你希望你的函数是非常原子的,所以只需要返回你真正想要成为输出流的一部分的值,在你想要的详细警告或错误流中你想要的任何东西。 –