Неожиданный результат поиска от Azure Search Graph Search - AzGraph и Azure Resource Graph Explorer

Я столкнулся со странным поведением (ошибкой?) При использовании команды PowerShell "Search-AzGraph".

Когда я использую "Обозреватель графиков ресурсов Azure", у меня не возникает этой проблемы.

resourcecontainers
 | where type =~ 'microsoft.resources/subscriptions/resourcegroups'
 | join kind=leftouter (resources | project ResourceId=id, ResourceName=name, ResourceType=type, resourceGroup) on resourceGroup

(Вы можете скопировать и вставить этот запрос KQL прямо в обозреватель графиков ресурсов Azure, чтобы отобразить все ресурсы Azure с их соответствующим идентификатором подписки Azure.

В "Обозревателе графиков ресурсов Azure" после ключевого слова "project" для отображения столбцов, которые я ищу, я устанавливаю "ResourceId" для отображения идентификатора ресурса. Работает нормально. В результате я вижу, что имя столбца изменилось.

Но при использовании "Search-AzGraph" значения "ResourceId" содержат идентификатор значения из "resourcecontainers" вместо "resources". Если я удалю ResourceId=, я получу тот же (правильный) результат, что и "Azure Resource Graph Explorer", но для доступа к нему мне нужно использовать свойство "id1". Это не имеет большого значения, но я хочу иметь возможность использовать свой собственный столбец имен.

У кого-нибудь был такой опыт, или я что-то упускаю, чтобы получить результат в обоих случаях? Спасибо

1 ответ

Решение

Наконец я нашел обходной путь:

resourcecontainers
| where type =~ 'microsoft.resources/subscriptions/resourcegroups'
| join kind=leftouter (resources | project ResourceId=id, ResourceName=name, ResourceType=type, resourceGroup) on resourceGroup
| project ResourceGroupId=id, ResourceId, ResourceGroupName=name, ResourceName, tags

Я добавил "проект" после моего "соединения", чтобы явно дать имя столбцу "id" из "resourcecontainers", чтобы результат не испортил результат (значения) между "resourcecontainers" и "resource".

Вот мой полный пример моего кода PowerShell, если кому-то интересно:

$resources = Search-AzGraph -Subscription $subscriptionId -Query "resourcecontainers
| where type =~ 'microsoft.resources/subscriptions/resourcegroups'
| join kind=leftouter (resources | project ResourceId=id, ResourceName=name, ResourceType=type, resourceGroup) on resourceGroup
| project ResourceGroupId=id, ResourceId, ResourceGroupName=name, ResourceName, ResourceType, tags"

foreach ($resource in $resources) {
  Write-Host "Resource Group Id: " $resource.ResourceGroupId
  Write-Host "  Resource Group Name: " $resource.ResourceGroupName
  Write-Host "  Resource Id: " $resource.ResourceId
  Write-Host "  Resource Name: " $resource.ResourceName
  Write-Host "  Resource Type: " $resource.ResourceType
}
Другие вопросы по тегам