我正在使用带有C#的4.0参考程序集的System.Management.Automation。我需要查看Write-Host的输出。文档中写道,Write-Host将被输出到输出流中。在使用powershell 4.0的参考程序集时,如何获取C#中的Write-Host输出流?
我知道,在Powershell版本5.0中后来添加了信息管道,并且Write-Host和Write-Information始终将输出传输到信息管道中。
但是在使用powershell 4.0 的参考程序集时,我需要查看Write-Host的输出。使用下面的代码,我无法在任何地方看到Write-Host的输出。即使是在输出和输出集合中也看不到。
目前,我已经订阅了以下流。
我知道,在Powershell版本5.0中后来添加了信息管道,并且Write-Host和Write-Information始终将输出传输到信息管道中。
但是在使用powershell 4.0 的参考程序集时,我需要查看Write-Host的输出。使用下面的代码,我无法在任何地方看到Write-Host的输出。即使是在输出和输出集合中也看不到。
目前,我已经订阅了以下流。
using (var powerShell = PowerShell.Create(iss))
{
var psScript = "Write-Host test input";
powerShell.AddScript(psScript);
powerShell.Streams.Debug.DataAdding += OnDebugDataAdding;
powerShell.Streams.Error.DataAdding += OnErrorAdding;
powerShell.Streams.Warning.DataAdding += OnWarningAdding;
powerShell.Streams.Verbose.DataAdding += OnVerboseAdding;
var outputCollection = new PSDataCollection<PSObject>();
outputCollection.DataAdding += OnOutputDataAdding; // all spitted outputs getting into outputCollection
powerShell.Invoke(null, outputCollection);
}