我有一些代码:
$foo = someFunction
这将输出一条警告消息,我希望将其重定向到$null:
$foo = someFunction > $null
问题是,当我这样做时,虽然成功地抑制了警告消息,但它也有负面的副作用,即没有用函数的结果填充$foo。
如何将警告重定向到$null,但仍然保持$foo填充?
另外,如何将标准输出和标准错误都重定向为null(在Linux中为2>&1
)。
我有一些代码:
$foo = someFunction
这将输出一条警告消息,我希望将其重定向到$null:
$foo = someFunction > $null
问题是,当我这样做时,虽然成功地抑制了警告消息,但它也有负面的副作用,即没有用函数的结果填充$foo。
如何将警告重定向到$null,但仍然保持$foo填充?
另外,如何将标准输出和标准错误都重定向为null(在Linux中为2>&1
)。
6条答案
按热度按时间wixjitnu1#
我更喜欢这种方式来重定向标准输出(本机PowerShell)...
但这也行得通:
要在使用“someFunction”的结果定义$foo之后仅重定向标准错误,请执行以下操作
这实际上与上面提到的相同。
或者重定向来自“someFunction”的任何标准错误消息,然后使用结果定义$foo:
要重定向两者,您有几个选项:
增编:
请注意,(Windows)powershell比基于Linux的操作系统拥有更多的流。以下是list from MS docs:
因此,您可以使用通配符
*>$null
重定向 all 流,也可以使用file代替$null
。amrnrhlw2#
这应该行得通。
yfjy0ee73#
如果要隐藏错误,可以按如下方式执行
vlju58qv4#
应使用
Write-Warning
cmdlet编写警告消息,该cmdlet允许使用-WarningAction
参数或$WarningPreference
自动变量隐藏警告消息。函数需要使用CmdletBinding
来实现此功能。要在命令提示符下缩短它,可以使用
-wa 0
:Write-Error、Write-Verbose和Write-Debug为其相应类型的消息提供类似的功能。
06odsfpq5#
使用函数:
或者如果你喜欢一行程序:
pxyaymoc6#
最近,我不得不关闭Linux主机上的powershell,这并不是很明显,经过反复,我发现在
$( )
中 Package 一个命令,并在 Package 器工作后添加一个显式重定向。我尝试过的其他任何东西都不会--我仍然不知道为什么,因为PowerShell文档的质量令人满意(而且充满了不一致......)
为了在启动时导入所有模块,我添加了以下内容。这会产生一些powershell的stderr输出,如果不使用 Package ,
ErrorAction
或重定向无法将其停止。如果有人能详细说明为什么会这样,我们将不胜感激。