GPO不适用; 原因:无法访问,空或禁用; Server 2012 R2和Windows 10

我有一个Windows Server 2012 R2域。

昨天,一台电脑(运行Windows 10 Pro)networking驱动器停止工作。

经过进一步调查( gpresult /h )后,出现所有组策略对象失败,原因不Inaccessible, Empty, or Disabled

我已经确认所有的GPO仍然存在,并在(冗余和本地)域控制器上都启用。 此外,在同一个域和局域网上还有20台机器,绝对没有问题。

但是,还有另一台电脑,我testing了相同的问题! 这是否意味着问题是与服务器?

gpresult /r报告,一个客户端从本地DC1获得GPO,另一个从DC2获得。 所以这不是一个特定的DC有关的问题。

gpupdate /force没有任何规定(虽然它声称政策是适用的)。

我试图删除本地策略的registry项(按照本指南https://superuser.com/questions/379908/how-to-clear-or-remove-domain-applied-group-policy-settings-after-leaving-the – )和重新启动 – 同样的问题。

我从Microsoft发现了这个支持页面( https://support.microsoft.com/en-us/kb/2976965 ),但声称它只适用于Windows 7或更早版本的客户端。

我的所有机器(包括服务器和客户机)都运行64位版本并完全更新。 我已经重新启动了所有这些只是为了确保。

检查补丁joeqwerty链接了 。

有重要的细节:

已知的问题

MS16-072更改检索用户组策略的安全上下文。 这种按devise行为更改可以保护客户的计算机免受安全漏洞影响。 安装MS16-072之前,使用用户的安全上下文检索用户组策略。 安装MS16-072后,使用机器安全上下文检索用户组策略。 此问题适用于以下知识库文章:

  • 3159398 MS16-072:组策略安全更新说明:2016年6月14日
  • 3163017 Windows 10的累积更新:2016年6月14日
  • 3163018 Windows 10版本1511和Windows Server 2016技术预览版4:2016年6月14日的累积更新
  • 3163016 Windows Server 2016技术预览版5:2016年6月14日的累积更新

症状

所有用户组策略(包括那些在用户帐户或安全组上进行了安全筛选的用户组策略)都可能无法应用于已join域的计算机。

原因

如果组策略对象缺lessAuthenticated Users组的读取权限,或者您正在使用安全筛选,并且缺less对域计算机组的读取权限,则可能会发生此问题。

parsing度

要解决此问题,请使用组策略pipe理控制台(GPMC.MSC),然后执行以下步骤之一:

– 在组策略对象(GPO)上添加具有读权限的Authenticated Users组。
– 如果使用安全筛选,请添加具有读取权限的域计算机组。

看到这个链接部署MS16-072解释一切,并提供脚本来修复受影响的GPO。 该脚本将已validation用户的读取权限添加到所有对已validation用户没有权限的GPO。

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

如果你愿意设置域计算机的读取权限(像我这样做),而不是validation用户,只需将0 {$appliedgroup = "Authenticated Users"}更改为0 {$appliedgroup = "Domain Computers"}