Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Use Get-MailboxStatistics in Get-QADuser

Pagina: 1
Acties:

  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
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:
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 8)7 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:
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


  • Morphogenesis
  • Registratie: Juni 2009
  • Laatst online: 17-11 07:40
Je kan toch de 'LastLogonTimeStamp' op elke DC opvragen en daarvan de meest recente gebruiken?

  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
Morphogenesis schreef op zondag 21 april 2013 @ 00:22:
Je kan toch de 'LastLogonTimeStamp' op elke DC opvragen en daarvan de meest recente gebruiken?
Dat is een optie, hoopte het eigenlijk ook op deze manier te kunnen oplossen.
Als het niet lukt, dan ga ik voor die optie!

In ieder geval bedankt voor je reactie :)

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