Я довольно новичок в powershell и еще не привык к нему. Я пытаюсь удалить некоторые из моих серверов в RealTime. Для этого я использую RestAPI, который отправляет мне данные в формате JSON (который Powershell автоматически преобразует в PSCustomObject).
Дело в том, что в моем API JSON / data нет метки времени поля, поэтому мне пришлосьдобавь это. К сожалению, инструменты JSON в powershell кажутся ограниченными, и я не смог добавить их напрямую. Мне пришлось создать новый объект PSCustomObject с именем timestamp и объединить его с моими данными из API.
К сожалению, тогда данные не анализируются правильно. Я перебираю строку, массив строк, хеш-таблицу. Это было худшее. Наконец, я скачал JSON.NET Framework, с которым сейчас пытаюсь работать ...
Итак, вот основная часть кода:
Function Combine-Objects {
Param (
[Parameter(mandatory=$true)]$Object1,
[Parameter(mandatory=$true)]$Object2
)
$arguments = [Pscustomobject]@()
foreach ( $Property in $Object1.psobject.Properties){
$arguments += @{$Property.Name = $Property.value}
}
foreach ( $Property in $Object2.psobject.Properties){
$arguments += @{ $Property.Name= $Property.value}
}
$Object3 = [Pscustomobject]$arguments
return $Object3
}
while (1)
{
$startpoint = "REST API URL"
$endpoint = "POWER BI API URL"
$response = Invoke-RestMethod -Method Get -Uri $startpoint
$timestamp=get-date -format yyyy-MM-ddTHH:mm:ss.fffZ
$response2 = [PsCustomObject]@{"timestamp"=$timestamp}
$response3 = Combine-Objects -Object1 $response -Object2 $response2
Invoke-RestMethod -Method Post -Uri "$endpoint" -Body (ConvertTo-Json @($response3))
}
Перед объединением PSCustomObject у меня есть:
total : 8589463552
available : 5146566656
percent : 40,1
used : 3442896896
free : 5146566656
, который дал мне правильный JSON после его преобразования
[
{
"total": 8589463552,
"available": 5146566656,
"percent": 40.1,
"used": 3442896896,
"free": 5146566656
}
]
Хотя после объединения и добавления метки времени у меня есть:
Name Value
---- -----
total 8589463552
available 5146566656
percent 40,1
used 3442896896
free 5146566656
timestamp 2019-10-09T22:17:18.734Z
Что дало мне после преобразования:
[
{
"total": 8589463552
},
{
"available": 5146566656
},
{
"percent": 40.1
},
{
"used": 3442896896
},
{
"free": 5146566656
},
{
"timestamp": "2019-10-09T22:17:18.734Z"
}
]
Пока все, что я хотел, было просто:
[
{
"total" :98.6,
"available" :98.6,
"percent" :98.6,
"used" :98.6,
"free" :98.6,
"timestamp" :"2019-10-11T09:21:04.981Z"
}
]