Hello all,
i’am trying get data from console program using PS convert it to a json format, and then push it to a zabbix.
Here is an example of raw output
----------------------------------------------------------------------
Physical Device information
----------------------------------------------------------------------
Device #0
Device is a Hard drive
State : Online
Block Size : 512 Bytes
Supported : Yes
Transfer Speed : SAS 3.0 Gb/s
Reported Channel,Device(T:L) : 0,0(0:0)
Reported Location : Connector 0, Device 0
Vendor : HITACHI
Model : HUS156030VLS600
Firmware : A5D0
Serial number : JTWYYAAJ
World-wide name : 5000CCA00F6ED187
Here is my “code” )
$f=get-content "D:\arcconf_pd.txt"
$Content=$f -replace "\s+|(-)|(Physical Device information)|(Device is a Hard drive)".split("`n") -match '\S'
$array = @()
$Content -split "`r`n" | % {
$Delimited = $_ -split "`:"
$object = New-Object -TypeName PSObject
$object | Add-Member -MemberType NoteProperty -Name $Delimited[0] -Value $Delimited[1]
$array += $object
}
$array | ConvertTo-Json
Here what i’am getting
[
{
"Device#0": null
},
{
"State": "Online"
},
{
"BlockSize": "512Bytes"
},
{
"Supported": "Yes"
},
{
"TransferSpeed": "SAS3.0Gb/s"
},
]
But Zabbbix need anothe structure of json
Here is example
{
"data":[
{ "{#VMNAME}":"cp01" , "{#VMSTATE}":"Off" },
{ "{#VMNAME}":"dc01" , "{#VMSTATE}":"Running" },
{ "{#VMNAME}":"ex01" , "{#VMSTATE}":"Off" },
{ "{#VMNAME}":"fc01" , "{#VMSTATE}":"Running" },
{ "{#VMNAME}":"rdg01" , "{#VMSTATE}":"Running" },
{ "{#VMNAME}":"Windows 2012R2 G2 Template" , "{#VMSTATE}":"Off" }, <--- THIS I WANT TO REMOVE
]
}
Question is, how can i modify my code to get a Zabbix style json?