如何在PowerShell中找到两列的总和?

时间:2017-06-29 19:20:07

标签: json powershell

我尝试创建一个PowerShell脚本,该脚本使用响应JSON数据的API查询网站。然后我想获得所选的两列的总和。我是PowerShell脚本的新手,这看起来很简单,但我无法找到答案。希望有人可以提供帮助。

API返回的JSON示例:

{"getuserbalance":{"version":"1.0.0","runtime":4.3599605560303,"data":{"confirmed":0.05500048,"unconfirmed":0.00472891,"orphaned":0}}}

这是我到目前为止所做的:

$balance = 'www.example.com/index.php?page=api&action=getuserbalance'
Invoke-WebRequest $balance |
ConvertFrom-Json |
Select -expand getuserbalance |
select -expand data |
select confirmed, unconfirmed

这给了我:

 confirmed unconfirmed
 --------- -----------
 0.05500048  0.00472891

不确定如何将这两者加在一起。我查看了Measure-Object cmdlet,但没有看到将两列相加的方法。

感谢您的帮助。

谢谢,

Dragnan

1 个答案:

答案 0 :(得分:1)

如果您想仅输出和本身,请使用ForEach-Object cmdlet:

[pscustomobject] @{ name = 'foo'; confirmed = 1; unconfirmed = 2 } | 
  ForEach-Object { $_.confirmed + $_.unconfirmed }

这会产生:

3

为每个输入对象调用传递给{ ... }的脚本块(ForEach-Object),脚本块内的自动变量$_引用手头的输入对象。

要将结果分配给变量,只需将$sum =放在管道之前;对于多个输入对象,$sum将接收值数组

运行Get-Help ForEach-Object了解详情。

如果您想 添加包含的列,请使用计算属性

[pscustomobject] @{ name = 'foo'; confirmed = 1; unconfirmed = 2 } | 
  Select-Object confirmed, unconfirmed, @{ n='combined'; e={ $_.confirmed + $_.unconfirmed } }

这会产生:

confirmed unconfirmed combined
--------- ----------- --------
        1           2        3

要详细了解计算属性,请参阅我的this answer