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

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

我有一个 Windows Server 2012 R2 域。

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

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

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

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

gpresult /r报告称一个客户端从本地 DC1 获取 GPO,另一个从 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 位版本,并且已完全更新。为了确保万无一失,我已重新启动了所有机器。

答案1

检查补丁 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 Technical Preview 4 累积更新:2016 年 6 月 14 日
  • 3163016 Windows Server 2016 Technical Preview 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"}

相关内容