Win Server 2022 AD:PowerShell建GPO将域用户加入Remote Desktop Users组
PowerShell自动化创建GPO实现域用户加入客户端本地Remote Desktop Users组
前置依赖
- 域控制器需安装组策略管理RSAT组件,AD DS角色部署完成后可直接通过
Import-Module GroupPolicy导入所需PowerShell模块 - 执行脚本的账号需具备GPO创建、编辑、链接到目标OU的权限
- 方案适配Windows Server 2022 AD环境,支持所有Windows 7/Server 2008R2及以上版本的域加入客户端
方案1:组策略首选项(GPP)本地组配置(推荐,不覆盖原有组成员)
该方案对应手动配置组策略首选项本地组规则的逻辑,仅向目标本地组追加指定成员,不会清空组内原有账号,适合绝大多数生产场景。
可直接复用以下PowerShell脚本,执行前替换参数区的环境相关值即可:
# -------------------------- 配置参数 按需修改 -------------------------- $gpoName = "GPO-自动追加域用户到本地RDP组" $targetOUDN = "DC=corp,DC=local" # 替换为需要应用GPO的目标OU可分辨名称,填域根DN则对所有域设备生效 $domainNetbiosName = "CORP" # 替换为当前域的NetBIOS名称 $targetDomainUser = "rdp_allow" # 替换为需要加入本地RDP组的域用户名 $localGroupName = "Remote Desktop Users" $localGroupFixedSid = "S-1-5-32-555" # Remote Desktop Users组内置固定SID,无需修改 # ---------------------------------------------------------------------- # 创建空GPO $newGpo = New-GPO -Name $gpoName -Comment "自动部署:追加指定域用户到所有域客户端本地Remote Desktop Users组" # 构造GPP本地组配置XML,规则为更新组配置、追加成员 $gppGroupConfig = @" <?xml version="1.0" encoding="utf-8"?> <Groups clsid="{3125E937-EB16-4b4c-9934-544FC6D24D26}"> <Group clsid="{6D4A79E4-529C-4481-ABD0-F5BD7EA93BA7}" name="$localGroupName" image="2" changed="$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" uid="{$(New-Guid)}" userContext="0" removePolicy="0"> <Properties action="U" newName="" description="" deleteAllUsers="0" deleteAllGroups="0" removeAccounts="0" groupSid="$localGroupFixedSid" groupName="$localGroupName"> <Members> <Member name="$domainNetbiosName\$targetDomainUser" action="ADD" sid="" /> </Members> </Properties> </Group> </Groups> "@ # 写入配置到GPO对应的SYSVOL存储路径 $gpoConfigPath = "\\$env:USERDNSDOMAIN\SYSVOL\$env:USERDNSDOMAIN\Policies\{$($newGpo.Id)}\Machine\Preferences\Groups" if (-not (Test-Path $gpoConfigPath)) { New-Item -Path $gpoConfigPath -ItemType Directory -Force | Out-Null } $gppGroupConfig | Out-File -FilePath (Join-Path $gpoConfigPath "Groups.xml") -Encoding UTF8 -Force # 将GPO链接到目标OU并启用 New-GPLink -Guid $newGpo.Id -Target $targetOUDN -LinkEnabled Yes -Enforced No
配置说明:XML中
action="U"代表更新本地组配置而非重建,action="ADD"代表仅追加指定成员。如需添加多个用户/域组,只需在<Members>节点下新增对应的<Member>条目即可。
方案2:受限组(Restricted Groups)配置
如果需要通过受限组策略实现,注意直接配置本地组的Members节点会强制覆盖组内所有原有成员,易引发权限故障,推荐通过配置域组的「隶属于」规则实现追加效果:提前创建一个专门用于RDP授权的域全局组,将需要授权的用户加入该域组,再通过GPO配置该域组自动加入所有客户端的本地Remote Desktop Users组,不会影响原有组成员。
对应实现脚本如下:
# -------------------------- 配置参数 按需修改 -------------------------- $gpoName = "GPO-受限组配置RDP权限" $targetOUDN = "DC=corp,DC=local" $authDomainGroupDN = "CN=RDP授权用户组,OU=权限组,DC=corp,DC=local" # 提前创建的域授权组 $localRDPGroupSid = "S-1-5-32-555" # ---------------------------------------------------------------------- $newGpo = New-GPO -Name $gpoName # 写入受限组配置 Set-GPRegistryValue -Guid $newGpo.Id -Key "HKLM\Software\Policies\Microsoft\Windows\RestrictedGroups" -ValueName "RestrictedGroups" -Type String -Value ( @" <RestrictedGroups> <RestrictedGroup name="$authDomainGroupDN" sid=""> <MemberOf> <Group sid="$localRDPGroupSid" name="Remote Desktop Users"/> </MemberOf> </RestrictedGroup> </RestrictedGroups> "@ ) New-GPLink -Guid $newGpo.Id -Target $targetOUDN -LinkEnabled Yes
配置验证
- GPO部署完成后,在客户端执行
gpupdate /force强制刷新组策略 - 客户端执行
net localgroup "Remote Desktop Users"查看成员列表,确认目标域用户已存在 - 域控端可通过
Get-GPResultantSetOfPolicy命令远程校验客户端策略应用状态
内容的提问来源于stack exchange,提问作者Victor Camargo
相关产品推荐
相关产品推荐

