【发布时间】:2020-03-14 21:08:17
【问题描述】:
我有一个这样的哈希数组:
$weeklyStats[$RecipientName][$weekNr][$total]
这是在循环中创建的:
$weeklyStats = @{}
$weekNr = get-date -UFormat %V
ForEach ($RecipientName in $MailTraffic.keys)
{
$weeklyStats[$RecipientName] = @{}
$weeklyStats[$RecipientName][$weekNr] = @{}
$weeklyStats[$RecipientName][$weekNr]['Total'] = 0
$weeklyStats[$RecipientName][$weekNr]['Sent'] = 0
$weeklyStats[$RecipientName][$weekNr]['Received'] = 0
foreach($item in $MailTraffic[$RecipientName].keys)
{
weeklyStats[$RecipientName][$weekNr]['Total'] =+ 1
if $MailTraffic[$RecipientName]['transaction'] == "Sent"
{
$weeklyStats[$RecipientName][$weekNr]['Sent'] =+ 1
}
else
{
$weeklyStats[$RecipientName][$weekNr]['Received'] =+ 1
}
}
}
我不知道如何在 Powershell 中“转储”一个变量,但这里是 json 中的内容:
{
"mike": {
"11": {
"Total": 411,
"Sent": 21,
"Received":390,
}
},
"peter": {
"11": {
"Total": 751,
"Sent": 51,
"Received":700,
}
},
"frank": {
"11": {
"Total": 620,
"Sent": 20,
"Received":600,
}
},
}
我想按 $total 的降序打印键和值。 如果哈希表只有一层深,我只能找到如何做到这一点的示例。
预期的输出是:
Name Total Received Sent
----- ----- ----- -----
peter 751 700 51
frank 620 600 20
mike 411 390 21
【问题讨论】:
-
$stats、$name和$total在这里包含什么? -
这包含在我的问题中吗? $stats 是哈希表的名称,$name 是字符串,weeknr 和 total 是整数。
-
我宁愿从控制台看到
$stats的输出。 -
为了得到你的输出,我设想
$stats被创建为$stats = @{'Frank' = @{10 = @{ 500 = 'Frank , 10, 500'}}},@{'Mike' = @{10 = @{ 673 = 'Mike , 10, 673}}}。我敢打赌,那是不正确的。所以我想看看它是如何真正创建的。 -
为了让您从
$stats[$name][$weekNr][$total]输出Frank , 10, 500,您必须有一个静态设置所有值的字符串,因为您的两个示例与间距不一致,因此它是插值输出。
标签: powershell