Преобразование System.Object [] и свойств разыменования - PullRequest
0 голосов
/ 18 мая 2019

Azure CLI возвращает System.Object [], с которым не удобно работать. Например, я могу создать App-Insights с помощью скрипта, и az cli возвращает System.Object [], включая инструментальный ключ. Я могу написать методы для перебора массива и извлечения обязательных полей, но должен быть более простой способ

Я пытался преобразовать объект в другие форматы, но не смог найти возможность преобразовать результат команды cli в объект с разыменованными свойствами

$a = az monitor app-insights component show -a myfuntions -g my-group
$a

{
  "appId": "<id>",
  "applicationId": "myfunctions",
  "applicationType": "web",
  "creationDate": "2019-05-17T15:22:05.042607+00:00",
  "etag": "\"8000ece5-0000-0200-0000-4edfe57e0000\"",
  "flowType": "Bluefield",
  "hockeyAppId": null,
  "hockeyAppToken": null,
  "id": "/subscriptions/1111111-4d7d-4df4-8dae-5311111111/resourceGroups/dev-api/providers/microsoft.insights/components/dev-validierung-functions"
  "instrumentationKey": "3232323-23e05-32da-bf03-a8b8b4d18783",
  "kind": "web",
  "location": "westeurope",
  "name": "myfunctions",
  "provisioningState": "Succeeded",
  "requestSource": "rest",
  "resourceGroup": "mygroup",
  "samplingPercentage": null,
  "tags": {},
  "tenantId": "<the tenant id>",
  "type": "microsoft.insights/components"
}

В переменной $ a содержится System.Object []. Можно перебирать все объекты в массиве в самоопределяемой функции, но я думаю, что мне не хватает некоторых деталей. Должен быть простой способ преобразования в разыменовываемые объекты.

Ответы [ 2 ]

1 голос
/ 18 мая 2019

Вы можете использовать PsObject свойство:

$object = @"
{
"appId": "<id>",
"applicationId": "myfunctions",
"applicationType": "web",
"creationDate": "2019-05-17T15:22:05.042607+00:00",
"etag": "\"8000ece5-0000-0200-0000-4edfe57e0000\"",
"flowType": "Bluefield",
"hockeyAppId": null,
"hockeyAppToken": null,
"id": "/subscriptions/1111111-4d7d-4df4-8dae-5311111111/resourceGroups/dev-api/providers/microsoft.insights/components/dev-validierung-functions",
"instrumentationKey": "3232323-23e05-32da-bf03-a8b8b4d18783",
"kind": "web",
"location": "westeurope",
"name": "myfunctions",
"provisioningState": "Succeeded",
"requestSource": "rest",
"resourceGroup": "mygroup",
"samplingPercentage": null,
"tags": {},
"tenantId": "<the tenant id>",
"type": "microsoft.insights/components"
}
"@

$j = $object | ConvertFrom-Json
$j.PsObject.Properties | % { Write-Host "Name $($_.Name) ; Value $($_.Value)"}

Выход:

Name appId ; Value <id>
Name applicationId ; Value myfunctions
Name applicationType ; Value web
Name creationDate ; Value 2019-05-17T15:22:05.042607+00:00
Name etag ; Value "8000ece5-0000-0200-0000-4edfe57e0000"
Name flowType ; Value Bluefield
Name hockeyAppId ; Value
Name hockeyAppToken ; Value
Name id ; Value /subscriptions/1111111-4d7d-4df4-8dae-5311111111/resourceGroups/dev-api/providers/microsoft.insights/components/dev-validierung-functions
Name instrumentationKey ; Value 3232323-23e05-32da-bf03-a8b8b4d18783
Name kind ; Value web
Name location ; Value westeurope
Name name ; Value myfunctions
Name provisioningState ; Value Succeeded
Name requestSource ; Value rest
Name resourceGroup ; Value mygroup
Name samplingPercentage ; Value
Name tags ; Value
Name tenantId ; Value <the tenant id>
Name type ; Value microsoft.insights/components

Надеюсь, это поможет.

0 голосов
/ 18 мая 2019

Конвертируйте из json.

$obj = $a | convertfrom-json
...