Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


powershell:active-directory:get-list-of-group-policies-with-and-without-ou-link-in-powershell

Получение списка групповых политик со связями с OU и без связей с OU

Получение списка групповых политик со связями с OU:

# Путь до отчёта
$Report = "C:\Temp\LinkedGPOReport.csv"
 
# Создаём массив для результатов
$results = @()
 
# Получаем все GPO
$AllGPOs = Get-GPO -All
 
# Проходим по каждой GPO
foreach ($GPO in $AllGPOs) {
    # Получаем политику в формате XML
    $GPOReport = Get-GPOReport -Name $GPO.DisplayName -ReportType xml
 
    # Конвертируем в XML
    $GPOXml = [xml]$GPOReport
 
    # Получаем связи с OU
    $Links = $GPOXml.GPO.LinksTo
 
    # Если связь существует
    if ($Links) {
        # Проходим по каждой связи
        foreach ($Link in $Links) {
            # Получаем инф о связи и параметрах
            $SOMPath = $Link.SOMPath # Путь к OU
            $LinkEnabled = $Link.Enabled -eq "true" # Статус
            $Enforced = $Link.NoOverride -eq "true" # Принудительное применение
 
            # формируем инф для выгрузки в csv
            $result = [PSCustomObject]@{
                PolicyName  = $GPO.DisplayName
                OU          = $SOMPath
                LinkEnabled = $LinkEnabled
                Enforced    = $Enforced
            }
 
            # Добавляем массив
            $results += $result
        }
    }
}
 
# Экспортируем в CSV
$results | Export-Csv -Path $Report -NoTypeInformation -Encoding UTF8 -Delimiter ";" 

Получение списка групповых политик, не имеющих связей с OU:

# Путь до отчёта
$Report = "C:\Temp\UnLinkedGPOReport.csv"
 
# Создаём массив для результатов
$unlinkedGPOs = @()
 
# Получаем все GPO
$AllGPOs = Get-GPO -All
 
# Проходим по каждой GPO
foreach ($GPO in $AllGPOs) {
    # Получаем политику в формате XML
    $GPOReport = Get-GPOReport -Name $GPO.DisplayName -ReportType xml
 
    # Конвертируем в XML
    $GPOXml = [xml]$GPOReport
 
    # Если связи нет
    if (-not $GPOXml.GPO.LinksTo) {
        # формируем инф для выгрузки в csv
        $unlinkedGPOs += [PSCustomObject]@{
            GPOName   = $GPO.DisplayName
            GPOID     = $GPO.Id
            CreatedBy = $GPO.Owner
            Created   = $GPO.CreationTime
            Modified  = $GPO.ModificationTime
        }
    }
}
 
# Экспортируем в CSV
$unlinkedGPOs | Export-Csv -Path $Report -NoTypeInformation -Encoding UTF8 -Delimiter ";"



Проверено на следующих конфигурациях:

Версия ОС Версия PowerShell
Windows 10 Pro 10.0.19045 PowerShell 5.1

Автор первичной редакции:
Виталий Якоб
Время публикации: 10.10.2024 11:43

Обсуждение

Ваш комментарий:
 
powershell/active-directory/get-list-of-group-policies-with-and-without-ou-link-in-powershell.txt · Последнее изменение: 10.10.2024 11:53 — Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki