GPO nie mają zastosowania; powód: niedostępny, pusty lub wyłączony; Server 2012 R2 i Windows 10

16

Mam domenę systemu Windows Server 2012 R2.

Wczoraj dysk sieciowy komputera (z systemem Windows 10 Pro) przestał działać.

Po dalszym badaniu ( gpresult /h) wydaje się, że WSZYSTKIE obiekty zasad grupy zawodzą z powodu Inaccessible, Empty, or Disabled.

Potwierdziłem, że wszystkie obiekty GPO nadal istnieją i są włączone zarówno na (redundantnych, jak i lokalnych) kontrolerach domeny. Ponadto istnieje 20 innych komputerów w tej samej domenie i sieci LAN bez żadnych problemów.

Jest jeszcze jeden komputer, który przetestowałem i który ma ten sam problem! Czy to oznacza, że ​​problem dotyczy serwerów?

gpresult /rzgłasza, że ​​jeden klient otrzymuje obiekty GPO z lokalnego DC1, a drugi z DC2. Więc nie jest to problem związany z konkretnym DC.

gpupdate /force nic nie naprawiono (chociaż twierdził, że zastosowano zasady).

Próbowałem usunąć wpisy rejestru dotyczące zasad lokalnych (postępując zgodnie z tym przewodnikiem /superuser/379908/how-to-clear-or-remove-domain-applied-group-policy-settings-after-leaving-the -do ) i ponowne uruchomienie - ten sam problem.

Znalazłem tę stronę pomocy technicznej firmy Microsoft ( https://support.microsoft.com/en-us/kb/2976965 ), ale twierdzi ona, że ​​dotyczy tylko klientów Windows 7 lub wcześniejszych.

Wszystkie moje maszyny (zarówno serwer, jak i klient) mają 64-bitowe wersje i są w pełni zaktualizowane. Ponownie uruchomiłem je wszystkie, aby się upewnić.

Daniel
źródło
Dzięki. Twój komentarz był wskazówką do rozwiązania. Patrz poniżej.
Daniel

Odpowiedzi:

19

Sprawdź poprawki odnośnik joeqwerty zbyt .

Jest ważny szczegół:

Znane problemy

MS16-072 zmienia kontekst bezpieczeństwa, z którym pobierane są zasady grupy użytkowników. Ta zmiana zachowania według projektu chroni komputery klientów przed luką w zabezpieczeniach. Przed zainstalowaniem biuletynu MS16-072 zasady grupy użytkowników zostały pobrane przy użyciu kontekstu zabezpieczeń użytkownika. Po zainstalowaniu biuletynu MS16-072 zasady grupy użytkowników są pobierane przy użyciu kontekstu zabezpieczeń komputera. Ten problem dotyczy następujących artykułów z bazy wiedzy:

  • 3159398 MS16-072: Opis aktualizacji zabezpieczeń dla zasad grupy: 14 czerwca 2016 r
  • 3163017 Zbiorcza aktualizacja dla systemu Windows 10: 14 czerwca 2016 r
  • 3163018 Zbiorcza aktualizacja dla systemu Windows 10 w wersji 1511 i Windows Server 2016 Technical Preview 4: 14 czerwca 2016 r
  • 3163016 Zbiorcza aktualizacja dla Windows Server 2016 Technical Preview 5: 14 czerwca 2016 r

Objawy

Wszystkie zasady grupy użytkowników, w tym te, które zostały przefiltrowane pod kątem bezpieczeństwa na kontach użytkowników lub grupach zabezpieczeń, lub na obu, mogą nie zostać zastosowane na komputerach przyłączonych do domeny.

Przyczyna

Ten problem może wystąpić, jeśli w obiekcie zasad grupy brakuje uprawnień do odczytu dla grupy użytkowników uwierzytelnionych lub jeśli korzystasz z filtrowania zabezpieczeń i brakuje uprawnień do odczytu dla grupy komputerów w domenie.

Rozkład

Aby rozwiązać ten problem, użyj konsoli zarządzania zasadami grupy (GPMC.MSC) i wykonaj jeden z następujących kroków:

- Dodaj grupę Użytkownicy uwierzytelnieni z uprawnieniami do odczytu w obiekcie zasad grupy (GPO).
- Jeśli korzystasz z filtrowania zabezpieczeń, dodaj grupę Komputery Domeny z uprawnieniami do odczytu.

Zobacz ten link Wdróż MS16-072, który wyjaśnia wszystko i oferuje skrypt do naprawy dotkniętych obiektów GPO. Skrypt dodaje Uwierzytelnionych użytkowników uprawnienia do odczytu do wszystkich obiektów zasad grupy, które nie mają uprawnień dla Uwierzytelnionych użytkowników.

# 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
    }
}

Jeśli wolisz ustawić uprawnienia do odczytu dla komputerów w domenie (tak jak ja) zamiast użytkowników uwierzytelnionych, po prostu zmień to 0 {$appliedgroup = "Authenticated Users"}na0 {$appliedgroup = "Domain Computers"}

yagmoth555
źródło
Wygląda na to, że wstępnie zaznaczę to jako odpowiedź. Dodałem „Komputery domeny” z dostępem do odczytu do mojego filtrowania zabezpieczeń i teraz przynajmniej jeden z komputerów z problemem działa. Zakładam więc, że łatka automatycznie zastosowała się do serwera za pośrednictwem Windows Update i spowodowała ten problem. Teraz zastanawiam się także, jaka jest różnica między kartą Delegowanie obiektu zasad grupy a sekcją Filtrowanie zabezpieczeń ... czas na przeczytanie
Daniel,
2
Aby dodać trochę zamieszania, dla mnie konieczne było dodanie grupy zabezpieczeń zawierającej użytkownika ORAZ grupy zawierającej komputer, aby zastosować zasady. Dodanie tylko jednego (użytkownika lub komputera) spowoduje, że zasada nie zostanie zastosowana. Nie musi to być grupa komputerów w domenie, tylko kombinacja użytkownika i komputera musi być poprawna w filtrowaniu zabezpieczeń, jeśli zasada powinna mieć zastosowanie.
Adwaenyth,
To naprawiło to dla naszej firmy -> Dodaj grupę uwierzytelnionych użytkowników z uprawnieniami do odczytu w obiekcie zasad grupy (GPO). Wielkie dzięki
Brain Foo Long
Nie wydaje się to faktycznym rozwiązaniem, ponieważ nie chcę, aby wszyscy stosowali ten obiekt zasad grupy, tylko określone osoby w grupie. Dlaczego MS wciąż wdraża to w Windows Update? Wszystko psuje.
Sephethus,
@ Sephethus Użyj karty delegowania, aby dodać komputer domeny w prawo, obiekt zasad grupy będzie działał jak zwykle w ten sposób. Jeśli Twój obiekt GPO nie ma ustawień komputera, dodanie komputera domeny do filtru zabezpieczeń również nie będzie miało zastosowania, ale moim zdaniem karta delegowania jest lepsza.
yagmoth555