记录Powershell作业结果

记录Powershell作业结果,powershell,user-interface,logging,live,Powershell,User Interface,Logging,Live,我创建了一个powershell接口,它主要收集信息,然后通过启动作业将信息发送到外部PS脚本。我有一个计时器,每秒触发Receive作业,并用我创建的作业中的标准输出更新输出框 外部PS脚本: 此脚本有许多函数(使用许多cmdlet),并将通过将详细信息写入日志来打印消息。问题是,有时在这些函数中,我打印消息和/或还返回值 众所周知,函数返回的任何内容都会放入标准输出中。因此,每当函数返回一个值时,该值就会打印到输出丰富的Textbox控件中。我不想那样。另外,如果我使用的是VERBOSE,则

我创建了一个powershell接口,它主要收集信息,然后通过启动作业将信息发送到外部PS脚本。我有一个计时器,每秒触发Receive作业,并用我创建的作业中的标准输出更新输出框

外部PS脚本:

此脚本有许多函数(使用许多cmdlet),并将通过将详细信息写入日志来打印消息。问题是,有时在这些函数中,我打印消息和/或还返回值

众所周知,函数返回的任何内容都会放入标准输出中。因此,每当函数返回一个值时,该值就会打印到输出丰富的Textbox控件中。我不想那样。另外,如果我使用的是VERBOSE,则消息不会打印在控件中(但是,它会打印到控制台)

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

注意:我正在将此应用程序从VB.NET应用程序重新编写到Powershell Studio应用程序。。。我之前注意到,这是通过将STD输出流式传输到文本框中完成的,使用类似的外部powershell脚本——除了该脚本使用WRITE-HOST之外。这对我来说毫无意义,因为写主机甚至不应该被放入流中

替代方法


我有一个工作示例,让作业添加到日志本身,然后让UI运行Get Content-tail 1。。。这是可行的,只是我的一些消息会被打印在多行上,而且不会像预期的那样提取所有内容。如果有人有办法让我在任何时候都能在日志中获得任意X个新行,请告诉我。这可能比我目前的方法更简单。

那么基本上你想反向使用powershell?函数应仅返回实际输出流中所需的值,任何不应向流返回值的内容都应在变量中捕获或发送到
Out Null
,如果要提供有关命令正在执行的操作的信息,这正是
write verbose
的目的。而Write Verbose正在按预期工作,就像Write host一样,它没有被放入流中


要回答您的问题,您应该做的是重写您的函数,使它们返回单个值(如果合适的话,也可以不返回任何值),对于无法重写的函数,您可以通过将它们指定给变量(如果以后必须使用)来抑制它们在脚本中的输出或者简单地将它们输送到
输出Null
。当前在详细流中捕获的、需要作为输出一部分的任何内容也应移到标准流中,并使用
写入输出
写入,如果您只希望在某些运行中使用该数据,则可能会使用“If”语句将其环绕,但是,如果您真的想将详细流与标准流结合起来,您可以在此处查看信息-

那么基本上您想反向使用powershell?函数应仅返回实际输出流中所需的值,任何不应向流返回值的内容都应在变量中捕获或发送到
Out Null
,如果要提供有关命令正在执行的操作的信息,这正是
write verbose
的目的。而Write Verbose正在按预期工作,就像Write host一样,它没有被放入流中


要回答您的问题,您应该做的是重写您的函数,使它们返回单个值(如果合适的话,也可以不返回任何值),对于无法重写的函数,您可以通过将它们指定给变量(如果以后必须使用)来抑制它们在脚本中的输出或者简单地将它们输送到
输出Null
。当前在详细流中捕获的、需要作为输出一部分的任何内容也应移到标准流中,并使用
写入输出
写入,如果您只希望在某些运行中使用该数据,则可能会使用“If”语句将其环绕,但是,如果您真的想将详细流与标准流结合起来,您可以在此处查看信息-

out Null或将函数结果分配给变量,请执行我现在需要的操作。谢谢我试图适应一种情况,当我需要一个值在流中时,但我想我可以用这种方式处理它。听起来不错,一般来说,你希望你的函数是原子的,所以只返回你实际上想要成为输出流一部分的值,在verbose warning或error streams.Out-Null或将函数结果分配给变量中需要的任何内容都可以执行我现在需要的操作。谢谢我试图适应一种情况,当我需要一个值在流中时,但我想我可以用这种方式处理它。听起来不错,一般来说,您希望您的函数非常原子化,因此只返回您实际希望成为输出流一部分的值,以及您希望在详细警告或错误流中返回的任何其他值。