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

macOS下PowerShell的Get-Process输出ProcessName被截断如何解决?

解决macOS上PowerShell Get-Process进程名截断问题

在macOS上,PowerShell的Get-Process依赖BSD风格的ps工具,默认会将进程名截断至15字符——这是底层工具的限制,并非PowerShell格式化输出的问题,所以Format-Custom或Format-List -Force这类格式化命令无法解决,因为ProcessName属性本身已经是截断后的值。

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

方法一:通过原生ps命令获取完整进程名

使用ps的comm=参数可以输出未截断的完整进程名,再转换成PowerShell对象方便后续处理:

# 筛选Google相关进程,输出PID和完整进程名
ps -axo pid,comm= | Where-Object { $_ -match 'Google' } | ForEach-Object {
    # 拆分PID和进程名(按空格拆分,只拆一次)
    $pid, $fullName = $_ -split '\s+', 2
    [PSCustomObject]@{
        Id = [int]$pid
        FullProcessName = $fullName
        # 可选:关联Get-Process的完整进程对象
        Process = Get-Process -Id $pid -ErrorAction SilentlyContinue
    }
}

方法二:从进程命令行提取完整名称

通过读取进程的命令行参数,提取完整的进程路径和名称:

Get-Process google* | ForEach-Object {
    # 读取进程命令行(macOS进程的cmdline用null分隔,替换为空格)
    $cmdLine = (Get-Content "/proc/$($_.Id)/cmdline" -Raw -ErrorAction SilentlyContinue) -replace "`0", " "
    if ($cmdLine) {
        $fullName = Split-Path $cmdLine -Leaf
    } else {
        #  fallback到截断的名称,或者用ps命令补全
        $fullName = (ps -p $_.Id -o comm=).Trim()
    }
    [PSCustomObject]@{
        Id = $_.Id
        TruncatedProcessName = $_.ProcessName
        FullProcessName = $fullName
        FullCommandLine = $cmdLine?.Trim()
    }
}

注意:/proc文件系统在部分macOS环境中可能不可用,此时可以用ps -p $_.Id -o comm=作为备选方案获取完整名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:15:41