希望在这里能得到一点帮助——我环顾了整个网站,但没有看到类似的东西(如果有,请指导我,我错过了)。
我需要在我们的用户离职流程中加入一个新步骤,这会将他们从任何 AD 分发列表中删除。我想将此设置为计划任务,每晚针对两个 OU 运行一次,在其中可以找到未激活的用户帐户。
我想通过将它指向用户而不是发行列表所在的 OU 来运行它,因为我怀疑我们最终也会收到从其他类型的组中删除这些用户的请求。
此代码段将从单个用户中删除 AD 发行列表,但保留所有其他类型的 AD 组:
# GroupCategory 0 = Distro List
# GroupCategory 1 = Security Group
# GroupScope 0 = DomainLocal
# GroupScope 1 = Global
# GroupScope 2 = Universal
$user = "userlogon"
Get-ADPrincipalGroupMembership -Identity $user|
Where {$_.GroupCategory -eq 0} |
ForEach {Remove-ADPrincipalGroupMembership -Identity $user -MemberOf $_ -Confirm:$false}
这个片段将查看一个 OU 并返回一些信息(只是我使用带有 -searchbase 的变量的示例):
$OUs = 'OU=PendingDeletion,OU=Users,DC=Stuff,DC=Place,DC=net','OU=HoldForReview,OU=Users,DC=Stuff,DC=Place,DC=net'
$OU | ForEach {Get-ADGroup -Filter * -Properties ManagedBy -SearchBase $_ } |
Select Name, ManagedBy |
Sort -Property Name
Out-GridView
但是——为了完成我的目标,我会做这样的事情吗?!我在这里有点超出我的深度,感谢任何关于重写的建议:
$OUs = 'OU=PendingDeletion,OU=Users,DC=Stuff,DC=Place,DC=net','OU=HoldForReview,OU=Users,DC=Stuff,DC=Place,DC=net'
$user = "*"
$OUs | ForEach {
Get-ADPrincipalGroupMembership -Identity $user|
Where {$_.GroupCategory -eq 0} |
ForEach {Remove-ADPrincipalGroupMembership -Identity $user -MemberOf $_ -Confirm:$false}
}
在 PoSh 中总是有几种方法可以做一些事情,所以我确信有一种不太复杂的方法可以做同样的事情。如果有人有不同的方法,请随时提出替代方案。
谢谢参观!