策略 CSP - LocalUsersAndGroups

配置

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 2009 [10.0.19042] 及更高版本
./Device/Vendor/MSFT/Policy/Config/LocalUsersAndGroups/Configure

此设置允许管理员管理设备上的本地组。 可能的设置:

  1. 更新组成员身份:通过“U”操作更新组并添加和/或删除成员。 使用“更新”时,策略中未指定的现有组成员保持不变。
  2. 替换组成员身份:通过“R”操作替换组成员身份来限制组。 使用 Replace 时,现有组成员身份将替换为 add member 节中指定的成员列表。 此选项的工作方式与受限组相同,并且删除策略中未指定的任何组成员。

注意

如果同一组同时配置了 Replace 和 Update,则 Replace 将获胜。

注意

RestrictedGroups/ConfigureGroupMembership 策略设置还允许配置成员 (用户或Microsoft Entra组) 到Windows 10本地组。 但是,它只允许将现有组完全替换为新成员,并且不允许选择性添加或删除。

从 Windows 10 版本 20H2 开始,建议使用 LocalUsersAndGroups 策略,而不是 RestrictedGroups 策略。 不支持将这两个策略应用于同一设备,并且可能会产生不可预知的结果。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 添加、删除、获取、替换

允许的值:


展开以查看架构 XML
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
  <xs:simpleType name="name">
    <xs:restriction base="xs:string">
      <xs:maxLength value="255" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="accessgroup">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="group" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Group Configuration Action</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:attribute name="action" type="name" use="required" />
          </xs:complexType>
        </xs:element>
        <xs:element name="add" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>Group Member to Add</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:attribute name="member" type="name" use="required" />
          </xs:complexType>
        </xs:element>
        <xs:element name="remove" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>Group Member to Remove</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:attribute name="member" type="name" use="required" />
          </xs:complexType>
        </xs:element>
        <xs:element name="property" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>Group property to configure</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:attribute name="desc" type="name" use="required" />
            <xs:attribute name="value" type="name" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="desc" type="name" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:element name="GroupConfiguration">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="accessgroup" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>Local Group Configuration</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

示例

下面是组配置的策略定义 XML 的示例:

<GroupConfiguration>
    <accessgroup desc = "">
        <group action = ""/>
            <add member = ""/>
            <remove member = ""/>
    </accessgroup>
</GroupConfiguration>

其中:

  • <accessgroup desc>:指定要配置的本地组的名称或 SID。 如果指定 SID, 则 LookupAccountSid API 用于将 SID 转换为有效的组名称。 如果指定名称, 则 LookupAccountName API 用于查找组并验证名称。 如果名称/SID 查找失败,将跳过该组,并处理 XML 文件中的下一个组。 如果有多个错误,则会在策略处理结束时返回最后一个错误。

  • <group action>:指定要对本地组执行的操作,该组可以是“更新”和“限制”,由你和 R 表示:

    • 更新。 此操作必须用于保持当前组成员身份不变,以及添加或删除特定组的成员。
    • 限制。 必须使用此操作将当前成员身份替换为新指定的组。 此操作提供的功能与 RestrictedGroups/ConfigureGroupMembership 策略设置相同。
  • <add member>:指定要配置的成员的 SID 或名称。

  • <remove member>:指定要从指定组中删除的成员的 SID 或名称。

    注意

    指定用户帐户的成员名称时,必须使用以下格式 - AzureAD\userUPN。 例如,“AzureAD\user1@contoso.com”或“AzureAD\user2@contoso.co.uk”。 若要添加Microsoft Entra组,需要指定Microsoft Entra组 SID。 此策略不支持Microsoft Entra组名称。 有关详细信息,请参阅 LookupAccountNameA 函数

有关如何创建自定义配置文件的信息,请参阅在 Intune 中使用Windows 10设备的自定义设置

重要提示

  • <add member><remove member> 可以使用Microsoft Entra SID 或用户名。 若要使用此策略添加或删除Microsoft Entra组,必须使用组的 SID。 可以使用用于组的图形 API 获取Microsoft Entra组 SID。 SID 存在于 属性中 securityIdentifier
  • 在 或 <remove member><add member>指定 SID 时,将添加成员 SID,而不尝试解析它们。 因此,在指定 SID 时要非常小心,以确保它是正确的。
  • <remove member> 对于 R (Restrict) 操作无效,如果存在,则将被忽略。
  • XML 中的列表按给定的顺序处理,R 操作除外,R 操作最后处理以确保它们获胜。 它还意味着,如果某个组多次存在并具有不同的添加/删除值,则所有这些组都将按照它们存在的顺序进行处理。

示例 1:Microsoft Entra ID重点。

以下示例使用 SID S-1-5-21-222222222222-333333333-44444444444-500 更新内置管理员组,Microsoft Entra帐户“bob@contoso.com”和 Microsoft Entra Microsoft Entra SID S-1-12-1-1111111111-22222222222-333333333-4444444444 上的Microsoft Entra计算机组。

<GroupConfiguration>
    <accessgroup desc = "S-1-5-21-2222222222-3333333333-4444444444-500">
        <group action = "U" />
        <add member = "AzureAD\bob@contoso.com"/>
        <add member = "S-1-12-1-111111111-22222222222-3333333333-4444444444"/>
    </accessgroup>
</GroupConfiguration>

示例 2:使用Microsoft Entra用户帐户替换/限制内置管理员组。

注意

使用“R”替换选项配置 SID S-1-5-21-22222222222-333333333-4444444444-500 的内置管理员组时,应始终将管理员指定为成员以及任何其他自定义成员。 这是必要的,因为内置管理员必须始终是管理员组的成员。

<GroupConfiguration>
    <accessgroup desc = "S-1-5-21-2222222222-3333333333-4444444444-500">
        <group action = "R" />
        <add member = "AzureAD\bob@contoso.com"/>
        <add member = "Administrator"/>
    </accessgroup>
</GroupConfiguration>

示例 3:在混合加入的计算机上添加和删除组成员的更新操作。

以下示例演示如何使用 SID S-1-5-21-222222222222-3333333-4444444444-500 更新本地 (组) —使用其名称 (Contoso\ITAdmins) 添加 AD 域组作为成员, 按其 SID (S-1-12-1-1111111111-2222222222-33333333-444444444) 添加Microsoft Entra组,并删除本地帐户 (Guest) (如果存在)。

<GroupConfiguration>
    <accessgroup desc = "S-1-5-21-2222222222-3333333333-4444444444-500">
        <group action = "U" />
        <add member = "Contoso\ITAdmins"/>
        <add member = "S-1-12-1-111111111-22222222222-3333333333-4444444444"/>
        <remove member = "Guest"/>
    </accessgroup>
</GroupConfiguration>

注意

将Microsoft Entra组 SID 添加到本地组时,仅针对Windows 10设备上的以下已知组评估Microsoft Entra帐户登录权限:

  • 管理员
  • 用户
  • 来宾
  • Power Users
  • 远程桌面用户
  • 远程管理用户

常见问题

本部分提供有关 LocalUsersAndGroups 策略 CSP 的一些常见问题的解答。

如果意外从管理员组中删除内置管理员 SID,会发生什么情况?

出于安全原因,从内置管理员组中删除内置管理员帐户在 SAM/OS 级别被阻止。 尝试这样做将导致失败,并出现以下错误:

错误代码 符号名称 错误描述 标题
0x55b (十六进制)
1371 (十二月)
ERROR_SPECIAL_ACCOUNT 无法对内置帐户执行此操作。 winerror.h

使用 R (限制) 操作配置内置管理员组时,请在 中 <add member> 指定内置管理员帐户 SID/名称以避免此错误。

是否可以添加已存在的成员?

可以,可以添加已是组成员的成员。 这不会对组进行任何更改,也不会出错。

如果成员不是组成员,是否可以删除该成员?

可以,即使成员不是组成员,也可以删除该成员。 这不会对组进行任何更改,也不会出错。

如何将域组作为成员添加到本地组?

若要将域组添加为本地组的成员,请指定本地组中 <add member> 的域组。 使用完全限定的帐户名 (例如,domain_name\group_name) 而不是独立名称 (例如,group_name) 以获得最佳结果。 有关详细信息,请参阅 LookupAccountNameA 函数

是否可以将多个 LocalUserAndGroups 策略/XML 应用于同一设备?

否,这是不允许的。 尝试这样做将导致Intune冲突。

如果指定不存在的组名称,会发生什么情况?

将跳过无效的组名称或 SID。 将应用策略的有效部分,并在处理结束时返回错误。 此行为符合本地 AD GPP (组策略 首选项) LocalUsersAndGroups 策略。 同样,将跳过无效的成员名称,并在末尾返回错误,以通知并非所有设置都已成功应用。

如果在同一 XML 中指定 R 和 U,会发生什么情况?

如果在同一 XML 中同时指定 R 和 U,则 R (限制) 操作优先于 U (更新) 。 因此,如果一个组在 XML 中出现两次,一次与你一起出现,再次出现在 R 中,则 R 操作获胜。

如何实现 检查客户端设备上应用的策略的结果?

在客户端设备上应用策略后,可以调查事件日志以查看结果:

  1. 打开事件查看器 (eventvwr.exe) 。
  2. 导航到“应用程序和服务日志>”“Microsoft>Windows>DeviceManagement-Enterprise-Diagnostics-Provider>管理员”。
  3. 搜索字符串 LocalUsersAndGroups 以查看相关详细信息。

如何对名称/SID 查找 API 进行故障排除?

排查名称/SID 查找 API 问题:

  1. 通过运行以下命令在客户端设备上启用 lsp.log

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name LspDbgInfoLevel -Value 0x800 -Type dword -Force
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name LspDbgTraceOptions -Value 0x1 -Type dword -Force
    

    将显示 lsp.log 文件 (C:\windows\debug\lsp.log) 。 此日志文件跟踪 SID-Name 解析。

  2. 通过运行以下命令关闭日志记录:

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name LspDbgInfoLevel -Value 0x0 -Type dword -Force
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name LspDbgTraceOptions -Value 0x0 -Type dword -Force
    

策略配置服务提供程序