Извлечение списка ресурсов Azure плана службы приложений с помощью интерфейса командной строки для AZ

Я пытаюсь извлечь весь план обслуживания APP в подписке Azure с помощью az cli.

Команда представляет собой список ресурсов az, вывод ниже

  [
   {
"id": "/subscriptions/123453343434-83-342-3434-34-3/resourceGroups/KC-EMEA-RSGP-PROJECTS-PRD-01/providers/Microsoft.Web/serverFarms/EMEA-ASPLAN-PROJECTS-PRD-01",
"identity": null,
"kind": "app",
"location": "westeurope",
"managedBy": null,
"name": "EMEA-ASPLAN-PROJECTS-PRD-01",
"plan": null,
"properties": null,
"resourceGroup": "EMEA-RSGP-PROJECTS-PRD-01",
"sku": {
  "capacity": 1,
  "family": "Pv2",
  "model": null,
  "name": "P3v2",
  "size": "P3v2",
  "tier": "PremiumV2"
},
"tags": {
  "CUSTOMER": "Customer",
  "Creator": "matteo",
  "SCOPE": "PRODUCTION"
},
"type": "Microsoft.Web/serverFarms"
  },
    {
"id": "/subscriptions/123453343434-83-342-3434-34-3/resourceGroups/DefaultResourceGroup-WEU/providers/Microsoft.OperationalInsights/workspaces/DefaultWorkspace-123453343434-83-342-3434-34-3",
"identity": null,
"kind": null,
"location": "westeurope",
"managedBy": null,
"name": "DefaultWorkspace-123453343434-83-342-3434-34-3",
"plan": null,
"properties": null,
"resourceGroup": "DefaultResourceGroup-WEU",
"sku": null,
"tags": null,
"type": "Microsoft.OperationalInsights/workspaces"
   },
  {
"id": "/subscriptions/123453343434-83-342-3434-34-3/resourceGroups/defaultresourcegroup-weu/providers/Microsoft.OperationsManagement/solutions/Security(DefaultWorkspace-123453343434-83-342-3434-34-3)",
"identity": null,
"kind": null,
"location": "westeurope",
"managedBy": null,
"name": "Security(DefaultWorkspace-123453343434-83-342-3434-34-3-WEU)",
"plan": {
  "name": "Security(DefaultWorkspace-123453343434-83-342-3434-34-3-WEU)",
  "product": "OMSGallery/Security",
  "promotionCode": "",
  "publisher": "Microsoft",
  "version": null
},
"properties": null,
"resourceGroup": "defaultresourcegroup-weu",
"sku": null,
"tags": null,
"type": "Microsoft.OperationsManagement/solutions"
 }
]

Теперь я хотел бы извлечь только тип, содержащий Microsoft.Web / serverFarms с языком JMESPATH. Я использую командную строку Azure az resource list --query []. {Type: type}

Но у меня несколько типов. Как я могу получить только тип, содержащий «Microsoft.Web / serverFarms»?

вывод запроса

    [
    {
  "type": "Microsoft.Web/serverFarms"
   },
  {
 "type": "Microsoft.OperationalInsights/workspaces"
  },
  {
  "type": "Microsoft.OperationsManagement/solutions"
  }
 ]

person Cyber.Drunk    schedule 16.03.2020    source источник
comment
Что вы действительно ищете?   -  person LMG    schedule 17.03.2020


Ответы (1)


Попробуй это:

az resource list --query "[].{Type:type}[?Type == 'Microsoft.Web/serverFarms']"

Какие выходы:

[
  {
    "type": "Microsoft.Web/serverFarms"
  }
]

Поскольку вы используете хэш с множественным выбором {} для создания списка объектов JSON, вам необходимо затем использовать [?Type == 'Microsoft.Web/serverFarms'] для фильтрации нужного типа. Страница JMESPath Tutorial может оказаться здесь полезной при изучении того, как писать более сложные запросы JMESPath.

Другой вариант - использовать ConvertFrom-Json с помощью PowerShell для десериализации вывода массива JSON в массив System.Management.Automation.PSCustomObject и используйте _ 6_, чтобы отфильтровать типы, равные "Microsoft.Web/serverFarms":

$json = az resource list | ConvertFrom-Json

$result = $json | Where-Object {$_.type -eq "Microsoft.Web/serverFarms"}
person RoadRunner    schedule 17.03.2020