asked on
#Create the time parameter, 90 days from last logon date
$90Days = (get-date).adddays(-90)
#Create a variable for the date stamp in the log file
$LogDate = get-date -f yyyyMMddhhmm
#Sets the OU to do the base search for all user accounts
$SearchBase = "OU=Contoso, DC=com"
#Create an empty array for the log file
$LogArray = @()
#Use ForEach to loop through all users with logon date older than date set, 90 days. Does clean up and adds to log array.
ForEach ($DeletedUser in (Get-ADUser -searchbase $SearchBase -filter {(lastlogondate -notlike "*" -OR lastlogondate -le $90days) -AND (passwordlastset -le $90days) -AND (enabled -eq $False) -AND (whencreated -le $90days)} -Properties *) )
{
#Create new object for logging
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name “Name” -Value $DeletedUser.name
$obj | Add-Member -MemberType NoteProperty -Name “samAccountName” -Value $DeletedUser.samaccountname
$obj | Add-Member -MemberType NoteProperty -Name “DistinguishedName” -Value $DeletedUser.DistinguishedName
[b]$obj | Add-Member -MemberType NoteProperty -Name "Member Of" -Value @{expression={$DeletedUser.memberof -join “;”}}[/b]
#$obj | Add-Member -MemberType NoteProperty -Name “Home Directory” -Value $DeletedUser.homeDirectory
$obj | Add-Member -MemberType NoteProperty -Name “Status” -Value ‘Deleted’
#Adds object to the log array
$LogArray += $obj
}
#Exports log array to CSV file in the temp directory with a date and time stamp in the file name.
$logArray | Export-Csv “C:\Temp\User_Report_$logDate.csv” -NoTypeInformation