#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
Do more with
{$DeletedUser.memberof -join “;”}
{($DeletedUser.memberof | % { (Get-ADGroup $_).Name; }) -join ';'}
$obj | Add-Member -MemberType NoteProperty -Name "Member Of" -Value ($DeletedUser.memberof -join ";")
Get-ADUser -searchbase $SearchBase -filter {(lastlogondate -notlike "*" -OR lastlogondate -le $90days) -AND (passwordlastset -le $90days) -AND (enabled -eq $False) -AND (whencreated -le $90days)} -Properties Name,samAccountName,DistinguishedName,MemberOf |
Select Name,samAccountName,DistinguishedName,
@{n="Member Of";e={$_.memberof -join ";"}},
@{n="Status";e={"Deleted"}} |
Export-Csv "C:\Temp\User_Report_$logDate.csv" -NoTypeInformation
Notice I also replaced the -properties * of the Get-ADUser command to retrieve only the attributes you want.
Premium Content
You need an Expert Office subscription to comment.Start Free Trial