@BenH和@TheMadTechnician非常有助於協助我使用腳本,以便從特定AD OU中的用戶刪除發佈列表(僅限於)。我忘了添加所需的標準,因此決定張貼此作爲一個單獨的問題(原來的線程here)針對兩個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 $_
}
}
我的問題 - 我可以迫使腳本只需要對已超過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
更改爲-lt
才能獲得正確的日期範圍?
感謝您的期待!
你的問題是「我寫過這段代碼,它工作嗎?」?那麼......它工作嗎?它能讓你獲得你期望的賬戶嗎? – TessellatingHeckler
你會想要'-lt'。下面是一個應該說明的比較聲明:'(Get-Date).AddDays(-30)-gt(Get-Date).AddDays(-40)'是'$ True'。您可以將'-WhatIf'添加到您的'Remove-ADPrincipalGroupMembership'中,以查看該命令將嘗試執行的內容。 – BenH
@TessellatingHeckler - 堅實的點,對不起,我不是更清楚。經過審查,我的問題不是很好。 第一個循環不會收集正確的用戶;檢查變量'$ Users'的內容,AccountExpirationDate顯示空白。我將該行更改爲: 'Get-ADUser -Filter * -Properties AccountExpirationDate -SearchBase $ OU' 現在我看到在AD帳戶中列出的Exp Date,但使用'-lt'返回所有用戶或AD中沒有過期日期,並且'-gt'不返回任何用戶。 – 3Jake