来自 Azure Search Graph Search-AzGraph 与 Azure Resource Graph Explorer 的意外搜索结果
Unexpected search result from Azure Search Graph Search-AzGraph vs Azure Resource Graph Explorer
我在使用 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 subscriptionId
使用“Azure Resource Graph Explorer”,在“project”关键字后显示我查找的列,我设置“ResourceId”以显示资源的 Id。它工作正常。我可以在结果中看到列名称已更改。
但是当使用“Search-AzGraph”时,“ResourceId”值包含来自“resourcecontainers”而不是“resources”的值 id。
如果删除“ResourceId=”,我会得到与“Azure Resource Graph Explorer”相同(正确)的结果,但要访问它,我需要使用 属性“id1”。
这没什么大不了的,但我希望能够使用我自己的命名列。
任何人都有这种经验,或者我错过了一些东西来获得两种情况下的结果结果?
谢谢
我终于找到了解决方法:
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
我在“join”之后添加了一个“project”,以明确地为“resourcecontainers”中的“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
}
我在使用 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 subscriptionId
使用“Azure Resource Graph Explorer”,在“project”关键字后显示我查找的列,我设置“ResourceId”以显示资源的 Id。它工作正常。我可以在结果中看到列名称已更改。
但是当使用“Search-AzGraph”时,“ResourceId”值包含来自“resourcecontainers”而不是“resources”的值 id。 如果删除“ResourceId=”,我会得到与“Azure Resource Graph Explorer”相同(正确)的结果,但要访问它,我需要使用 属性“id1”。 这没什么大不了的,但我希望能够使用我自己的命名列。
任何人都有这种经验,或者我错过了一些东西来获得两种情况下的结果结果? 谢谢
我终于找到了解决方法:
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
我在“join”之后添加了一个“project”,以明确地为“resourcecontainers”中的“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
}