2017-07-07 96 views
0

我已经称为阵列或PSCustomObject:$results = @()的powershell - 添加数组现有嵌套哈希表

我有称为嵌套哈希表:$allResults = @{}

$results |ft,显示了这种在控制台:

Brokering  Name    WriteCacheSize dFreeSpace (and more...) 
---------  ----    -------------- ----------    
N/A    server0001  0,004   22,83    
N/A    server0002  0,004   21,86   

$allresults |ft显示了这个:

Name      Value             
----      ---- 
server0001      {SCOMStatus, PVSServer, RegistrationState, ServerLoad...} 
server0001      {SCOMStatus, PVSServer, RegistrationState, ServerLoad...}      

这个名字在两个共同的$。应该有一种方法将$results中的值添加到$allresults,但我不知道该怎么做。

我想在散列嵌套表中的一切。如何将$results中的值添加到$allresults。目标是拥有一个嵌套的表格和每个值。

+0

您的意思是'$ allResults'散列表包含的值是您的自定义对象吗? –

+0

我没有访问实际的对象来测试它,但尝试:['$ results,$ allresults |联盟| ft'](https://stackoverflow.com/questions/44428189/not-all-properties-displayed/44429084#44429084) – iRon

+0

或者试试:[$ results,$ allresults |合并散列表| ft](https://stackoverflow.com/questions/8800375/merging-hashtables-in-powershell-how/32890418#32890418) – iRon

回答

0

如果您尝试将数组的值添加到散列表,则可以遍历数组并使用$allresults.Add(<key>,<value>)

0

感谢大家的回应。 我终于做到了。我用自定义属性创建了另一个对象,然后填满了散列表。 这是代码:

$myObjectProperties = @(
"Brokering" 
"PVSServer" 
"Name" 
"VDA" 
"WMI" 
"vDisk" 
"dFreeSpace" 
"WriteCacheSize" 
"Spooler" 
"CitrixPrint" 
"Uptime" 
"cFreeSpace" 
"RunspaceId" 
) 
foreach ($element in $results){ 
    foreach ($property in $myObjectProperties){ 
     $allresults.$($element.Name).$property = $element.$property 
    } 
}