#powershell存储和检索从/到数组或哈希表的值

时间:2016-02-17 23:37:25

标签: arrays powershell

我想知道是否有一种方法可以在哈希表或数组中存储/检索数据。例如,    

 $a = get-process 

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id  SI ProcessName                                                                                                            
-------  ------    -----      ----- -----   ------     --  -- -----------                                                                                                            
    156       9     1924        220 ...23     0.06   3788   4 ActionUriServer                                                                                                        
    364      19    10676      22196 ...01     0.75  11432   4 ApplicationFrameHost                                                                                                   
    155       9     6360      10388 ...98     5.47  14940   0 audiodg    

我需要将它存储在变量中。当我希望重试这个时,我应该能够使用索引值。 例如

 $a[1][1] 
应该抓住我的价值'处理'

我粗略了解多维数组,但是,不确定如何将这些值推送到变量并将其编入索引。

 foreach 
锻炼?

1 个答案:

答案 0 :(得分:0)

如果确实想要解析格式化的输出而不是对Get-Process返回的对象进行操作(或自定义格式设置)使用其中一个Format-* cmdlet),您可以尝试:

Get-Process | Out-String -Stream | % { $a = @() } { $a += $null; $a[-1] = -split $_  }
  • Out-String -Stream是获取Get-Process返回的对象的格式化输出字符串表示所必需的,-Stream通过管道单独传递每个结果行(通过默认情况下,Out-String会立即传递整个结果字符串)。

  • 上面很简单,但效率不高,因为为每个输入行重新创建了数组;为了解决这个问题,您可以使用[System.Collections.Generic.List[string[]]]实例。

  • PowerShell数组基于0,所以它包含$a[1][0]

    Handles
    • row 1的原因是格式化的输出以空行开头,但可以轻松修复。)