如何用PowerShell替代Quest AD插件,实现OU成员补入安全组?
替代Quest AD Snap-in的PowerShell脚本实现AD安全组成员更新
要替换Quest的AD Snap-in,我们可以使用微软原生的ActiveDirectory模块(Windows Server默认预装,客户端需安装RSAT工具)来实现相同功能。以下是重写后的脚本:
用户组更新脚本
# 导入ActiveDirectory模块(若未加载) Import-Module ActiveDirectory -ErrorAction Stop # 定义目标组和用户OU $targetUserGroup = "Group-A" $userSearchOU = "OU=Users,DC=Test" # 获取目标组的DistinguishedName,用于成员筛选 $userGroupDN = (Get-ADGroup -Identity $targetUserGroup).DistinguishedName # 筛选OU中不在目标组的用户并添加到组 Get-ADUser -SearchBase $userSearchOU -Filter * -Properties MemberOf | Where-Object { $_.MemberOf -notcontains $userGroupDN } | Add-ADGroupMember -Identity $targetUserGroup -ErrorAction SilentlyContinue
计算机组更新脚本
# 定义目标组和计算机OU $targetComputerGroup = "Group-B" $computerSearchOU = "OU=Computers,DC=Test" # 获取目标组的DistinguishedName $computerGroupDN = (Get-ADGroup -Identity $targetComputerGroup).DistinguishedName # 筛选OU中不在目标组的计算机并添加到组 Get-ADComputer -SearchBase $computerSearchOU -Filter * -Properties MemberOf | Where-Object { $_.MemberOf -notcontains $computerGroupDN } | Add-ADGroupMember -Identity $targetComputerGroup -ErrorAction SilentlyContinue
关键说明
- 原生AD模块没有
-NotMemberOf参数,因此通过获取组的DistinguishedName,结合用户/计算机的MemberOf属性进行筛选 - 必须指定
-Properties MemberOf,因为该属性不属于Get-ADUser/Get-ADComputer的默认返回属性 -ErrorAction SilentlyContinue用于忽略“用户/计算机已是组成员”的错误,和原脚本中$null=的作用一致- 运行脚本的账号需要具备AD读取权限和目标组的成员修改权限
内容的提问来源于stack exchange,提问作者a3kop
相关产品推荐
相关产品推荐

