从 SSIS 调用 Powershell 脚本时无法检索 stderror 和 stdout

Unable to retrieve stderror and stdout when calling a Powershell script from SSIS

我有一个 SSIS 程序包,它调用一些 powershell 脚本来使用 Web 服务。问题是,当我写入 stderror 或 stdout 时,StandardErrorVariable 和 StandardOutputVariable 没有从脚本中获取任何写入它们的内容。

脚本执行得很好,所以调用脚本不是问题,标准输出流似乎没有返回到 SSIS。以下是执行流程任务的设置方式:

我尝试了多种从 powershell 写入输出的方法。大多数消息来源似乎表明 Write-Information 应该适用于 stdout,我在此线程中使用 mklement0 的答案,但也尝试了 Write-Error 但均无效:How do I write to standard error in PowerShell?

有什么想法吗?

我用Write-Host输出到stdout,write-Error "Message" -ErrorAction Stop写到stdout。我记得在使用 Write-Error 时遇到问题,但没有指定我想要一个终止错误,因此尝试为每个 Write-Error 设置 ErrorPreference 或通过在脚本的早期设置 $ErrorPreference 。正如评论中所提到的,关于 powershell 流的工作方式有些古怪,我没有 understand/others 可以解释为什么比我能做的更好。

另一件事是我总是将 WindowStyle 设置为隐藏。我不确定这会如何影响 stdout/err/in 流,但是当 运行 PS 来自 SSIS 内部时,这让我省去了其他麻烦。