You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:20:24