findduplicateobjects.ps1
<#PSScriptInfo
.VERSION 1.0 .GUID 121c06a0-3a45-4b7d-8186-108f849c5d64 .AUTHOR Vikas Sukhija .COMPANYNAME TechWizard.cloud .COPYRIGHT Vikas Sukhija .TAGS .LICENSEURI https://techwizard.cloud/ .PROJECTURI https://techwizard.cloud/ .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES https://techwizard.cloud/ .PRIVATEDATA =========================================================================== Created with: ISE Created on: 10/26/2023 1:46 PM Created by: Vikas Sukhija Organization: Filename: findduplicateobjects.ps1 =========================================================================== #> <# .DESCRIPTION This will run on AD and find any duplicate objects that are created #> param() #################logs and variables######################################### $log = Write-Log -Name "findduplicateobjects" -folder "logs" -Ext "log" $Report1 = Write-Log -Name "Report-findduplicateobjects-Users" -folder "Report" -Ext "csv" $Report2 = Write-Log -Name "Report-findduplicateobjects-Groups" -folder "Report" -Ext "csv" $smtpserver = "smtpserver" $erroremail = "Reports@labtest.com" $email1 = "Alertmail1@labtest.com","Alertmail1@labtest.com" $from = "DoNotReply@labtest.com" $logrecyclelimit = "60" $ObjFilter1 = "(&(objectClass=user)(objectCategory=person))" $ObjFilter2 = "(&(objectClass=group)(objectCategory=group))" ######################################################### Write-Log -Message "Start ......... Script" -path $log try { Write-Log -Message "Find Duplicate Users" -path $log $data = Get-ADUser -LDAPFilter $ObjFilter1 -Properties whenCreated | Select DistinguishedName, SamAccountName, Enabled,whenCreated $findsduplicateusers = $data.Where{$_.SamAccountName -like "*DUPLICATE*"} Write-Log -Message "Found Duplicate Users - $($findsduplicateusers.SamAccountName.count)" -path $log if($findsduplicateusers.SamAccountName.count -gt 0){ $findsduplicateusers | Select DistinguishedName, SamAccountName, Enabled,whenCreated | Export-Csv $Report1 -NoTypeInformation Send-MailMessage -SmtpServer $smtpserver -From $from -To $erroremail -Subject "Error - findduplicateobjects - Users" -Attachments $Report1 } $data = $null Write-Log -Message "Find Duplicate Groups" -path $log $data = Get-ADGroup -LDAPFilter $ObjFilter2 -Properties whenCreated |Select DistinguishedName, SamAccountName,whenCreated $findsduplicategroups = $data.Where{$_.SamAccountName -like "*DUPLICATE*"} Write-Log -Message "Found Duplicate Groups - $($findsduplicategroups.SamAccountName.count)" -path $log if($findsduplicategroups.SamAccountName.count -gt 0){ $findsduplicategroups | Select DistinguishedName, SamAccountName,whenCreated | Export-Csv $Report2 -NoTypeInformation Send-MailMessage -SmtpServer $smtpserver -From $from -To $email1 -bcc $erroremail -Subject "Error - findduplicateobjects - Groups" -Attachments $Report2 } } catch { $exception = $_.Exception.Message Write-Log -Message "exception $exception has occured" -path $log -Severity Error Send-MailMessage -SmtpServer $smtpserver -From $from -To $erroremail -Subject "Error - findduplicateobjects" -Body $($_.Exception.Message) } #########################Recycle logs########################### Set-Recyclelogs -foldername "logs" -limit $logrecyclelimit -Confirm:$false Set-Recyclelogs -foldername "Report" -limit $logrecyclelimit -Confirm:$false Write-Log -Message "Finished..........processing" -path $log Send-MailMessage -SmtpServer $smtpserver -From $from -To $erroremail -Subject "Log - findduplicateobjects" -Body "Log - findduplicateobjects" -Attachments $log ################################################################# |