You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求可导出含应用链接的所有GPO设置的脚本/工具

导出包含链接信息的GPO设置到CSV的PowerShell脚本

下面提供两个PowerShell脚本,分别用于导出GPO的摘要信息(含链接)和详细设置(含链接),解决你之前脚本无法导出GPO链接的问题。

脚本1:导出GPO摘要及链接信息

这个脚本会导出每个GPO的基本属性、设置摘要,以及所有关联的OU链接信息:

# 设置输出文件路径
$outputPath = "C:\Temp\GPO_Summary_With_Links.csv"

# 获取域内所有GPO
$allGPOs = Get-GPO -All

# 初始化结果集合
$gpoResults = @()

foreach ($gpo in $allGPOs) {
    # 获取当前GPO的所有链接信息
    $gpoLinks = Get-GPLink -Guid $gpo.Id | Select-Object OU, Enabled, Enforced, Order
    
    # 生成GPO的XML报告,提取配置摘要
    $gpoReport = Get-GPOReport -Guid $gpo.Id -ReportType Xml
    $xmlReport = [xml]$gpoReport
    
    # 整理计算机配置的扩展设置摘要
    $computerSettings = $xmlReport.GPO.Computer.ExtensionData | ForEach-Object {
        [PSCustomObject]@{
            ExtensionName = $_.Name
            SettingCount = ($_.Extension.Settings | Measure-Object).Count
        }
    } | ConvertTo-Json -Compress
    
    # 整理用户配置的扩展设置摘要
    $userSettings = $xmlReport.GPO.User.ExtensionData | ForEach-Object {
        [PSCustomObject]@{
            ExtensionName = $_.Name
            SettingCount = ($_.Extension.Settings | Measure-Object).Count
        }
    } | ConvertTo-Json -Compress

    # 将链接信息转为JSON,避免CSV格式混乱
    $linksJson = $gpoLinks | ConvertTo-Json -Compress

    # 构建结果对象
    $gpoObject = [PSCustomObject]@{
        GPOId = $gpo.Id
        GPODisplayName = $gpo.DisplayName
        GPOStatus = $gpo.GpoStatus
        CreationTime = $gpo.CreationTime
        ModificationTime = $gpo.ModificationTime
        Owner = $gpo.Owner
        ComputerSettingsSummary = $computerSettings
        UserSettingsSummary = $userSettings
        GPOLinks = $linksJson
    }

    $gpoResults += $gpoObject
}

# 导出到CSV
$gpoResults | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8

Write-Host "导出完成,文件路径:$outputPath"

脚本2:导出GPO详细设置及链接信息

如果需要查看每个GPO的具体设置项和对应的链接信息,可以使用这个脚本,每个设置项会关联所有链接OU的信息:

# 设置输出文件路径
$outputPath = "C:\Temp\GPO_Detailed_Settings_With_Links.csv"

# 获取域内所有GPO
$allGPOs = Get-GPO -All

# 初始化结果集合
$detailedResults = @()

foreach ($gpo in $allGPOs) {
    # 获取当前GPO的所有链接信息
    $gpoLinks = Get-GPLink -Guid $gpo.Id | Select-Object OU, Enabled, Enforced
    
    # 生成GPO的XML报告,提取详细设置
    $gpoReport = Get-GPOReport -Guid $gpo.Id -ReportType Xml
    $xmlReport = [xml]$gpoReport

    # 处理计算机配置的详细设置
    if ($xmlReport.GPO.Computer.ExtensionData) {
        foreach ($extension in $xmlReport.GPO.Computer.ExtensionData) {
            foreach ($setting in $extension.Extension.Settings) {
                foreach ($link in $gpoLinks) {
                    $detailedResults += [PSCustomObject]@{
                        GPOId = $gpo.Id
                        GPODisplayName = $gpo.DisplayName
                        ConfigurationType = "Computer"
                        ExtensionName = $extension.Name
                        SettingName = $setting.Name
                        SettingValue = $setting.Value -join "; "
                        LinkedOU = $link.OU
                        LinkEnabled = $link.Enabled
                        LinkEnforced = $link.Enforced
                    }
                }
            }
        }
    }

    # 处理用户配置的详细设置
    if ($xmlReport.GPO.User.ExtensionData) {
        foreach ($extension in $xmlReport.GPO.User.ExtensionData) {
            foreach ($setting in $extension.Extension.Settings) {
                foreach ($link in $gpoLinks) {
                    $detailedResults += [PSCustomObject]@{
                        GPOId = $gpo.Id
                        GPODisplayName = $gpo.DisplayName
                        ConfigurationType = "User"
                        ExtensionName = $extension.Name
                        SettingName = $setting.Name
                        SettingValue = $setting.Value -join "; "
                        LinkedOU = $link.OU
                        LinkEnabled = $link.Enabled
                        LinkEnforced = $link.Enforced
                    }
                }
            }
        }
    }
}

# 导出到CSV
$detailedResults | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8

Write-Host "详细设置导出完成,文件路径:$outputPath"

使用注意事项

  • 必须以域管理员权限运行PowerShell
  • 确保已安装Group Policy PowerShell模块(默认在域控制器或安装了RSAT工具的客户端机器上可用)
  • 可以根据需求修改脚本中的$outputPath变量,指定自定义的导出路径

内容的提问来源于stack exchange,提问作者richa kumari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:27:12