2017-06-29 20 views
1

我正在嘗試創建一個PowerShell腳本,該腳本使用響應JSON數據的API來查詢網站。然後我想要得到所選兩列的總和。我是PowerShell腳本的新手,這看起來很簡單,但我找不到答案。希望有人能幫助。如何查找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

如果你想只輸出總和本身,使用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