Search-AzQuery запрашивает авторизационные ресурсы и возвращает 0 записей

Я хочу запросить все встроенные определения ролей Azure, используя Search-AzQuery. У меня установлен модуль Az.ResourceGroup v1.0.0.

Этот запрос отлично работает в Azure Resource Graph Explorer на портале Azure и возвращает 5 записей:

authorizationresources | where type == "microsoft.authorization/roledefinitions" | where properties["type"] == "BuiltInRole" | limit 5

Если я запускаю тот же запрос локально, используя Search-AzQuery (или az graph query, если уж на то пошло), я получаю ноль записей.

Search-AzGraph -Query 'authorizationresources | where type == "microsoft.authorization/roledefinitions" | where properties["type"] == "BuiltInRole" | limit 5'

Однако если я удалю второй where, он вернет записи.

Search-AzGraph -Query 'authorizationresources | where type == "microsoft.authorization/roledefinitions" | limit 5'

Я также пробовал использовать оператор =~ (чтобы игнорировать регистр при сравнении), но это не имеет значения.

Что я делаю неправильно?


50
2

Ответы:

Когда вы запускаете локально, вы не должны работать так, как вы работаете, вы получите 0 записей, как показано ниже:

Чтобы получить правильные результаты, вы должны использовать команду, как показано ниже, и следовать Microsoft-Document:

az graph query -q "
authorizationresources 
| where type == 'microsoft.authorization/roledefinitions' 
| where properties['type'] == 'BuiltInRole' 
"

Также см. мой ответ в SO-теме.

Редактировать:

Используйте эту команду:

Search-AzGraph -Query " 
authorizationresources 
| where type =~ 'microsoft.authorization/roleassignments'
"

Редактировать2:

$rith = Search-AzGraph -Query "
authorizationresources
| where type =~ 'microsoft.authorization/roleassignments'
"
$rithwik = $rith | Where-Object { $_.properties.principalType -eq 'X' }
$rithwik

Я согласен с @wenbo, UseTenantScope, в конце концов, все будет работать.


Решено
Search-AzGraph -Query "authorizationresources | where type == 'microsoft.authorization/roledefinitions' | where properties['type'] == 'BuiltInRole' | limit 5" -UseTenantScope 

Стоит добавить UseTenantScope, я много пробовала и обнаружила, что этот метод работает.

Почему это работает:

roledefinitions имеет идентификатор ресурса, подобный этому /providers/Microsoft.Authorization/RoleDefinitions/aabbc5dd-1af0-458b-a942-81af88f9c138, который не связан с определенной подпиской. Это Basic tenant queryссылка

Имеет отличие от Basic query, необходимо передать массив subscribeIds.


Интересные вопросы для изучения

Ошибка «Невозможно определить язык проекта по файлам» при использовании функций Azure в VSCodeОпределите общедоступный исходящий IP-адрес для экземпляра блоков данныхНевозможно правильно сгенерировать изображения логотипа dalle-3 с помощью PythonКак передать лицензию Azure DevOps из одной организации в другую?«Превышен крайний срок контекста» после запуска приложения Terraform, но ресурс Azure все еще создан. Terraform Import хочет воссоздать ресурсPowershell, если функция вызывает другую функциюКак добавить разрешения Microsoft Graph к субъекту-службе управляемой идентификации с помощью Az PowerShell?Как предоставить разрешения на вызов REST API Azure DevOps с помощью System.AccessToken?Термин «скрипт:» не распознается как имя командлета, функции, файла сценария или исполняемой программыИспользование Try/Catch для PowerShell для переключения между двумя членами группы командлетов?