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

时间:2017-03-28 00:14:30

标签: azure azure-powershell azure-resource-manager

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

我希望这样的事情可行:

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

但是,这只会返回网络安全组,我认为它完全忽略了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

1 个答案:

答案 0 :(得分:1)

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

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