【问题标题】:powershell conversting system.array to datatablepowershell 将 system.array 转换为数据表
【发布时间】:2016-06-28 20:19:45
【问题描述】:

我有以下查询,它会生成进程列表及其内存利用率。

$Process2Ram = 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'}

我正在尝试弄清楚如何将其转换为数据表。我在想这样的事情。

$table = new-object “System.Data.DataTable”
$table.Load($Process2Ram)

不用说,这是行不通的。任何人都知道我该如何做到这一点,并了解它为什么不起作用。

谢谢。

【问题讨论】:

  • 请发布您希望如何返回数据的示例。更好的是指向类似问题的链接,该链接说明了您想要的输出格式。
  • 不要使用Format-Table,而是使用Select-Object
  • 你在找Out-DataTable
  • 结果的格式正是您在运行查询时看到的。一列是进程名称,另一列是它当前使用的内存。运行查询,您将确切地看到我的目标。我只是想把它放到一个数据表中,以便在以后的步骤中使用它。 Out-datatable 似乎对此不起作用,但很高兴知道。
  • Select-Object替换Format-Table然后使用Out-DataTable

标签: powershell


【解决方案1】:

我同意 Mathias 的观点,我必须努力学习这一点。当您使用 Format-Table 时,您实际上是在清除您正在格式化的所有属性/成员。你到底想用这个数据表做什么?

【讨论】:

  • 我只是想获取所有当前正在运行的进程和每个进程正在使用的内存的列表。 get-process 查询可以满足我的需要,但是在尝试将其加载到数据表中以便我可以使用它做更多事情时,它不想玩得很好。我尝试了选择对象而不是格式表,并打破了整个查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多