powershell 将 system.array 转换为数据表

Posted

技术标签:

【中文标题】powershell 将 system.array 转换为数据表【英文标题】:powershell conversting system.array to datatable 【发布时间】: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 【参考方案1】:

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

【讨论】:

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

以上是关于powershell 将 system.array 转换为数据表的主要内容,如果未能解决你的问题,请参考以下文章

在 PowerShell 中调用动态变量

如何将 System::^array 从 C# 函数转换为 C++ 中的等效数据类型

如何测试 System.Array 中的空元素

System.Array 到 List 的转换

System.Array.CopyTo() 和 System.Array.Clone() 之间的区别

System.Array.IndexOf 分配内存