使用PowerShell提取Azure策略信息

mkshixfv  于 2024-01-08  发布在  Shell
关注(0)|答案(1)|浏览(126)

我正在尝试获取特定命名策略的Azure策略结果信息,我一直在使用查询并到此为止。缺少的是实际资源,我可以获取资源组,订阅等,但无法获取底层不合规资源以及不合规的原因。

$output_sub = "C:\data\output_$(get-date -f dd-MM-yyyyHHMM).csv"
$output_all = Get-AzPolicyState -ManagementGroupName  'xx' -Filter " ComplianceState eq 'NonCompliant' and PolicySetDefinitionName eq 'xxx' " `
        | Select-Object    Timestamp, `
                    SubscriptionId, `
                    ResourceLocation, `
                    ResourceGroup, `
                    PolicySetDefinitionName, `
                    ManagementGroupIds, `
                    PolicyDefinitionReferenceId, `
                    ComplianceState, `
                    PolicyDefinitionAction, `
                    ResourceTags

   $output_all | Export-Csv  -NoTypeInformation -Path $output_sub

字符串
要从门户获取实际资源,必须从一个链接向下钻取到另一个链接,我缺少的是获取底层资源的数据连接。要获取被违反的特定策略控制,我运行下面的代码,然后在Excel中使用vlookup再次通过PolicyDefinitionReferenceId链接描述,必须有一种更好的方法来将数据集中在一个查询中,而不必使用Excel来执行vlookup。

Get-AzPolicyDefinition -ManagementGroupName  'xxx' `
    | Select-Object ResourceName,ResourceId,@{n='DisplayName';E={$_.Properties.DisplayName}}, @{n='Description';E={$_.Properties.Description}} `
    | export-csv -NoTypeInformation $definition_file

ujv3wf0j

ujv3wf0j1#

我正在尝试获取特定命名策略的Azure策略结果信息,我一直在使用查询并到此为止。缺少的是实际资源,我可以获取资源组,订阅等,但不是底层的不合规资源。
下面是一个更新的PowerShell脚本,用于检索Policy compliance结果,包括non-compliant resources

$output_sub = "/home/user/result1_$(get-date -f dd-MM-yyyyHHMM).csv"
$output_all = Get-AzPolicyState -Filter "(PolicyDefinitionName eq '7b33f61f-1499-4a41-81e7-bfa5dc9a68e5') and ComplianceState eq 'NonCompliant'" 

$resourceNames = @{}

foreach ($resource in $output_all) {
    $resourcename = ($resource.ResourceId -split '/')[-1]
    $resourceNames[$resource.ResourceId] = $resourcename
}

$result = $output_all | ForEach-Object {
    [PSCustomObject]@{
        Timestamp               = $_.Timestamp
        ResourceId              = $_.ResourceId
        ResourceLocation        = $_.ResourceLocation
        ResourceType            = $_.ResourceType
        SubscriptionId          = $_.SubscriptionId
        ResourceGroup           = $_.ResourceGroup
        PolicyDefinitionName    = $_.PolicyDefinitionName
        ManagementGroupIds      = $_.ManagementGroupIds
        PolicyAssignmentScope   = $_.PolicyAssignmentScope
        IsCompliant             = $_.IsCompliant
        ComplianceState         = $_.ComplianceState
        PolicyDefinitionAction  = $_.PolicyDefinitionAction
        ResourceTags            = $_.ResourceTags
        ResourceName            = $resourceNames[$_.ResourceId] 
    }
}

# Export the result to CSV
$result | Export-Csv -NoTypeInformation -Path $output_sub

字符串

结果


的数据
执行脚本后,Azure Policy合规状态值(包括non-compliant resources)存储在Excel文件中。


相关问题