@BenH 和 @TheMadTechnician 在帮助我编写脚本以从特定 AD OU 中的用户中(仅)删除发行列表方面非常有帮助。我忘了添加所需的标准,所以决定将其作为一个单独的问题发布(此处为原始线程)
@BenH 的做法是这样的:
$OUs = 'OU=PendingDeletion,OU=Users,DC=Stuff,DC=Place,DC=net','OU=HoldForReview,OU=Users,DC=Stuff,DC=Place,DC=net'
$Users = ForEach ($OU in $OUs) {
Get-ADUser -Filter * -SearchBase $OU
}
ForEach ($User in $Users) {
Get-ADPrincipalGroupMembership -Identity $user |
Where-Object {$_.GroupCategory -eq 0} |
ForEach-Object {
Remove-ADPrincipalGroupMembership -Identity $user -MemberOf $_
}
}
我的问题 - 我可以通过向第一个循环添加变量和“Where-Object”逻辑来强制脚本仅对过期超过 30 天的帐户采取行动吗?
$OUs = 'OU=PendingDeletion,OU=Users,DC=Stuff,DC=Place,DC=net','OU=HoldForReview,OU=Users,DC=Stuff,DC=Place,DC=net'
$30DaysOld = (Get-Date).AddDays(-30)
$Users = ForEach ($OU in $OUs) {
Get-ADUser -Filter * -SearchBase $OU |
Where-Object {$_.AccountExpirationDate -gt $30DaysOld}}
ForEach ($User in $Users) {
Get-ADPrincipalGroupMembership -Identity $user |
Where-Object {$_.GroupCategory -eq 0} |
ForEach-Object {
Remove-ADPrincipalGroupMembership -Identity $user -MemberOf $_
}
}
可能的?还是我需要将 更改-gt
为 a-lt
以获得正确的日期范围?
感谢您的关注!