GPO无法申请;原因:无法访问,为空或已禁用;Server 2012 R2和Windows 10


16

我有Windows Server 2012 R2域。

昨天,计算机(正在运行Windows 10 Pro)的网络驱动器停止工作。

经过进一步调查(gpresult /h),似乎所有组策略对象均因故障而失败Inaccessible, Empty, or Disabled

我已经确认所有GPO仍然存在,并且在(冗余和本地)域控制器上均已启用。此外,同一域和LAN上还有20台其他计算机,完全没有问题。

但是,我测试过的另一台计算机也出现了同样的问题!这是否意味着问题出在服务器上?

gpresult /r报告一个客户端从本地DC1获取GPO,另一个从DC2获取。因此,这不是与特定DC相关的问题。

gpupdate /force 修复任何问题(尽管它声称已应用了策略)。

我尝试删除本地策略的注册表项(按照本指南/superuser/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位版本,并且已完全更新。为确保确定,我已经重新启动了所有它们。



谢谢。您的评论提供了解决方案的线索。见下文。
丹尼尔(Daniel)

Answers:


19

检查补丁joeqwerty链接太多

有重要的细节:

已知的问题

MS16-072更改用于检索用户组策略的安全上下文。此设计更改行为可以保护客户的计算机免受安全漏洞的侵害。在安装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日

病征

所有用户组策略,包括那些已在用户帐户或安全组上进行安全过滤的策略,或两者都可能无法在加入域的计算机上应用。

原因

如果组策略对象缺少已验证用户组的读取权限,或者您正在使用安全筛选并且缺少域计算机组的读取权限,则可能会出现此问题。

解析度

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

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

请参阅此链接部署MS16-072,其中解释了所有内容并提供了修复受影响的GPO的脚本。该脚本将对所有没有身份验证用户权限的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
    }
}

如果您喜欢设置域计算机的读取权限(就像我一样),而不是通过身份验证的用户,只需将其更改0 {$appliedgroup = "Authenticated Users"}0 {$appliedgroup = "Domain Computers"}


看来我会暂时将其标记为答案。我添加了对我的安全筛选具有读取访问权限的“域计算机”,现在至少有一台出现问题的计算机正在运行。因此,我假设有一个修补程序通过Windows Update自动将其自身应用于服务器,并导致了此问题。现在,我还想知道GPO的“委派”选项卡和“安全筛选”部分之间的区别是什么……阅读时间
Daniel

2
为了增加一些混乱,对我来说,有必要添加包含用户的安全组和包含计算机的安全组,以应用策略。仅添加一个(用户或计算机)将导致该策略无法应用。如果要应用该策略,则不一定需要是“域计算机”组,仅用户和计算机的组合在安全筛选中必须有效。
Adwaenyth,2016年

为我们公司解决了这一问题->在组策略对象(GPO)上添加具有读取权限的Authenticated Users组。Big thx
Brain Foo Long

这似乎不是一个实际的解决方案,因为我不希望所有人都应用GPO,而只是希望小组中的特定人员。为什么MS仍在Windows Update中部署它?它破坏了一切。
Sephethus

@Sephethus使用“授权”选项卡添加域计算机权限,GPO将照常工作。如果您的GPO没有计算机设置,则将域计算机添加到安全筛选器中也不会执行任何操作,但是我认为“委派”选项卡更好。
yagmoth555
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.