如何查询所有 Azure 网络安全组 (NSG) 的所有诊断设置信息

How to query all diagnostic settings information for all Azure network security groups (NSG)

我想了解所有网络安全组的诊断设置。我希望 powershell cmdlet Find-AzureRmResource 可以工作,但似乎您无法在不指定父资源的情况下搜索子提供者的子资源。

我本来希望这样的东西能奏效:

Find-AzureRmResource -ResourceType Microsoft.Network/networkSecurityGroups -ExtensionResourceType Microsoft.Insights/diagnosticSettings

然而,这只是 returns 网络安全组,我认为它完全忽略了 ExtensionResourceType 参数。以下是 NSG 诊断设置的资源 ID 示例:

 /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Network/networkSecurityGroups/{nsg-name}/providers/microsoft.insights/diagnosticSettings/service

我注意到 Find-AzureRmResource cmdlet 有一个 -ODataQuery 参数,所以我想知道如果我知道要传递给这个参数的内容,我是否可以让它工作?

我确实发现我可以获得这样的等效列表,但它真的很慢(当你有数百个 NGS 时),因为它会单独查询诊断设置,而不是一次返回所有设置:

Find-AzureRmResource -ResourceType Microsoft.Network/networkSecurityGroups | Get-AzureRmDiagnosticSetting

没有单个 API 调用来检索所有 NSG 上的所有诊断设置。如果您拥有所有 NSG 的所有 ARM 资源 ID,则需要多次调用 Get-AzureRmDiagnosticSetting。

https://docs.microsoft.com/en-us/powershell/resourcemanager/azurerm.insights/v2.2.0/get-azurermdiagnosticsetting