Обновление групповых политик cmd windows 10

В этой статье мы рассмотрим особенности обновления параметров групповых политик на компьютерах домена Active Directory: автоматическое обновление политик,

В этой статье мы рассмотрим особенности обновления параметров групповых политик на компьютерах домена Active Directory: автоматическое обновление политик, команду
GPUpdate
, удаленное обновление через консоль Group Policy Management Console (
GPMC.msc
) и командлет PowerShell
Invoke-GPUpdate
.

Содержание:

  • Интервал обновления параметров групповых политик
  • GPUpdate.exe – команда обновления параметров групповых политики
  • Принудительно обновление политики из консоли Group Policy Management Console (GPMC)
  • Invoke-GPUpdate – обновление GPO из Powershell

Интервал обновления параметров групповых политик

Чтобы новые настройки, которые вы задали в локальной или доменной групповой политике (GPO) применились на клиентах, необходимо, чтобы служба Group Policy Client перечитала политики и внесла изменения в настройки клиента. Это процесс называется обновление групповых политик. Настройки групповых политик обновляются при загрузке компьютере и входе пользователя, или автоматически в фоновом режиме раз в 90 минут + случайное смещение времени (offset) в интервале от 0 до 30 минут (т.е. политики гарантировано применятся на клиентах в интервале 90 – 120 минут после обновления файлов GPO на контроллере домена).

Контроллеры домена по умолчанию обновляют настройки GPO намного чаще — раз в 5 минут.

Вы можете изменить интервал обновления настрое GPO с помощью параметра Set Group Policy refresh interval for computers, который находится в секции GPO Computer Configuration -> Administrative Templates -> System -> Group Policy.

Включите политику (Enabled) и задайте время (в минутах) в следующих настройках:

  • This setting allow you to customize how often Group Policy is applied to computer (от 0 до 44640 минут) – как часто клиент должен обновлять настройка GPO (если указать тут 0 – политики начнут обновляться каждые 7 секунд – не стоит этого делать);
  • This is a random time added to the refresh interval to prevent all clients from requesting Group Policy at the same time (от 0 до 1440 минут) – максимальное значение случайного интервал времени, которые добавляется в виде смещения к предыдущему параметру (используется для уменьшения количества одновременных обращений к DC за файлами GPO от клиентов).

настроить частуту автоматического обновления GPO в Windows

Имейте в виду, что частое обновление GPO приводит к увеличению трафика к контроллерам домена и повышенной нагрузке на сеть.

GPUpdate.exe – команда обновления параметров групповых политики

Всем администраторов знакома команда gpupdate.exe, которая позволяет обновить параметры групповых политик на компьютере. Большинство не задумываясь используют для обновления GPO команду
gpupdate /force
. Эта команда заставляет компьютер принудительно перечитать все политики с контроллера домена и заново применить все параметры. Т.е. при использовании ключа force клиент обращается к контроллеру домена и заново получает файлы ВСЕХ нацеленных на него политик. Это вызывает повышенную нагрузку на сеть и контроллер домена.

Простая команда
gpudate
применяет только новые/измененные параметры GPO.

Если все OK, должны появится следующие строки:

Updating policy...
Computer Policy update has completed successfully.
User Policy update has completed successfully.

gpupdate - команда обновления параметров групповых политик

Можно отдельно обновить параметры GPO из пользовательской секции:

gpupdate /target:user

или только политики компьютера:

gpupdate /target:computer /force

Если некоторые политики нельзя обновить в фоновом режиме, gpudate может выполнить logoff текущего пользователя:

gpupdate /target:user /logoff

Или выполнить перезагрузку компьютера (если изменения в GPO могут применится только во время загрузки Windows):

gpupdate /Boot

Принудительно обновление политики из консоли Group Policy Management Console (GPMC)

В консоли GPMC.msc (Group Policy Management Console), начиная с Windows Server 2012, появилась возможность удаленного обновления настроек групповых политик на компьютерах домена.

В Windows 10 для использования этой консоли придется установить компонент RSAT:

Add-WindowsCapability -Online -Name Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0

Теперь после изменения настроек или создания и прилинковки новой GPO, вам достаточно щелкнуть правой клавишей по нужному Organizational Unit (OU) в консоли GPMC и выбрать в контекстном меню пункт Group Policy Update. В новом окне появится количество компьютеров, на которых будет выполнено обновление GPO. Подтвердите принудительное обновление политик, нажав Yes.

удаленное обновление групповых политик из консоли GPMC

Затем GPO по очереди обновяться на каждом компьютере в OU и вы получите результат со статусом обновления политик на компьютерах (Succeeded/Failed).

Данная команда удаленно создает на компьютерах задание планировщика с командой GPUpdate.exe /force для каждого залогиненого пользователя. Задание запускается через случайный промежуток времени (до 10 минут) для уменьшения нагрузки на сеть.

Для работы этого функционала GPMC на клиенте должны быть выполнены следующие условия:

  • Открыт порт TCP 135 в Windows Firewall;
  • Включены службы Windows Management Instrumentation и Task Scheduler.

Если компьютер выключен, или доступ к нему блокируется файерволом напротив имени такого компьютера появится надпись “The remote procedure call was cancelled”.

По сути этот функционал дает тот же эффект, если бы вы вручную обновили настройки политик на каждом компьютере командой
GPUpdate /force
.

отчет по обновлению GPO на компьютерах домена

Invoke-GPUpdate – обновление GPO из Powershell

Также вы можете вызвать удаленное обновление групповых политик на компьютерах с помощью PowerShell комнадлета Invoke-GPUpdate (входит в RSAT). Например, чтобы удаленно обновить пользовательские политики на определенном компьютере, можно использовать команду:

Invoke-GPUpdate -Computer "corpComputer0200" -Target "User"

При запуске командлета Invoke-GPUpdate без параметров, он обновляет настройки GPO на текущем компьютере (аналог gpudate.exe).

В сочетании с командлетом Get-ADComputer вы можете обновить групповые политики на всех компьютерах в определенном OU:

Get-ADComputer –filter * -Searchbase "ou=Computes,OU=SPB,dc=winitpro,dc=com" | foreach{ Invoke-GPUpdate –computer $_.name -force}

или на всех компьютерах, которые попадают под определенный критерий (например, на всех Windows Server в домене):

Вы можете задать случайную задержку обновления GPO с помощью параметра RandomDelayInMinutes. Таким образом вы можете уменьшить нагрузку на сеть, если одновременно обновляете политики на множестве компьютеров. Для немедленного применения политик используется параметр RandomDelayInMinutes 0.

Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*' }| foreach{ Invoke-GPUpdate –computer $_.name –RandomDelayInMinutes 10 -force}

Для недоступных компьютеров команда вернет ошибку:

Invoke-GPUpdate: Computer "spb-srv01" is not responding. The target computer is either turned off or Remote Scheduled Tasks Management Firewall rules are disabled.

Invoke-GPUpdate - командлет powershell для обновления gpo

При удаленном выполнении командлета Invoke-GPUpdate или обновления GPO через консоль GPMC на мониторе пользователя может на короткое время появиться окно консоли с запущенной командой
gpupdate
.

После изменения любых настроек групповых политик с помощью локального редактора GPO (gpedit.msc) или доменного редактора политик (gpmc.msc), новые настройки политик применяются к пользователю (или компьютеру) не сразу. Вы можете дождаться автоматического обновления политик (придётся ждать до 90 минут), либо можете обновить и применить политики вручную с помощью команды GPUpdate. Команда GPUpdate используется для принудительного обновления групповых политик компьютера и/или пользователя.

Совет. В Windows 2000 для ручного обновления групповых политик использовалась команда secedit /refreshpolicy. В следующих версиях Windows она была заменена утилитой GPUpdate.

Полный синтаксис команда gpupdate выглядит так:

Gpupdate [/Target:{Computer | User}] [/Force] [/Wait:<value>] [/Logoff] [/Boot] [/Sync]

параметры утилиты gpupdate

При запуске команды gpupdate без параметров выполняется обновление только новыех и изменённых настроек политик пользователя и компьютера

gpupdate - обновить настройки групповых политик на клиенте

Updating policy…
Computer Policy update has completed successfully.
User Policy update has completed successfully.

Вы можете обновить только политики пользователя или только политики компьютера с помощью параметра /target. Например:

Gpudate /target:user

или

Gpupdate /target:computer

Для принудительного обновления настроек групповых политик используется команда GPUpdate /force. В чем разница между GPUpdate и GPUpdate /force?

Команда gpupdate применяет только измененные политики, а команда GPUpdate /force заново переприменяет все политики клиента — и новые и старые (вне зависимости от того, были ли они изменены).

В большинстве случаев для обновления политик на компьютере нужно использовать gpupdate. В больших доменах Active Directory частое использование ключа /force при обновлении GPO вызывает большую нагрузку на контроллеры домена (т.к. компьютеры запрашивают заново все нацеленные на них или на пользователей политики).

Как мы уже говорили ранее групповые политики обновляются автоматически каждые 90 минут или во время загрузки компьютера. Поэтому в большинстве случае использование опции gpupdate /force не оправдано (особенно в различных скриптах) из-за высокой нагрузки на клиентские компьютеры, контроллеры домена и каналы передачи данных. Не стоит часто использовать параметр /force для принудительного обновления натсроек политик у клиентов, подключенных по медленным и нестабильным каналам передачи.

Вы можете добавить задержку (до 600 секунд) при обновлении политик с помощью параметра /wait:

Gpupdate /wait:30

Т.к. некоторые политики пользователя нельзя обновить в фоновом режиме, а только при входе пользователя в систему (установка программ, перенаправление папок и т.д.), вы можете выполнить logoff для текущего пользователя командой:

gpupdate /logoff
Некоторые настройки политик компьютера могут применится только при загрузке Windows, поэтому вы можете инициировать перезагрузку компьютера с помощью параметра /Boot:

gpupdate /Boot
Параметр /Sync указывает, что следующее применение политики должно выполняться синхронно. Активные применения политики происходят при перезагрузке компьютера или при входе пользователя в систему.

В PowerShell 3.0 был добавлен командлет Invoke-GPUpdate, который можно использовать для обновления политик на удаленных компьютерах. Например, следующая команда запустит удаленное обновление групповых политик на компьютере msk-PC-1-22:

Invoke-GPUpdate -Computer msk-PC-1-22 -Force

Вы можете удаленно запустить принудительное обновление политик на всех компьютерах в указанном OU Active Directory с помощью команд:

$Comps = Get-AdComputer -SearchBase "OU=Computers,OU=MSK,DC=vmblog,DC=ru" -Filter *
Foreach ($Comp in $Comps) {invoke-gpupdate -Computer $Comp.Name}

Обновлено 29.08.2022

gpo update

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами мы с вами разбирали процедуру создания центрального хранилища административных шаблонов GPO. Движемся дальше и сегодня мы рассмотрим, самую распространенную задачу связанную с групповыми политиками, а именно научимся ее обновлять локально и удаленно, я расскажу в каких ситуациях данная информация вам можете помочь. Мы рассмотрим, какие инструменты у вас есть в арсенале, и я уверяю вас, что вы явно знали не обо всех.

Для чего нужно уметь обновлять групповую политику?

Перед тем, как перейти к практической части я бы хотел описать ряд ситуаций, которые вы можете встретить в своей практике, где вам можете потребоваться ручное обновление GPO.  Еще хочу напомнить, что по умолчанию, любая операционная система Windows, являющаяся членом домена AD сама, автоматически производит обновление групповых политик каждые 90-120 минут, это позволяет не генерировать много сетевого трафика и сделать балансировку при обращении к мастеру PDC, но бывают и другие ситуации.

Предположим, что вы внесли важные обновления настроек для ваших серверов, например для авторизации CredSSP, или закрываете какую-то дыру безопасности, логично, что в Active Directory, это делается через групповые политики. Когда у вас 5-10 серверов, то нет проблем чтобы зайти на каждый из них через удаленный рабочий стол и выполнить команду, а когда серверов сотни, тут уже нужна массовость. Еще не нужно сбрасывать со счетов ситуации, когда вы по RDP не можете зайти, через редактор политик обновить не получается, что делать, тут можно сделать все удаленно через PowerShell или командную строку, об этом то же поговорим.

Вы всегда должны уметь и иметь возможность вносить массовые изменения на ваших серверах, и применять их как можно скорее

Методы обновления GPO

Давайте составим список способов и инструментов, которые вы можете использовать:

  • Командная строка Windows — позволяет быстро выполнить обновление, работает локально
  • Оболочка PowerShell — так же, как и cmd позволяет сделать обновление, как локально, так и удаленно
  • Оснастка «Управление групповой политикой» — удаленное обновление GPO, есть возможность выбрать отдельные объекты
  • Утилита PsExec — позволяет удаленно выполнить задачу

Давайте теперь опробуем каждый из этих методов.

Как обновить GPO через командную строку

Для выполнения этого метода, вы должны зайти локально на компьютер или сервер, открыть командную строку и ввести вот такую, небольшую команду:

Как обновить GPO через командную строку

Ключ /force произведет принудительное обновление групповой политики. Хочу отметить, что некоторые настройки могут применяться, только после выхода из системы. Если политика показала, что успешно обновилась, но эффекта не произошло, то смотрите мою статью «Почему не применяются GPO», придется делать траблшутинг.

Как вы можете обратить внимание, что команда выше производит обновление политик, как для пользователя, так и для компьютера, но при желании вы можете этим манипулировать и явным образом указать, что подлежит апдейту. Для этого есть ключ /Target:{Computer | User}. Предположим, что мне нужно выполнить только для пользователя, для этого пишем:

gpupdate /force /target:User

Как обновить GPO через cmd

Еще интересный ключик, это выполнить задержку /Wait:{ваше значение}.По умолчанию значение 600 секунд.

Как обновить GPO через PowerShell

Оболочка PowerShell так же имеет отдельный командлет, который легко может инициировать запрос на обновление групповой политики, называется он Invoke-GPUpdate.

Invoke-GPUpdate — это командлет обновляющий параметры групповой политики, включая настройки безопасности, которые установлены на удаленных компьютерах с помощью планирования хода выполнения команды Gpupdate. Вы можете комбинировать этот командлет по сценарию, чтобы запланировать команду Gpupdate на группе компьютеров. Обновление может быть запланировано для немедленного запуска параметров политики или ожидания в течение определенного периода времени, максимум до 31 дня. Чтобы избежать нагрузки на сеть, время обновления будет смещено на случайную задержку.

Давайте запросим обновление политик GPO на моем тестовом сервере с Windows Server 2019, для этого запускаем оболочку PowerShell и вводим команду:

Invoke-GPUpdate –RandomDelayInMinutes 0

Как обновить GPO через PowerShell Invoke-GPUpdate

Ключ –RandomDelayInMinutes 0 установит задержку в выполнении на ноль секунд, в противном случае обновление будет выполнено рандомно, через некоторое время.

Обратите внимание, что командлет не выдает никаких результатов, если все работает нормально. В некоторых случаях ваши пользователи могут увидеть всплывающее окно командной строки с заголовком taskeng.exe, которое отображает сообщение «Политика обновления». Через секунду окно исчезает.

окно Политика обновления

Если нужно произвести обновление на удаленном компьютере, то нужно воспользоваться ключом -Computer, команда примет вот такой вид:

Invoke-GPUpdate -Computer dc01.root.pyatilistnik.org –RandomDelayInMinutes 0

Как обновить GPO через PowerShell

Если нужно выполнить принудительно без запроса подтверждения пользователя, то укажите ключ -Force.

Если нужно указать явно, что необходимо запросить политики только для пользователя или компьютера, то можно использовать ключ -Target, который имеет значения User или Computer. Кстати если удаленный компьютер не отвечает, то вы получите ошибку:

Invoke-GPUpdate : Компьютер «dc01.root.pyatilistnik.org» не отвечает. Целевой компьютер выключен или отключены правила брандмауэра удаленного управления запланированными задачами (Invoke-GPUpdate : Computer «dc01.root.pyatilistnik.org» is not responding. The target computer is either turned off or Remote Scheduled Tasks Management Firewall rules are disabled.).
Имя параметра: computer
строка:1 знак:1
+ Invoke-GPUpdate -Computer dc01.root.pyatilistnik.org -Target User –Ra …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationTimeout: (:) [Invoke-GPUpdate], ArgumentException
+ FullyQualifiedErrorId : COMException,Microsoft.GroupPolicy.Commands .InvokeGPUpdateCommand

Invoke-GPUpdate : Компьютер "dc01.root.pyatilistnik.org" не отвечает

Еще одним преимуществом командлета PowerShell является то, что у вас есть больше возможностей в выборе машин, которые вы хотите обновить. Например, с помощью приведенной ниже команды вы должны выбрать все компьютеры, которые начинаются с «Note*«.

Get-ADComputer –Filter ‘Name -like «Note*»‘ | foreach{ Invoke-GPUpdate –Computer $_.name -Force -RandomDelayInMinutes 0}

Если нужно выбрать все компьютеры, то ставим звездочку «*»

Get-ADComputer –Filter * | foreach{ Invoke-GPUpdate –Computer $_.name -Force -RandomDelayInMinutes 0}

При желании вы можете найти все компьютеры по версиям операционных систем и сделать обновление групповых политик по данному критерию.

Не забываем, что можно ограничить поиск отдельным организационным подразделением, для этого есть ключ -Searchbase и команда примет вот такой вид:

Get-ADComputer –Filter * -Searchbase «OU=Windows10,OU=Компьютеры,OU=Оргструктура,DC=root, DC=pyatilistnik,DC=org» | foreach{ Invoke-GPUpdate –Computer $_.name -Force -RandomDelayInMinutes 0}

Массовое обновление GPO в домене

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

$comps = Get-Content «C:tempcomps.txt»
foreach ($comp in $comps)
{
Invoke-GPUpdate –Computer $_.name -Force -RandomDelayInMinutes 0
}

Я также добавил здесь параметр -Force, чтобы обеспечить повторное применение параметров групповой политики, даже если клиент замечает, что новые версии GPO недоступны. Таким образом, когда мы говорим о принудительном обновлении групповой политики, мы на самом деле имеем в виду две разные вещи. Без параметра Force мы просто незамедлительно инициируем обновление; если мы добавим параметр Force, мы форсируем обновление, даже если обновлять нечего. Параметр Force вступает в игру, если вы считаете, что что-то пошло не так в предыдущем обновлении объекта групповой политики.

Очень важно выполнять скрипт в системе, на которой установлен пакет RSAT, или отдельный его компонент консоль управления групповой политикой, инача вы будите получать ошибку.

Invoke-GPUpdate : The term ‘Invoke-GPUpdate’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, o
r if a path was included, verify that the path is correct and try again.
At C:TempGPupdate-Force.ps1:12 char:5
+ Invoke-GPUpdate -ComputerName $server -AsJob -Target «Computer»-R …
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Invoke-GPUpdate:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Invoke-GPUpdate is not recognized as the name of a cmdlet

Обновление групповой политики через оснастку GPMC

Начиная с операционной системы Windows Server 2012 R2, компания Microsoft расширила функционал оснастки по управлению политиками. Разработчики внедрили механизм, массового и точечного инициирования применения политик GPO к нужным объектам и заметьте через графический интерфейс. Откройте оснастку «Управление групповой политикой«, проще всего, это сделать через окно «Выполнить«, введя там там команду gpmc.msc.

Запускаем gpmc.msc

Далее, что вы делаете. Находите нужную вам OU, щелкнуть правым кликом и из контекстного меню выбрать пункт «Обновление групповой политики«.

Обновление групповой политики через gpmc

У вас появится окно «Принудительное обновление групповой политики», в котором вы увидите количество объектов, к которым будет применено действие

окно Принудительное обновление групповой политики

На следующем экране вы увидите результат отработки команды, в первом моем примере политики успешно применилась.

Успешное обновление групповой политики через оснастку gpmc

При желании все результаты команды можно сохранить в CSV файле

Сохранение лога обновления GPO

Вот пример содержимого такого файла

Содержимое лога обновления GPO

на компьютерах, где таким методом была запущена процедура принудительного применения GPO, вы в логах Windows можете обнаружить событие с кодом 1704:

Политика безопасности в объектах групповой политики успешно применена.

Политика безопасности в объектах групповой политики успешно применена

То же самое можно посмотреть и в Windows Admin Center, где нужно зайти в раздел события.

Событие 1704

Ошибка 8007071a «Удаленный вызов процедуры был отменен»

Иногда в консоли GPMC вы можете получать ошибку:

8007071a «Удаленный вызов процедуры был отменен»

Ошибка 8007071a "Удаленный вызов процедуры был отменен"

Связана она с тем, что на удаленных компьютерах у вас брандмауэр Windows блокирует эти вызовы, чтобы это поправить я вам советую сделать разрешающую политику, подробнее читайте, как исправить ошибку 8007071a.

Обновление GPO через PSexec

Я вам очень часто рассказываю в своих примерах из моей практики, об утилите PSexec и сборнике SysInternals от Марка Руссиновича. Суть метода в том, что с помощью специальной утилиты вы сможете выполнить удаленную команду, ранее я так удаленно включал RDP на сервере или клиентской машинке.

Далее вы распаковываете архив, если он в таком виде и открываете папку с утилитами SysInternals в командной строке, напомню сделать, это можно через команду cd или через правый клик с зажатым Shift по нужной папке, выбрав пункт «Открыть окно команд».

Запуск PSexec в cmd

Обращаю внимание, что у вас должны быть соблюдены несколько требований:

  • Как и в случае Invoke-GPUpdate, вы должны изменить настройки брандмауэра на своих клиентах. Поскольку PsExec использует протокол SMB, вам нужно открыть TCP-порт 445. Как открыть порт  я уже подробно рассказывал, можете посмотреть, советую использовать для этого групповую политику.
  • Второе, это наличие прав на удаленном компьютере, чтобы запустить там Gpupdate

Теперь выполните команду:

psexec \имя компьютера –i gpupdate

Обновление GPO через PSexec

Обратите внимание, что параметр -i здесь важен. Это гарантирует, что PsExec взаимодействует с удаленным рабочим столом, что необходимо для обновления пользовательских политик. Если этот параметр не указан, будут обновлены только конфигурации компьютера, хотя ни PsExec, ни gpupdate не выдадут сообщение об ошибке. Без параметра –i gpupdate обновит пользовательские настройки, только если вы вошли в систему с одинаковой учетной записью на исходном и целевом компьютере.

В результате будет удаленный запуск утилиты gpupdate, если все хорошо, то вы получите сообщение «gpupdate exited on svt2019s01.root.pyatilistnik.org with error code 0«.

на удаленном компьютере в журналах системы вы увидите два события 1500 и 1501.

Событие 1500: Параметры групповой политики для этого компьютера обработаны успешно. Не обнаружено изменений со времени последней успешной обработки групповой политики.

Событие 1500: Параметры групповой политики для этого компьютера обработаны успешно. Не обнаружено изменений со времени последней успешной обработки групповой политики.

Событие 1501: Параметры групповой политики для этого пользователя обработаны успешно. Не обнаружено изменений со времени последней успешной обработки групповой политики.

Событие 1501: Параметры групповой политики для этого пользователя обработаны успешно. Не обнаружено изменений со времени последней успешной обработки групповой политики

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

psexec \имя компьютера –i cmd

удаленное выполнение gpupdate

Далее просто пишите gpupdate /force, обратите внимание я через команду hostname показал, что подключение идет с одного компьютера на другой.

Если компьютер не подключен к сети, вы получите следующее сообщение об ошибке:

Couldn’t access ComputerName:The network name cannot be found.
Make sure that the default admin$ share is enabled on ComputerName

Couldn’t access ComputerName:The network name cannot be found

Чтобы массово обновить групповую политику на всех компьютерах домена, воспользуйтесь знаком звездочки «*»:

Если это не помогло и выскочила ошибка, то может воспользоваться через PowerShell. В оболочке перейдите в каталог с утилитами PSTools и выполните:

Get-ADComputer –filter ‘Name -like «*»‘ | Select-Object -ExpandProperty Name | foreach{ Invoke-Expression –Command «.psexec.exe \$_ -i gpupdate.exe»}

массовое Обновление GPO через PSexec

Или можно из конкретного OU добавив

Get-ADComputer –filter ‘Name -like «*»‘-Searchbase «OU=Windows10,OU=Компьютеры,OU=Оргструктура,DC=root, DC=pyatilistnik,DC=org» | Select-Object -ExpandProperty Name | foreach{ Invoke-Expression –Command «.psexec.exe \$_ -i gpupdate.exe»}

Другой вариант — сначала экспортировать все имена компьютеров из контейнера Active Directory в текстовый файл с помощью командлета Get-ADComputer:

Get-ADComputer –filter ‘Name -like «win*»‘ -Searchbase «OU=Windows10,OU=Компьютеры,OU=Оргструктура,DC=root, DC=pyatilistnik,DC=org» | Select-Object -ExpandProperty Name | Out-File -Encoding ascii c:tmpComputerList.txt

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

For /f «tokens=*» %%a in (c:tmpComputerList.txt) Do psexec \%%a -i gpupdate

PsExec против Invoke-GPUpdate

Основным недостатком метода PsExec является то, что он относительно медленный. Это может занять от 3 до 4 секунд на компьютер, а для компьютеров, которые не подключены к сети, это может занять еще больше времени. PsExec иногда даже зависал во время моих тестов.

Разрешение входящих подключений через порт 445 является угрозой безопасности. Компьютерные черви могут использовать этот порт, а хакеры могут делать много неприятных вещей с помощью PsExec. Открытие порта планировщика заданий для Invoke-GPUpdate также проблематично, но я думаю, что порт 445 более популярен среди программистов вредоносных программ.

Таким образом, в большинстве сценариев Invoke-GPUpdate является лучшим вариантом. Однако, если вы все равно открыли порт 445 по другим причинам и не хотите открывать порты Invoke-GPUpdate, вы можете предпочесть PsExec для принудительного обновления групповой политики.

Удаленное обновление GPO через Enter-PSSession

Еще в PowerShell есть командлет для удаленного подключения к компьютеру, называется он Enter-PSSession, его принцип работ, как у PsExec. Откройте оснастку PowerShell и введите:

Enter-PSSession -ComputerName svt2019s01

Удаленное обновление GPO через Enter-PSSession

Далее вы подключитесь к удаленному компьютеру, где потом просто введите gpupdate /force.

Удаленное обновление GPO через Windows Admin Center

Если вы в своей практике используете утилиту удаленного администрирования Windows Admin Center, то вы легко можете подключиться к удаленному серверу и обновить политики GPO все через тот же gpupdate /force.

Удаленное обновление GPO через Windows Admin Center

На этом у меня все. Я вам постарался подробно рассказать, о всех методах локального и дистанционного обновления групповых политик пользователя и компьютера на ваших компьютерах домена. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

The command gpupdate /force is used to force the update of group policies that are applied by your company. Changes made in the Group Policy are not applied immediately but after 90 mins by default (with a ~30 min offset to spread the load). By using the GPUpdate command we can force the update.

Group Policies are used to change security settings and for system management (like deploying printers or mapping network drives). For troubleshooting IT problems, it’s sometimes necessary to update the group policy manually.

  1. Press Windows key + X or right-click on the start menu
  2. Select Windows PowerShell or Command Prompt

    Open PowerShell

  3. Type gpupdate /force and press enter

    Wait for the Computer and User policy to update

    gpupdate force

  4. Reboot your computer

    A reboot is necessary to be sure that all settings are applied.

GPUpdate vs GPUpdate Force command

The gpupdate /force command is probably the most used group policy update command. When you use the /force switch, all the policy settings are reapplied. For most use cases this is perfectly fine, but keep in mind, when you have a lot of group policies objects (GPO) or in a large environment, using the /force will put a huge load on the domain controllers.

If you have a large tenant or a lot of GPO’s, then it’s better to only run gpupdate without the /force switch to apply new policy settings. This will get only the changes or new group policies, reducing the load on the client and domain controllers.

# Reapply all policies
gpupdate /force

# Get only the changed / new group policies
gpupdate

Update only user or computer group policies

If you have a large environment or need to update the group policies on a lot of computers at the same time, then it can be useful to only update what is needed. This will reduce the load on the domain controllers and it’s of course faster.

To do this you can use the /target switch. This allows you to update only the user or computer GPO’s.

# Update only the user policies
gpupdate /target:user

# Update only the computer policies
gpupdate /target:computer

Automatically reboot or logoff after GPUpdate

Not all policy changes are applied immidiately. Due to Fast Boot, for example, are some settings only applied when the users logs in on the computer. Some settings even require a reboot to be applied.

With the use of the /logoff or /boot switch, we can let gpupdate figure out if a logoff or reboot is necessary. To be clear, if you run gpupdate /boot, then the computer will only reboot if a policy change requires it. Otherwise, the policy will be applied immediately without the reboot.

  • GPUpdate /logoff is needed for example after policy changes in the Active Directory like folder redirections or printers. Changes in the AD are only applied when the user logs in on the computer.
  • GPUpdate /boot is for example needed when you create Software Distribution changes.

Run GPUpdate on a Remote Computer

Sometimes you may need to update quickly the group policies on multiple computers because you changed the internet proxy settings or maybe to replace a printer for example. There are couple of ways to run GPUpdate on a remote computer

Using the Group Policy Management Console

You can initiate a group policy update on a whole OU with the Group Policy Management Console. It has to be an OU with only computer objects in it, so you can’t use the method on a user OU. Simply right-click on the OU where you have changed a policy and click on Group Policy Update

force group policy update

This will update the user and computer policies on all the computers in the given organization unit. The nice thing is that it will as for confirmation and show you how many computers are going to be updated.

gpupdate remote computer

After you have confirmed the update the policies will be updated and you can see the status of each computer. In this example 5 computers where turned off, so the update failed.

Use PowerShell to run GPUpdate on a Remote Computer

We can also use PowerShell to run gpupdate on remote computers. The only requirement is that you have Windows 2012 or later. Running it from Windows 10 is also possible, but then you need to open the PowerShell windows with a domain admin account.

The basis of the command is the Invoke-GPUpdate cmd. We also need to specify the computer and the RansomDelayInMinutes.

The RandomDelayInMinutes is used to lower the network load when you update a lot of computers at the same time. You can set it between 0 and 44640 minutes (31 days). Use 0 to run the update immediately.

Invoke-GPUpdate -Computer "labrat01" -RandomDelayInMinutes 0 -Force

If a user is logged on at the computer, then the Invoke-GPupdate command will ask the user for confirmation. By using the -force switch we can run the updates without the confirmation.

With this, we can create a small script to target all computers in a specific OU and run GPupdate on them.

# Spread the load by setting the delay to between 1 and 30 minutes
$random = Get-Random -Minimum 1 -Maximum 30

# Get the computers in an OU to update and run GPUpdate
Get-AdComputer -SearchBase "OU=Computers,OU=Lab,DC=lazyadmin,DC=com" -Filter * | ForEach-Object -Proces {Invoke-GPUpdate -Computer $_.Name -RandomDelayInMinutes $random -Force}

Or if you want to use a list of computers:

# Based on a list
$computers = "labpc01,labpc02,labpc03"
$computers | ForEach-Object -Proces {Invoke-GPUpdate -Computer $_ -RandomDelayInMinutes $random -Force}

Wrapping Up

I hope this article helped you with the GPUpdate /force command. If you have any questions, then just drop a comment below.

In this article we will show how to update Group Policy (GPO) settings on Windows computers in an Active Directory domain: how to update (refresh) Group Policies automatically, how to use the GPUpdate command, how to update them remotely using the Group Policy Management Console (GPMC.msc) or the Invoke-GPUpdate PowerShell cmdlet.

Contents:

  • How to Change Group Policy Refresh Interval?
  • Using GPUpdate.exe Command to Force Refresh GPO Settings
  • How to Force a Remote GPO Update from the Group Policy Management Console (GPMC)?
  • Invoke-GPUpdate: Force Remote Group Policy Update via PowerShell

How to Change Group Policy Refresh Interval?

Prior to the new settings you have set in a local or domain Group Policy (GPO) are applied to Windows clients, the Group Policy Client service must read the policies and make changes to the Windows settings. The process is called a Group Policy Update. GPO settings are updated when the computer boots, the user logs on, and refreshed automatically in the background every 90 minutes + a random time offset of 0–30 minutes (it means that the policy settings will definitely be applied on the clients in 90–120 minutes after you have updated GPO files on the domain controller).

By default, domain controllers update GPO settings more often: every 5 minutes.

You can change the GPO update interval using the Set Group Policy refresh interval for computers option located in Computer Configuration -> Administrative Templates -> System -> Group Policy section of the GPO.

Enable the policy and set the time (in minutes) for the following options:

  • This setting allows you to customize how often Group Policy is applied to computers (0 to 44640 minutes) how often the client should refresh the GPO settings in the background. If you set 0 here, the policies will be updated every 7 seconds (it is not worth to do it);
  • This is a random time added to the refresh interval to prevent all clients from requesting Group Policy at the same time (0 to 1440 minutes) is a maximum value of a random time interval added as an offset to the previous parameter (used to reduce the number of simultaneous client calls to the DC to download GPO files).

Set Group Policy refresh interval for computers - GPO parameter

Note that frequent GPO update results in the growth of traffic to the domain controllers and leads to higher network load.

Using GPUpdate.exe Command to Force Refresh GPO Settings

All administrators know the gpupdate.exe command that allows to update Group Policy settings on a computer. To do it, most use the gpupdate /force command without any hesitation. The command forces your computer to read all GPOs from the domain controller and reapply all settings. This means that when the force key is used, the client connects to the domain controller to retrieve the files for ALL policies targeting it. It may result in higher load on your network and domain controller.

A simple gpudate command without any parameters only applies new and changed GPO settings.

If it has been successful, the following message appears:

Updating policy...
Computer Policy update has completed successfully.
User Policy update has completed successfully.

gpupdate force /command (force GPO setting update)

You can update only user’s GPO settings:

gpupdate /target:user

or only the computer’s policy settings:

gpupdate /target:computer /force

If some policies cannot be updated in the background, gpupdate can log off the current user:

gpupdate /target:user /logoff

Or restart a computer (if the GPO changes can only be applied when Windows boots):

gpupdate /Boot

How to Force a Remote GPO Update from the Group Policy Management Console (GPMC)?

In Windows Server 2012 and newer, you can update Group Policy settings on domain computers remotely using the GPMC.msc (Group Policy Management Console).

In Windows 10, you will have to install the RSAT to use the GPMC console:

Add-WindowsCapability -Online -Name Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0

Then after changing any settings, or creating and linking a new GPO, it is enough to right-click the Organizational Unit (OU) you want in the GPMC and select Group Policy Update in the context menu. In a new window, you will see the number of computers GPO will be updated on. Confirm the force update of the policies by clicking Yes.

updating GPO parameters remotely via GPMC console

Then the GPO will be remotely updated on each computer in the OU one by one, and you will get the result with the group policy update status on the computers (Succeeded/Failed).

This feature creates a task in the Task Scheduler with the GPUpdate.exe /force command for each logged on user on the remote computer. The task runs in a random period of time (up to 10 minutes) to reduce the network load.

In order the GPMC remote GPO update feature to work on a client, the following conditions must be met:

  • TCP Port 135 must be open in Windows Defender Firewall rules;
  • Windows Management Instrumentation and Task Scheduler services must be enabled.

If a computer is turned off or a firewall blocks access to it, the ‘The remote procedure call was canceled. Error Code 8007071a’ message appears next to the name of the computer.

Actually, the feature works the same as if you have updated GPO settings manually using the GPUpdate /force command on each computer.

Forcing a Remote Computer Group Policy Update with GPMC

Invoke-GPUpdate: Force Remote Group Policy Update via PowerShell

You can also call the remote GPO update on computers using the Invoke-GPUpdate PowerShell cmdlet (being a part of RSAT Group Policy management module). For example, to remotely update user policy settings on a specific computer, you can use the following command:

Invoke-GPUpdate -Computer "frparsrv12" -Target "User"

If you run the Invoke-GPUpdate cmdlet without any parameters, it will update the GPO settings on the current computer (like gpudate.exe).

Together with the Get-ADComputer cmdlet, you can update GPO on all computers in a specific OU:

Get-ADComputer –filter * -Searchbase "OU=Computes,OU=Mun,OU=DE,dc=woshub,dc=com" | foreach{ Invoke-GPUpdate –computer $_.name -force}

or on all computers meeting the specific requirement (for example, on all Windows Server hosts in a domain):

Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*' }| foreach{ Invoke-GPUpdate –computer $_.name –RandomDelayInMinutes 10 -force}

You can set a random offset to update GPO using RandomDelayInMinutes. Thus, you can reduce the network load if you update Group Policy setting on multiple computers simultaneously. To apply the Group Policy settings immediately, the RandomDelayInMinutes 0 parameter is used.

The Invoke-GPUpdate command returns the following error for unavailable computers:

Invoke-GPUpdate: Computer "frparsrv12" is not responding. The target computer is either turned off or Remote Scheduled Tasks Management Firewall rules are disabled.

Invoke-GPUpdate (GroupPolicy) powershell cmdlet

If you run the Invoke-GPUpdate cmdlet remotely or update GPO from the GPMC, a console window with the running gpupdate command may appear on a user desktop for a short time.

Во всех популярных редакциях Windows 10 выше Home имеется встроенный инструмент администрирования gpedit.msc или локальные групповые политики. Данный инструмент включает в себя широкий спектр политик (настроек) и предназначается для принудительного изменения базовой конфигурации операционной системы и учетных записей. Реализован он в виде консоли управления MMC с достаточно удобным и интуитивно понятным графическим интерфейсом.

Локальные групповые политики

После изменения ряда политик компьютер необходимо перезагрузить или выждать от 30 до 90 минут, чтобы новые настройки смогли вступить в силу, но вы можете заставить их работать сразу, сэкономив время и избавив себя от необходимости перезапускать систему.

Давайте же посмотрим, как это можно сделать.

Всё довольно просто, если вы хотите обновить все политики сразу, откройте от имени администратора PowerShell или командную строку и выполните команду gpupdate /force.

PowerShell

Эта команда «перезапустит» политики и компьютера, и пользователей.

А теперь представим, что вы хотите обновить лишь определенную категорию политик, скажем, только именные политики пользователя. И тут ничего сложного, просто к команде gpupdate добавляется соответствующий ключ. А чтобы всё было ясно, приводим примеры:

gpupdate /target:computer — Обновляет только измененные политики компьютера.
gpupdate /target:user — Обновляет только измененные пользовательские политики.

Gpupdate

Если же вы хотите обновить все политики только пользователя или только компьютера, добавьте в конец каждой команды через пробел ключ /force.

Ключ force

К слову, всем тем, кто пользуется редактором локальных групповых политик не помешает ознакомиться и с другими полезными ключами утилиты gpupdate.exe.

Утилита gpupdate.exe

К примеру, есть политики, обновление которых в фоновом режиме невозможно, и в этом случае добавленный в конец команды ключ /boot позволит вам выполнить перезагрузку прямо из командной строки.

Загрузка…

  • 01.11.2020
  • 2 830
  • 0
  • 1
  • 1
  • 0

GPUPDATE - описание команды и примеры использования

  • Содержание статьи
    • Описание
    • Синтаксис
    • Параметры
      • Примечания
    • Примеры использования
    • Справочная информация
    • Добавить комментарий

Описание

GPUPDATE — Обновляет локальные параметры и параметры групповой политики Active Directory, включая параметры безопасности. Эта команда заменяет устаревший параметр /refreshpolicy команды secedit.

Синтаксис

gpupdate [/target:{computer|user}] [/force] [/wait:значение] [/logoff] [/boot]

Параметры

Параметр Описание
/target:{computer|user} Обрабатывает только параметры компьютера или параметры текущего пользователя. По умолчанию обрабатываются и параметры компьютера, и параметры пользователя
/force Игнорирует все оптимизации в процессе обработки и восстанавливает все предыдущие настройки
/wait:значение Время ожидания окончания обработки политики в секундах. По умолчанию это время составляет 600 секунд. 0 означает «без ожидания»; -1 означает «время ожидания не ограничено»
/logoff Задает выход из системы по завершении обновления. Это необходимо для тех клиентских расширений оснастки «Групповая политика», которые обрабатываются не в фоновом режиме, а при входе пользователя в систему, например, при установке программного обеспечения и перенаправлении папок. Этот параметр не работает, если вызываемые расширения, необходимые для выхода пользователя из системы, отсутствуют
/boot Перезапускает компьютер после завершения обновления. Это необходимо для тех клиентских расширений оснастки «Групповая политика», которые обрабатываются не в фоновом режиме, а при входе пользователя в систему, например, при установке программного обеспечения и перенаправлении папок. Этот параметр не работает, если вызываемые расширения, необходимые для перезапуска компьютера, отсутствуют
/? Вывод справки в командной строке

Примечания

Если допущена синтаксическая ошибка, то подобно данному разделу справки выводится синтаксическая сводка.

Примеры использования

gpupdate
gpupdate /target:computer
gpupdate /force /wait:100
gpupdate /boot

Справочная информация


Понравилась статья? Поделить с друзьями:
  • Обновление для windows xp home edition sp2
  • Обновление групповой политики через командную строку windows 10
  • Обновление для windows server 2016 1607
  • Обновление графических драйверов windows 7 интел
  • Обновление для windows server 2012 r2 kb3197875