Назад | Перейти на главную страницу

GPO не могут применяться; причина: недоступно, пусто или отключено; Сервер 2012 R2 и Windows 10

У меня есть домен Windows Server 2012 R2.

Вчера перестал работать сетевой диск компьютера (под управлением Windows 10 Pro).

После дополнительных исследований (gpresult /h) похоже, что ВСЕ объекты групповой политики не работают по причине Inaccessible, Empty, or Disabled.

Я подтвердил, что все объекты групповой политики все еще существуют и включены на обоих (избыточных и локальных) контроллерах домена. Более того, в том же домене и в локальной сети есть еще 20 машин без каких-либо проблем.

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

gpresult /r сообщает, что один клиент получает объекты групповой политики от локального DC1, а другой - от DC2. Так что это не проблема, связанная с конкретным DC.

gpupdate /force ничего не исправил (хотя утверждалось, что применялись политики).

Я попытался удалить записи реестра для локальных политик (следуя этому руководству https://superuser.com/questions/379908/how-to-clear-or-remove-domain-applied-group-policy-settings-after-leaving-the-do) и перезагрузка - та же проблема.

Я нашел эту страницу поддержки от Microsoft (https://support.microsoft.com/en-us/kb/2976965), но утверждает, что это применимо только к клиентам Windows 7 или более ранней версии.

На всех моих машинах (как серверных, так и клиентских) установлены 64-разрядные версии и они полностью обновлены. Я перезагрузил их все на всякий случай.

Проверьте патч joeqwerty по ссылке слишком.

Важная деталь:

Известные проблемы

MS16-072 изменяет контекст безопасности, в котором извлекаются групповые политики пользователей. Это побочное изменение поведения защищает компьютеры клиентов от уязвимостей. Перед установкой MS16-072 политики группы пользователей были получены с использованием контекста безопасности пользователя. После установки MS16-072 политики групп пользователей извлекаются с использованием контекста безопасности компьютеров. Эта проблема применима к следующим статьям базы знаний:

  • 3159398 MS16-072: Описание обновления безопасности для групповой политики: 14 июня 2016 г.
  • 3163017 Накопительное обновление для Windows 10: 14 июня 2016 г.
  • 3163018 Накопительное обновление для Windows 10 версии 1511 и Windows Server 2016 Technical Preview 4: 14 июня 2016 г.
  • 3163016 Накопительное обновление для Windows Server 2016 Technical Preview 5: 14 июня 2016 г.

Симптомы

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

Причина

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

разрешение

Чтобы решить эту проблему, используйте консоль управления групповой политикой (GPMC.MSC) и выполните одно из следующих действий:

- Добавьте группу прошедших проверку пользователей с разрешениями на чтение для объекта групповой политики (GPO).
- Если вы используете фильтрацию безопасности, добавьте группу «Компьютеры домена» с разрешением на чтение.

См. Эту ссылку Развернуть MS16-072 в котором все объясняется и предлагается сценарий для восстановления затронутых объектов групповой политики. Сценарий добавляет пользователям, прошедшим проверку подлинности, разрешения на чтение для всех объектов групповой политики, у которых нет разрешения для пользователей, прошедших проверку.

# Copyright (C) Microsoft Corporation. All rights reserved.

$osver = [System.Environment]::OSVersion.Version
$win7 = New-Object System.Version 6, 1, 7601, 0

if($osver -lt $win7)
{
    Write-Error "OS Version is not compatible for this script. Please run on Windows 7 or above"
    return
}

Try
{
    Import-Module GroupPolicy
}
Catch
{
    Write-Error "GP Management tools may not be installed on this machine. Script cannot run"
    return
}

$arrgpo = New-Object System.Collections.ArrayList

foreach ($loopGPO in Get-GPO -All)
{
    if ($loopGPO.User.Enabled)
    {
        $AuthPermissionsExists = Get-GPPermissions -Guid $loopGPO.Id -All | Select-Object -ExpandProperty Trustee | ? {$_.Name -eq "Authenticated Users"}
        If (!$AuthPermissionsExists)
        {
            $arrgpo.Add($loopGPO) | Out-Null
        }
    }
}

if($arrgpo.Count -eq 0)
{
    echo "All Group Policy Objects grant access to 'Authenticated Users'"
    return
}
else
{
    Write-Warning  "The following Group Policy Objects do not grant any permissions to the 'Authenticated Users' group:"
    foreach ($loopGPO in $arrgpo)
    {
        write-host "'$($loopgpo.DisplayName)'"
    }
}

$title = "Adjust GPO Permissions"
$message = "The Group Policy Objects (GPOs) listed above do not have the Authenticated Users group added with any permissions. Group policies may fail to apply if the computer attempting to list the GPOs required to download does not have Read Permissions. Would you like to adjust the GPO permissions by adding Authenticated Users group Read permissions?"

$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", `
    "Adds Authenticated Users group to all user GPOs which don't have 'Read' permissions"
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", `
    "No Action will be taken. Some Group Policies may fail to apply"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $host.ui.PromptForChoice($title, $message, $options, 0)  
$appliedgroup = $null
switch ($result)
{
    0 {$appliedgroup = "Authenticated Users"}
    1 {$appliedgroup = $null}
}
If($appliedgroup)
{
    foreach($loopgpo in $arrgpo)
    {
        write-host "Adding 'Read' permissions for '$appliedgroup' to the GPO '$($loopgpo.DisplayName)'."
        Set-GPPermissions -Guid $loopgpo.Id -TargetName $appliedgroup -TargetType group -PermissionLevel GpoRead | Out-Null
    }
}

Если вы предпочитаете устанавливать разрешение на чтение для компьютеров домена (как я), а не для прошедших проверку пользователей, просто измените это 0 {$appliedgroup = "Authenticated Users"} к этому 0 {$appliedgroup = "Domain Computers"}