2016-05-17 52 views
1

我正在返回一個可能以json格式返回的Web服務調用,而且它確實看起來是有效的json。作爲字符串,它看起來像這樣:枚舉Powershell中的JSON結果時只能看到'rows = System.Object []'

{「total」:10,「rows」:[{「process」:「VISIO.EXE」,「computer_id」:57,「last_used」:「2016-04 -20T01:34:09Z 「},{」 過程 「:」 VISIO.EXE 「 」COMPUTER_ID「:64, 」last_used「: 」2016-04-01T04:09:35Z「},{ 」過程「:」 VISIO .EXE 「 」COMPUTER_ID「:181, 」last_used「: 」2016-03-10T23:02:53Z「},{ 」過程「: 」VISIO.EXE「, 」COMPUTER_ID「:230, 」last_used「:」 2016 -04-19T05:31:32Z 「},{」 過程 「:」 VISIO.EXE」, 「COMPUTER_ID」:237, 「last_used」: 「2016-04-04T10:23:23Z」},{ 「過程」: 「VISIO.EXE」, 「COMPUTER_ID」:284, 「last_used」: 「2016-04-15T10:54:29Z」},{ 「過程」: 「VISIO.EXE」, 「COMPUTER_ID」:8401, 「last_used」: 「2016-05-12T21:55:39Z」},{ 「過程」: 「VISIO.EXE」, 「COMPUTER_ID」:9045, 「last_used」: 「2016-05-12T08:10:40Z」},{「過程「:」 VISIO.EXE 「 」COMPUTER_ID「:9527, 」last_used「: 」2016-05-11T00:49:11Z「},{ 」過程「: 」VISIO.EXE「, 」COMPUTER_ID「:10198,」 last_used 「:」2016-05-06T06:59:29Z「}]}

我想通過使用以下腳本來枚舉結果。我已經嘗試了所有列出的選項1-4,一次取消註釋,但我無法獲得多於一個的結果。

任何想法,我做錯了什麼?

$url = 'https://servername:port/api/sam/raw_app_usage_property_values?criteria={"and":[["process","=","visio.exe"]]}&limit=100&columns[]=process&columns[]=computer_id&columns[]=last_used' 
# option 1. get all results, we see a full list of processes, full string returned 
#$results = Invoke-WebRequest -Uri $url -Method GET -Headers $headers 
#write-host $results 
# option 2. get all results but break them down as part of the request. Only one result returned - @{total=10; rows=System.Object[]} 
#$results = Invoke-WebRequest -Uri $url -Method GET -Headers $headers | ConvertFrom-Json 
#write-host $results 
# option 3. use a different method, which supposedly breaks down the request natively. Only one result returned - @{total=10; rows=System.Object[]} 
#$results = Invoke-RestMethod -Uri $url -Method GET -Headers $headers 
#write-host $results 
# option 4. get content directly from file, only one result returned - @{total=10; rows=System.Object[]} 
#$results = (Get-Content -path "C:\temp\raw_app_usage_property_values.json" -raw) 
# is there anything in the array? 
foreach ($result in $results) { 
    write-host $result 
} 
+0

你需要,如果你有一個字符串爲使用'ConvertFrom-JSON'(從'調用-WebRequest'或'GET-Content'),或使用'調用,RestMethod'在你可以做@ mark-bertenshaw建議之前,它隱式地從JSON轉換而來。 – TessellatingHeckler

+0

你的'$ results'和'$ results.rows'的值究竟是什麼? – Bum

回答

0

您似乎正在獲取數據。請記住,返回的對象有兩個屬性,「total」和「rows」。

嘗試:

foreach ($result in $results.rows) { 
    write-host $result 
} 
+0

謝謝,你發現了。 :) – user1151482