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

如何过滤WSL命令纯文本输出?仅显示运行中的虚拟机

解决WSL虚拟机状态筛选问题

你的问题出在wsl -l -v的输出是纯文本格式,不是PowerShell可识别的结构化对象,而Select-Object NAME是针对对象属性的操作,自然找不到对应属性,所以输出空行。

以下是几种可行的解决方法:

方法1:直接匹配文本行

用Where-Object筛选包含Running的行,简单直接:

# 包含表头的结果
wsl -l -v | Where-Object { $_ -match 'Running' }

# 只显示运行中的虚拟机(跳过表头)
wsl -l -v | Select-Object -Skip 1 | Where-Object { $_ -match 'Running' }

方法2:转换为结构化对象后筛选

先把文本输出转换成PowerShell对象,这样可以更灵活地筛选、提取字段:

wsl -l -v | Select-Object -Skip 1 | ForEach-Object {
    # 按空格分割,最多分成3部分(处理名称含空格的情况)
    $splitLine = $_ -split '\s+', 3
    [PSCustomObject]@{
        Name    = $splitLine[0]
        State   = $splitLine[1]
        Version = $splitLine[2]
    }
} | Where-Object State -eq 'Running' | Select-Object Name

执行后会只输出运行中虚拟机的名称。

方法3:借助WSL的grep命令

如果你的WSL环境已安装grep,可以直接在管道中调用WSL的grep工具筛选:

# 包含表头
wsl -l -v | wsl grep Running

# 只显示运行中的虚拟机
wsl -l -v | Select-Object -Skip 1 | wsl grep Running

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:15:33