You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中抑制Docker Info输出并获取正确退出状态

正确检查Docker是否运行的PowerShell实现方式

在PowerShell 5.1里,你之前遇到的问题根源在于:(docker info) 2>&1>$null这种写法会让$?的结果不再反映docker info的执行状态,而是反映重定向操作本身是否成功——不管Docker有没有运行,重定向操作都是成功的,所以$?始终返回True,自然判断失效。

下面是两种可靠的实现方式:

方法一:通过退出码判断(推荐)

直接捕获docker info的退出码,Docker正常运行时退出码为0,未运行或异常时为非0值:

# 抑制所有输出(成功流+错误流)
docker info *>$null
# 根据退出码判断Docker是否运行
$isDockerRunning = $LASTEXITCODE -eq 0
# 输出结果
$isDockerRunning

方法二:用Out-Null处理输出

如果习惯用管道处理输出,也可以这样写,核心还是依赖退出码:

# 将所有输出(包括错误)导向Out-Null
docker info 2>&1 | Out-Null
# 判断退出码是否为0
$isDockerRunning = $LASTEXITCODE -eq 0
$isDockerRunning

补充说明

$?在PowerShell中仅表示上一条命令是否产生非终止错误,当你把错误流重定向到成功流后,原本的错误被转化为普通输出,PowerShell会认为上一步操作完全成功,所以$?就失去了判断Docker状态的作用。而$LASTEXITCODE会直接记录外部命令(比如docker)的退出状态码,是判断外部命令执行结果的更可靠方式。

内容的提问来源于stack exchange,提问作者Fang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:26:04