what best way of returning first found value in servers|addresses|addr if $json -match returns true, relative scope in specified -match value found?
for example, $json variable below:
if $json -match "aboubacar" returns true, $result = "143.179.56.126" if $json -match "tendaji" returns true, $result = "113.55.212.113" i'd accomplish in powershell version 2.
$json=' { "servers": [ { "addresses": { "": [ { "addr": "113.55.212.113", "os-ext-ips-mac:mac_addr": "aa:bb:cc:dd:ee:ff", "os-ext-ips:type": "fixed", "version": 4 } ] }, "created": "2013-08-15t12:04:04z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "hostid": "117535ce0eda7ee02ebffe2c976173629385481ae3f2bded5e14a66b", "id": "ae114799-9164-48f5-a036-6ef9310acbc4", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v2.1/servers/ae114799-9164-48f5-a036-6ef9310acbc4", "rel": "self" }, { "href": "http://openstack.example.com/servers/ae114799-9164-48f5-a036-6ef9310acbc4", "rel": "bookmark" } ], "metadata": { "my server name": "tendaji" }, "name": "tendaji" }, { "addresses": { "": [ { "addr": "143.179.56.126", "os-ext-ips-mac:mac_addr": "aa:bb:cc:dd:ee:ff", "os-ext-ips:type": "fixed", "version": 4 } ] }, "created": "2013-08-15t12:04:04z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "hostid": "117535ce0eda7ee02ebffe2c976173629385481ae3f2bded5e14a66b", "id": "ae114799-9164-48f5-a036-6ef9310acbc4", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v2.1/servers/ae114799-9164-48f5-a036-6ef9310acbc4", "rel": "self" }, { "href": "http://openstack.example.com/servers/ae114799-9164-48f5-a036-6ef9310acbc4", "rel": "bookmark" } ], "metadata": { "my server name": "aboubacar" }, "name": "aboubacar" } ] }' $json -match "aboubacar" # if true return true, $result = "143.179.56.126" seen in `servers|addresses|addr` $json -match "tendaji" # true, $result = "113.55.212.113" seen in `servers|addresses|addr`
the easiest way convert json string object , use simple object selection function in powershell. however, approach requires non-blank property name under 'adresses'.
something so:
$json=' { "servers": [ { "addresses": { "addr": [ { "addr": "113.55.212.113", "os-ext-ips-mac:mac_addr": "aa:bb:cc:dd:ee:ff", "os-ext-ips:type": "fixed", "version": 4 } ] }, "created": "2013-08-15t12:04:04z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "hostid": "117535ce0eda7ee02ebffe2c976173629385481ae3f2bded5e14a66b", "id": "ae114799-9164-48f5-a036-6ef9310acbc4", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v2.1/servers/ae114799-9164-48f5-a036-6ef9310acbc4", "rel": "self" }, { "href": "http://openstack.example.com/servers/ae114799-9164-48f5-a036-6ef9310acbc4", "rel": "bookmark" } ], "metadata": { "my server name": "tendaji" }, "name": "tendaji" }, { "addresses": { "addr": [ { "addr": "143.179.56.126", "os-ext-ips-mac:mac_addr": "aa:bb:cc:dd:ee:ff", "os-ext-ips:type": "fixed", "version": 4 } ] }, "created": "2013-08-15t12:04:04z", "flavor": { "id": "1", "links": [ { "href": "http://openstack.example.com/flavors/1", "rel": "bookmark" } ] }, "hostid": "117535ce0eda7ee02ebffe2c976173629385481ae3f2bded5e14a66b", "id": "ae114799-9164-48f5-a036-6ef9310acbc4", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", "links": [ { "href": "http://openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b", "rel": "bookmark" } ] }, "key_name": null, "links": [ { "href": "http://openstack.example.com/v2.1/servers/ae114799-9164-48f5-a036-6ef9310acbc4", "rel": "self" }, { "href": "http://openstack.example.com/servers/ae114799-9164-48f5-a036-6ef9310acbc4", "rel": "bookmark" } ], "metadata": { "my server name": "aboubacar" }, "name": "aboubacar" } ] }' [system.reflection.assembly]::loadwithpartialname("system.web.extensions") $ser = new-object system.web.script.serialization.javascriptserializer $jsonobj = $ser.deserializeobject($json) $jsonobj.servers | where-object {$_.name -eq 'tendaji'} | ` select-object { $_.addresses.addr[0].addr } $jsonobj.servers | where-object {$_.name -eq 'aboubacar'} | ` select-object { $_.addresses.addr[0].addr }
Comments
Post a Comment