Public/UserAccess/Compare-TwoADUsers.ps1
<#PSScriptInfo .VERSION 1.0.1 .GUID d972299f-af10-4c8b-a5fa-1ce80d8892af .AUTHOR Pierre Smit .COMPANYNAME .COPYRIGHT .TAGS AD .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES Created [07/06/2019_03:58] Updated [09/06/2019_09:18] .PRIVATEDATA #> <# .DESCRIPTION Find the diferences in ad groups #> Param() Function Compare-TwoADUsers { PARAM( [Parameter(Mandatory=$true, Position=0, ValueFromPipeline = $true)] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [string]$Username1, [Parameter(Mandatory=$true, Position=1)] [ValidateNotNull()] [ValidateNotNullOrEmpty()] [string]$Username2) $ValidUser1 = Get-ADUser $Username1 -Properties * | select Name,GivenName,Surname,UserPrincipalName, EmailAddress, EmployeeID, EmployeeNumber, HomeDirectory, Enabled, Created, Modified, LastLogonDate,samaccountname $ValidUser2 = Get-ADUser $Username2 -Properties * | select Name,GivenName,Surname,UserPrincipalName, EmailAddress, EmployeeID, EmployeeNumber, HomeDirectory, Enabled, Created, Modified, LastLogonDate,samaccountname $userDetailList1 = $ValidUser1.psobject.Properties | Select-Object -Property Name, Value $userDetailList2 = $ValidUser2.psobject.Properties | Select-Object -Property Name, Value $user1Headding = $ValidUser1.Name $user2Headding = $ValidUser2.Name $user1HeaddingMissing = $ValidUser1.Name + " Missing" $user2HeaddingMissing = $ValidUser2.Name + " Missing" $allusergroups1 = Get-ADUser $Username1 -Properties * | Select-Object -ExpandProperty memberof | ForEach-Object {Get-ADGroup $_} | select samaccountname $allusergroups2 = Get-ADUser $Username2 -Properties * | Select-Object -ExpandProperty memberof | ForEach-Object {Get-ADGroup $_} | select samaccountname $Compare = Compare-Object -ReferenceObject $allusergroups1 -DifferenceObject $allusergroups2 -Property samaccountname -IncludeEqual $SameGroups = $Compare | where {$_.SideIndicator -eq '=='} | select samaccountname $User1Missing = $Compare | where {$_.SideIndicator -eq '=>'} | select samaccountname $User2Missing = $Compare | where {$_.SideIndicator -eq '<='} | select samaccountname $User1Details = New-Object PSObject -Property @{ ValidUser1 = $ValidUser1 userDetailList1 = $userDetailList1 user1Headding = $user1Headding user1HeaddingMissing = $user1HeaddingMissing allusergroups1 = $allusergroups1 User1Missing = $User1Missing } $User2Details = New-Object PSObject -Property @{ ValidUser2 = $ValidUser2 userDetailList2 = $userDetailList2 user2Headding = $user2Headding user2HeaddingMissing = $user2HeaddingMissing allusergroups2 = $allusergroups2 User2Missing = $User2Missing } $Details = New-Object PSObject -Property @{ User1Details = $User1Details User2Details = $User2Details SameGroups = $SameGroups } $Details } #end Function |