Неожиданный результат поиска от Azure Search Graph Search-AzGraph против Azure Resource Graph Explorer - PullRequest
0 голосов
/ 11 июля 2020

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

Когда я использую «Azure Resource Graph Explorer», я не получаю этой проблемы.

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

(Вы можете скопировать и вставить этот запрос KQL прямо в свой Azure Resource Graph Explorer, он отобразит все Azure ресурсы с их Azure соответствующим идентификатором подписки

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

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

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

1 Ответ

1 голос
/ 11 июля 2020

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

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" и "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
}
...