Hallo Tweakers,
We willen onze ©ActiveDirectory opschonen en daarbij willen alle accounts die langer als een jaar niet hebben ingelogd verplaatsen naar een tijdelijk OU. Daarna sturen we een lijst hiervan naar HR om te kijken of er nog accounts tussen staan die niet mogen worden verwijderd.
Echter is de "LastLogonTimeStamp" niet genoeg om waterdichte check te doen omdat deze tussen de DCs eens in de 14 dagen wordt gesynchroniseerd. (4 DCs)
Daarom willen we eigenlijk ook naast de "LastLogonTimeStamp" via get-QADuser (In AD) ook controleren wat de "LastLognTime" op de mailbox is via get-mailboxstatistics (In Exchange).
Specefieke regel:
Ik heb het op deze manier geprobeerd maar dit is niet de goede manier
Heb verschillende fora doorzocht en verschillende andere manieren toegepast maar krijg het maar niet voor elkaar om deze functie te gebruiken in Get-QADuser 
BScript:
Daarna wordt vervolgens een andere powershell script gestart dat alle accounts in de OU: ToDelete verwerkt.
Maibloxen exporteren, homedir en tsprofile mappen verplaatsen en uiteindelijk verwijderen etc.
We willen onze ©ActiveDirectory opschonen en daarbij willen alle accounts die langer als een jaar niet hebben ingelogd verplaatsen naar een tijdelijk OU. Daarna sturen we een lijst hiervan naar HR om te kijken of er nog accounts tussen staan die niet mogen worden verwijderd.
Echter is de "LastLogonTimeStamp" niet genoeg om waterdichte check te doen omdat deze tussen de DCs eens in de 14 dagen wordt gesynchroniseerd. (4 DCs)
Daarom willen we eigenlijk ook naast de "LastLogonTimeStamp" via get-QADuser (In AD) ook controleren wat de "LastLognTime" op de mailbox is via get-mailboxstatistics (In Exchange).
Specefieke regel:
code:
1
| $accounts = Get-QadUser -LdapFilter "((objectCategory=person)(sn=*))" -SearchRoot $ou -SizeLimit $sizeLimit | Where-Object { $_.LastLogontimestamp -ne $null -and $_.LastLogontimestamp -le $date -and (Get-2003MailboxStatistics -server servername -Identity $_.SAMaccountName).LastLogonTime -le $date} |
Ik heb het op deze manier geprobeerd maar dit is niet de goede manier
BScript:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| Set-PSDebug -Strict
# Add-PSSnapin Quest.ActiveRoles.ADManagement
. D:\powershell_scripts\Danny\Get-MailboxStatistics.ps1
$year = "2012"
$month = "5"
$day = "1"
$sizeLimit = "0"
$OUs = "OU=office,OU=Useraccounts,DC=domain,DC=lan","OU=sales,OU=Useraccounts,DC=domain,DC=lan"
$OUToDelete = "OU=ToDelete,OU=Useraccounts,DC=domain,DC=lan"
$date = New-Object System.DateTime -ArgumentList @($year,$month,$day,0,0,0)
$ExpirationDate = New-Object System.DateTime -ArgumentList @(2000,01,01,0,0,0)
$epoch = New-Object System.DateTime -ArgumentList @(1601,01,01,0,0,0)
foreach($ou in $OUs){
$accounts = Get-QadUser -LdapFilter "((objectCategory=person)(sn=*))" -SearchRoot $ou -SizeLimit $sizeLimit | Where-Object { $_.LastLogontimestamp -ne $null -and $_.LastLogontimestamp -le $date -and (Get-2003MailboxStatistics -server servername -Identity $_.SAMaccountName).LastLogonTime -le $date}
foreach ($user in $accounts) {
if ($user -eq $null){
Write-Host ("Geen account(s) gevonden in $ou die aan creteria voldoen!")
break
}
elseif (($user -ne $null) -and (!($user.AccountIsDisabled))) {
Write-Host ("Gebruiker: " + $user.Name)
Write-Host ("Laatste Logon: " + $user.LastLogonTimestamp)
$description = "Marked for deletion due inactivity +1year on " + (Get-Date).Day + "-" + (Get-Date).Month + "-" + (Get-Date).Year
Set-QADUser -Identity $user -Description $description -AccountExpires $ExpirationDate
Move-QADObject $user -NewParentContainer $OUToDelete
}
elseif (($user -ne $null) -and ($user.AccountIsDisabled)) {
Write-Host ("Gebruiker: " + $user.Name)
Write-Host ("Laatste Logon: " + $user.LastLogonTimestamp)
$description = "Marked for deletion due inactivity +1year on " + (Get-Date).Day + "-" + (Get-Date).Month + "-" + (Get-Date).Year
Enable-QADUser -Identity $user
Set-QADUser -Identity $user -Description $description -AccountExpires $ExpirationDate
Move-QADObject $user -NewParentContainer $OUToDelete
}
}
}
Get-QADUser -SearchRoot $OUToDelete -includeallproperties | Select displayname, samaccountname, employeeID, lastlogontimestamp | Export-csv c:\UsersToDelete.csv -NoTypeInformation |
Daarna wordt vervolgens een andere powershell script gestart dat alle accounts in de OU: ToDelete verwerkt.
Maibloxen exporteren, homedir en tsprofile mappen verplaatsen en uiteindelijk verwijderen etc.
i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero