Неожиданный результат поиска от 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
}