我在linux上使用pwsh运行一些特定的powershell模块。
我想把接收到的数据输出到文件描述符3,我想要文件描述符3上的数据,因为Powershell不遵守stdout是数据和stderr是日志的约定。我希望文件描述符3充当我们的“数据”文件描述符。
最终目标是在我们用Python包装这个powershell调用时能够这样做,并且我们将自己重定向文件描述符3数据
pwsh -f script.ps1 3>data
发布于 2022-11-04 15:01:20
除了stdout (1)和stderr (2)之外,1没有内置的输出到流的方式(下面将详细介绍)。
可以想象,您可以使用.NET API和/或P/Invoke调用提交自己的输出行为,但这将非常麻烦。
但是,可能不需要这样做:
2>重定向,则可以将PowerShell错误流重定向到stderr。以下调用,例如来自bash的调用,说明了这一点:
# Prints just 'hi', because the error-stream output was
# redirected to stderr thanks to 2>, and due to targeting /dev/null, suppressed.
pwsh -noprofile -c '"hi"; Write-Error no!' 2>/dev/null缺点是,如果您也想打印stderr输出,则必须在文件中捕获它,然后再打印它,这意味着它(a)在生成时不会出现,(b)因此不会与任何stdout输出正确交织。
作为旁白:
https://stackoverflow.com/questions/74317443
复制相似问题