我正在尝试使用 Zabbix JSON API 来自动化我们 IT 商店中的一些监控内容。我想使用此处描述的 graph.create 方法:https ://www.zabbix.com/documentation/2.2/manual/api/reference/graph/create
我正在为 gitems 数组苦苦挣扎。它必须包含哈希表(图中每个项目一个),每个都有“itemid”和“color”行。
这是我的代码的一部分:
#i get a list of itemids in $items
$colours=@("C04000", "800000", "191970", "3EB489", [...])
$params=@{}
$gitems=@() #an array of hash tables...
$c=0
foreach ($itemid in $items.result) {
$graphmember=@{}
$graphmember.add("itemid", $itemid)
$graphmember.add("color", $colours[$c])
$gitems += $graphmember
$c += 1
}
$params.add("gitems", $gitems)
#construct the JSON object
$objgraph = (New-Object PSObject | Add-Member -PassThru NoteProperty jsonrpc '2.0' |
Add-Member -PassThru NoteProperty method 'graph.create' |
Add-Member -PassThru NoteProperty params $params |
Add-Member -PassThru NoteProperty auth $session.result |
Add-Member -PassThru NoteProperty id '2') | ConvertTo-Json
return $objgraph
其中,当被调用时返回这个:
{
"jsonrpc": "2.0",
"method": "graph.create",
"params": {
"gitems": [
"System.Collections.Hashtable",
"System.Collections.Hashtable",
"System.Collections.Hashtable",
"System.Collections.Hashtable",
"System.Collections.Hashtable"
]
},
"auth": "dc50acf4c337e5430c00936f998f74da",
"id": "2"
}
所以我得到 5 行,这是基于我提供的参数的正确数字,但似乎 convertto-json 不喜欢我的对象......无法弄清楚为什么。
我不确定数组中的哈希表,所以我做了一个测试,它似乎工作:
$gitems=@()
$i1=@{}
$1.add("itemid","123")
$i1.add("color","blue")
$gitems += $i1
$i2=@{}
$i2.add("itemid","567")
$i2.add("color","yellow")
$gitems += $i2
$gitems
Name Value
---- -----
color bleu
itemid 123
color yellow
itemid 567
感谢人们的想法!