通过组策略为域加入服务器自动创建Active Directory组的可行性咨询
通过组策略为域加入服务器自动创建Active Directory组的可行性咨询
当然可以实现!不过直接用组策略的原生图形化选项没法一步到位,得结合组策略偏好(Group Policy Preferences, GPP)或者脚本才能搞定,下面给你两种实用的方案,你可以根据自己的需求选:
方案一:用组策略偏好(GPP)自动匹配服务器名创建AD组
这是相对更“原生”的方法,不需要写代码,靠图形化配置就能完成:
- 先创建一个专属的组策略对象(GPO),把它链接到你存放服务器的OU(比如专门的Servers OU),这样只有加入这个OU的服务器才会触发这个规则
- 在域控制器上编辑这个GPO,找到计算机配置 → 偏好 → 控制面板设置 → Active Directory(如果找不到这个选项,记得先安装RSAT工具包)
- 右键点击「Active Directory」,选择「新建 → 组」,在弹出的配置窗口里:
- 「常规」标签页里,组名用系统变量自动匹配服务器名,比如写
%COMPUTERNAME%_LocalAdmins,这样每台服务器加入域后,都会生成以自己计算机名开头的安全组 - 设置好组的作用域(比如全局)和类型(安全组),再指定要存放这个组的OU(建议建一个专门的Server Groups OU来统一管理)
- 切换到「通用」标签页,勾选「创建」选项,确保组不存在时会自动创建
- 「常规」标签页里,组名用系统变量自动匹配服务器名,比如写
- 保存GPO后,新服务器加入域并移到目标OU后,下次刷新组策略(或者重启服务器),就会自动在指定位置生成对应的AD组
方案二:用PowerShell脚本结合组策略启动脚本
如果GPP的配置满足不了你的特殊需求(比如要加更多自定义逻辑),可以用脚本实现:
- 先写一个PowerShell脚本,比如命名为
CreateServerADGroup.ps1,内容大概是这样:
# 获取当前服务器的计算机名 $serverName = $env:COMPUTERNAME # 定义要创建的组名,这里可以自定义后缀 $groupName = "${serverName}_ServerAdmins" # 指定组要存放的OU路径,替换成你自己的域信息 $targetOU = "OU=Server Groups,DC=yourdomain,DC=com" # 检查组是否已经存在,避免重复创建 $existingGroup = Get-ADGroup -Filter {Name -eq $groupName} -ErrorAction SilentlyContinue if (-not $existingGroup) { # 创建新的安全组 New-ADGroup -Name $groupName -SamAccountName $groupName -GroupCategory Security -GroupScope Global -Path $targetOU Write-Host "成功创建AD组:$groupName" }
- 把这个脚本放到域控制器的NETLOGON共享文件夹(或者所有服务器都能访问的共享目录)
- 新建一个GPO并链接到服务器OU,编辑时找到计算机配置 → 脚本(启动/关机) → 启动
- 添加刚才的PowerShell脚本,记得给服务器的计算机账户赋予在目标OU创建AD组的权限(不然脚本会执行失败)
- 新服务器加入域后,第一次启动时就会自动执行脚本,创建对应的组
几个需要注意的点
- 不管用哪种方法,都要确保执行操作的账户(GPP用的是服务器的计算机账户,脚本也是)有在目标OU创建组的权限,你可以在AD的OU权限设置里添加对应账户的「创建组」权限
- 如果需要给自动创建的组添加默认成员,也可以在GPP里继续配置,或者在脚本里加上
Add-ADGroupMember的命令 - 测试的时候可以找一台测试服务器加入域,然后手动运行
gpupdate /force刷新组策略,看看组有没有成功创建
备注:内容来源于stack exchange,提问作者Sushmita Chakraborty
相关产品推荐
相关产品推荐

