Создание отчетов о применении объектов групповой политики на удаленных компьютерах и создание отчета (часть 1)

Опубликовано: 19 Марта, 2023

Существует два типа параметров GPO, которые можно настроить для применения как к объектам компьютера, так и к объектам пользователя. Параметры объекта групповой политики, определенные в узле «Конфигурация пользователя», применяются к объектам пользователей, в то время как параметры объекта групповой политики, определенные в узле «Конфигурация компьютера», применяются к объектам-компьютерам. Поскольку параметры объекта групповой политики обрабатываются клиентскими расширениями, установленными на клиентских компьютерах Windows, применение всех параметров объекта групповой политики не обязательно верно. Однако, прежде чем вы начнете выяснять, почему параметры GPO не применяются на локальном или удаленном компьютере, вам необходимо знать, действительно ли объект GPO, в котором настроены эти параметры, был достигнут на целевых компьютерах. Существует несколько способов сообщить о применении объектов групповой политики на компьютерах Windows, присоединенных к домену Active Directory. Вы можете использовать GPResult.exe, Resultant Set of Policies (RSOP.msc) и командлет PowerShell GPResultantSetOfPolicy, чтобы получить параметры GPO с локального или удаленного компьютера. Инструмент командной строки GPResult.exe позволяет собирать параметры объекта групповой политики и список объектов групповой политики с удаленного компьютера, указав имя удаленного компьютера с параметром « /S». При запуске GPResult.exe для локального или удаленного компьютера вы можете использовать различные параметры, как описано ниже:

  • Параметр GPResult /R сообщает только об именах GPO. В случае, если вам нужно увидеть только имена GPO, которые были применены к объектам пользователя и компьютера на локальном или удаленном компьютере, вы собираетесь использовать этот параметр.
  • Параметр GPResult /V собирает имена объектов групповой политики и параметры объектов групповой политики, которые были применены как к объектам компьютера, так и к объектам пользователя на локальном или удаленном компьютере.

Как указывалось ранее, перед устранением неполадок с применением настроек объекта групповой политики важно знать, применялся ли объект групповой политики на компьютере или нет. Если вам нужно получить только имена GPO с локальных или удаленных компьютеров, вы будете использовать параметр « /R» с командой GPResult.exe. Поскольку основное внимание в этой статье уделяется получению списка объектов групповой политики, применяемых к объектам пользователя и компьютера, мы собираемся использовать параметр «/R » в командах GPResult, описанных в этой статье. Давайте рассмотрим некоторые полезные команды GPResult, которые можно использовать для получения имен объектов групповой политики с удаленных компьютеров.

Чтобы сообщить имена объектов групповой политики с удаленного компьютера, вы можете использовать приведенную ниже команду GPResult:

  • GPResult.exe /S ПК1 Компьютер /R

Приведенная выше команда помогает получить список объектов групповой политики с удаленных компьютеров (ПК1), которые были применены как к объектам пользователя, так и к объектам компьютера. Если вам нужно увидеть имена GPO, которые применяются только к объекту-компьютеру, вы можете использовать параметр /SCOPE, как показано в приведенной ниже команде:

  • GPResult.exe /S ПК1 /SCOPE Компьютер /R

Приведенная выше команда выполняется на ПК1, получает имена объектов групповой политики, которые применяются к объекту компьютера, а затем отображает результаты на экране. Обратите внимание, что приведенные выше команды выполняются только на одном компьютере PC1. Это связано с тем, что параметр GPResult /S не поддерживает указание нескольких имен компьютеров. Если вам нужно выполнить команду GPResult на нескольких компьютерах, вы можете создать файл TEXT, добавить все имена компьютеров в файл TEXT, а затем обработать файл TEXT с помощью функции цикла FOR, как показано в приведенной ниже команде:

  • FOR /F «Tokens=*» %L IN (Computers.TXT) DO GPResult.exe /S %L /SCOPE Computer /R

Обратите внимание, что вы можете запустить приведенную выше команду, чтобы получить имена объектов групповой политики со всех компьютеров, указанных в текстовом файле, но результаты отображаются на экране для всех компьютеров. Если вы хотите записать вывод в файл TEXT, вы можете использовать перенаправитель (>) после команды цикла FOR, как показано в приведенной ниже команде:

  • FOR /F «Tokens=*» %L IN (Computers.TXT) DO GPResult.exe /S %L /SCOPE Computer /R >> Results.TXT

Приведенная выше команда записывает выходные данные GPResult.exe со всех компьютеров в один файл с именем Results.TXT. Если вы хотите сохранить выходные данные GPResult в отдельном текстовом файле для каждого компьютера, вы можете использовать следующую команду:

  • FOR /F «Tokens=*» %L IN (Computers.TXT) DO GPResult.exe /S %L /SCOPE Computer /R > %L_GPResult.TXT

Обратите внимание на использование «%L_GPResult. TXT» в приведенной выше команде. Он указывает команде цикла FOR сохранять GPResult для каждого удаленного компьютера в отдельном текстовом файле (например, %L_GPResult.txt). %L — это переменная, содержащая имя текущего обрабатываемого компьютера.

До сих пор приведенные выше команды помогали вам получать имена объектов групповой политики для объекта-компьютера. Если вам нужно получить имена GPO для пользовательского объекта, все, что вам нужно сделать, это заменить «/SCOPE Computer» на значение «/SCOPE User» в приведенных выше командах. Обратите внимание, что при запуске GPResult.exe с параметром «/SCOPE User» GPResult.exe требует, чтобы пользователь вошел в систему на целевом компьютере. Другими словами, GPResult.exe может получить имена объектов групповой политики для пользовательского объекта, только если пользователь вошел в систему на целевом компьютере. Если пользователь не вошел в систему на целевом компьютере, необходимо указать целевое имя пользователя с помощью параметра /USER, как показано в приведенной ниже команде:

  • FOR /F «Tokens=*» %L IN (Computers.TXT) DO GPResult.exe /S %L /SCOPE User /USER <UserName> /R >> L%_Results.TXT

Поэтому, пока вы ищете отчет о объектах групповой политики, применимых к объекту-компьютеру, вы можете использовать приведенные выше команды с параметром «/SCOPE Computer», но проблема заключается в том, чтобы применить объекты групповой политики к объекту-пользователю. Поскольку GPResult.exe требует, чтобы пользователь вошел в систему на целевом компьютере, GPResult может не возвращать никаких данных для компьютеров, на которых не зарегистрированы пользователи. Это проблема, с которой сталкиваются ИТ-администраторы, когда им нужно получить имена и параметры GPO для пользовательского объекта с удаленных компьютеров. Если вы знаете имена пользователей, соответствующих каждой системе, вы можете использовать параметр «/User», а затем получить данные GPO пользователя. Проблема, которую я здесь вижу, заключается в том, что не все организации ведут список компьютеров с соответствующим именем пользователя. Во всяком случае, это проблема, которую я буду рассматривать в части III этой серии статей. Давайте сосредоточимся на отчетах о применении объекта групповой политики, применимого к компьютерным объектам.

Хотя результаты для всех компьютеров фиксируются в отдельном текстовом файле для каждого компьютера, все еще существует несколько проблем, перечисленных ниже:

  • Если вам нужно увидеть имя объекта групповой политики для определенного компьютера, вам потребуется прокрутить каждый файл, чтобы проверить, был ли успешно применен объект групповой политики для компьютера. Это может занять значительное время, если вам нужно проверить имена GPO для тысяч компьютеров.
  • Во-вторых, любые ошибки, возвращаемые во время GPResult.exe, не перехватываются приведенными выше командами. Например, если компьютер недоступен или какая-либо ошибка, возвращаемая при выполнении команды GPResult.exe, не будет зафиксирована в файле TEXT.
  • Наконец, приведенные выше команды сообщат обо всех объектах групповой политики для удаленного компьютера. Другими словами, GPResult.exe не предоставляет параметр, который можно использовать для проверки конкретного объекта групповой политики.

В целом, вы можете запустить GPResult.exe для нескольких удаленных компьютеров с помощью функции цикла FOR и сохранить вывод в отдельном текстовом файле, но вам все равно придется написать пару операторов в сценарии для сбора данных, возвращаемых GPResult..exe, чтобы подготовить хороший отчет. Я разработал сценарий, который вы можете использовать для проверки применения определенного объекта групповой политики на нескольких удаленных компьютерах из центрального местоположения. Скрипт не только помогает вам создать отчет в формате CSV, но также предоставляет возможность ведения журнала для проверки любых ошибок, которые могут возникнуть при обработке команды GPResult на удаленных компьютерах. Я объясню использование скрипта во второй части этой серии статей.

Вывод

В первой части этой серии статей объяснялось использование инструмента командной строки GPResult.exe для получения имен объектов групповой политики с удаленных компьютеров. Во второй части этой серии статей я собираюсь предоставить вам сценарий, который вы можете использовать для получения отчета об именах объектов групповой политики, которые были применены к компьютерному объекту на удаленных машинах.