将本地组策略对象应用于自定义用户组

将本地组策略对象应用于自定义用户组

背景

我遇到的问题如下:我有一个独立的 Windows 10 Enterprise 系统(未连接到任何网络/AD),我想使用本地组策略对其进行配置。不同用户组的组策略应该有所不同。(用户组:custom_admin、custom_user1、custom_user2)

问题

到目前为止,我所做的是通过为机器创建本地 GPO gpedit,并通过为“管理员”用户创建 GPO mmc(如图所示这里)。

现在,我还想为 custom_user1 和 custom_user2 用户组配置不同的 GPO,以便创建并分配给这些组的所有用户都受到这些策略的限制。

到目前为止,我还没有找到解决办法,但我想这一定有办法。有什么办法可以实现吗?

编辑:

我尝试使用这个工具LGPO导出和导入策略。这对“管理员”来说很有效,还有一种方法可以将特定策略导入到特定用户。但我似乎找不到为特定本地用户组导入策略的方法。

答案1

使用 PowerShell 方法从获取本地计算机用户和组成员身份检查用户是否是本地成员~帖子中有一些有用的条件 PowerShell 逻辑。

您只需要...

  1. 设置本地组名称,以检查$groups =变量值中的成员身份

    • 将每个值括在双引号中,并用逗号分隔
  2. 设置Switch值与变量中设置的值相匹配$groups,并用双引号括起来

    • 每个值表达逻辑都应该指向相关的 LGPO 导入文件

标准化本地组名称和本地策略导入文件夹结构应该有助于简化逻辑并轻松扩展(或缩小)以满足您的需求。这至少可以处理您需要的逻辑中的琐碎部分,以便您朝着正确的方向前进以获得可行的解决方案。

显然,您应该首先测试这一点并调整逻辑或使用最适合您情况的另一种变体,但这至少应该能够根据您的本地计算机策略需求来处理任务。

PowerShell 脚本

$user = "$env:COMPUTERNAME\$env:USERNAME"
$groups = "User Policy 1","User Policy 2","User Policy 3"

$groups | % { Process {
    If ( (Get-LocalGroupMember $_).Name -contains $user ) {
    $group = $_;

        switch ($group)
        {
    "User Policy 1" 
        {
            ##LGPO.exe /u path\registry.pol
            Start-Process LGPO.exe "/u C:\Policies\User\UserPolicy1\registry.pol"
            break;
        }
    "User Policy 2" 
        {
            Start-Process LGPO.exe "/u C:\Policies\User\UserPolicy2\registry.pol"
            break;
        }
    "User Policy 3" 
        {
            Start-Process LGPO.exe "/u C:\Policies\User\UserPolicy3\registry.pol"
            break;
        }
}     
    }
}};

作为登录脚本运行

由于您正在使用 Windows 10 Enterprise 并且需要它作为登录脚本运行,因此可以轻松设置一个登录脚本,该脚本将为使用本地组策略设置登录到计算机的每个用户运行。

下面我将概述一种通过本地组策略运行登录脚本的方法。但是,我不确定应用的 LGPO 策略是否会影响它,因此请进行测试并查看效果如何。

这可能会有问题重新启动并应用 LGPO 策略后。如果是这样,你可以将登录脚本配置也放入 LGPO 策略定义中。这将有助于确保在 LGPO 应用策略更新后重新应用登录脚本配置。

你应该测试两个都重新启动,以及无需重新启动即可注销和登录,以帮助了解需要做什么。

  1. 运行gpedit.msc 然后通过以下方式进行导航User Configuration|Windows Settings|Scripts| 然后双击Logon。选择PowerShell Scripts标签,然后按“添加“按钮,然后输入登录脚本的完整路径位于Script Name并插入 -ExecutionPolicy BypassScript Parameters场地。

在此处输入图片描述

在此处输入图片描述


支持资源


改造——启动脚本(额外 OP 素材)

OP 确定LGPO.exe无法留在运行它的机器上,因此调整逻辑为:

  1. 检查用户是否属于相应组
  2. 在该文件夹下C:\Windows\System32\GroupPolicyUsers创建一个名称与帐户的 SID 匹配的文件夹
  3. 手动复制Registry.pol到此位置 SID 创建位置

事实证明,配置Logon Script不会以提升的权限运行 PowerShell 脚本。但是,以Startup Script以下权限运行它Computer Configurations/Windows Settings/Script/Startup却没问题。

有一个警告对于每台具有适用策略的计算机新创建的用户配置文件,在创建帐户配置文件后重新启动时,该用户的策略才会生效。

相关内容