我们正在使用PowerShell的Invoke-RestMethod
来监控在ElasticSearch中运行的重新索引任务。他们的输出格式有点古怪,而不是数组[...]
他们遗憾地选择了对象{...}
所以看起来像这样:
{
"nodes": {
"fooVSmai0c0uR_Co7g": {...},
"barVSmai0c0uR_B1Fd": {...}
...
}
我们想要将列表中的第一个对象访问$taskRunning
,我们当前的代码看起来有点笨拙。有更优雅的方式吗?
$tasks = Invoke-RestMethod -Uri "http://elasticsearch:9200/_tasks?detailed=true&actions=*reindex"
$task1 = $tasks.nodes.PSObject.Properties | Select -First 1
if ($task1 -eq $null) {"No reindex tasks running!"; return}
$TaskId = $task1.Name
$taskRunning = $tasks.nodes.$($TaskId)