【问题标题】:JSON output different from the output of format table [duplicate]JSON输出不同于格式表的输出[重复]
【发布时间】:2016-04-10 09:36:16
【问题描述】:

我正在尝试通过 PowerShell 命令获取进程名称和进程内存使用情况:

Get-Process | Group-Object -Property ProcessName |
    Format-Table Name, @{n='Mem (KB)';e={
        '{0:N0}' -f (($_.Group|Measure-Object WorkingSet -Sum).Sum / 1KB)
    };a='right'} -AutoSize

但是当我使用ConvertTo-Json 进行管道传输时,输出不同,这让我得到了 ClassID、outOfBand 的详细信息,这不是我期望的输出。 我希望以与屏幕上显示的方式完全相同的方式(名称和内存 (KB))输出,但采用 JSON 格式。

【问题讨论】:

  • 不要将Format-Table 输出到ConvertTo-Json - 使用Select-Object 而不是Format-Table
  • @MathiasR.Jessen 但是我该如何计算内存大小呢?当我使用 Format-Table 它计算但使用 Select-Object 它不计算进程使用的内存
  • Select-Object 接受计算属性,就像Format-Table 一样。如果您需要合格的帮助,请显示不起作用的代码:)
  • @MathiasR.Jessen 谢谢我想通了:) 并回答了这个问题。

标签: json powershell


【解决方案1】:

解决这个问题的方法是使用Select-Object而不是Format-Table

Get-Process | Group-Object -Property ProcessName |
    Select-Object Name, @{n='Mem';
        e={(($_.Group|Measure-Object WorkingSet -Sum).Sum / 1KB)}} |
    ConvertTo-Json

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-11
    • 2016-04-24
    • 2014-12-12
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多